mirror of https://github.com/A2osX/A2osX.git
ProDOS 203 / FX:TC mod for year 2022-2026
FORMAT: new switches & checks SH:BREAK in FOR and WHILE ASM / S-C MASM: new directives, CString support and .HX LC / UC:bugfix DHGR.DRV:bugfix LIBGUI:wip CC:wip
This commit is contained in:
parent
8bd9dbd4e0
commit
9a7d20a7e1
|
@ -44,6 +44,7 @@ Table-driven, add your favorite CPU creating a new CPU asm.xxxx file.
|
||||||
| .EQ | EQuate | S-C, A2osX | Working | | |
|
| .EQ | EQuate | S-C, A2osX | Working | | |
|
||||||
| .FIN | conditional end| S-C, A2osX | Working | | |
|
| .FIN | conditional end| S-C, A2osX | Working | | |
|
||||||
| .HS | Hex String storage | S-C, A2osX | Working | `HS FE1A78` delimiter allowed : `HS 00.11,22` | |
|
| .HS | Hex String storage | S-C, A2osX | Working | `HS FE1A78` delimiter allowed : `HS 00.11,22` | |
|
||||||
|
| .HX | Hex Nibble storage | S-C, A2osX | Working | `HX EFA187` delimiter allowed : `HS 00.11,22` | |
|
||||||
| .IN,.INB,.INBx | INline source | S-C, A2osX | Working | `.INB MYFILE` | `.IN` inlines full text, `.INB` inlines 1 block at a time during assembly |
|
| .IN,.INB,.INBx | INline source | S-C, A2osX | Working | `.INB MYFILE` | `.IN` inlines full text, `.INB` inlines 1 block at a time during assembly |
|
||||||
| .LI,.LIST | | S-C, A2osX | Working | `.LIST ON/OFF CON/COFF MON/MOFF XON/XOFF` | |
|
| .LI,.LIST | | S-C, A2osX | Working | `.LIST ON/OFF CON/COFF MON/MOFF XON/XOFF` | |
|
||||||
| .MA | MAcro deffinition | S-C, A2osX | Working | `.MA >MYMACRO` | |
|
| .MA | MAcro deffinition | S-C, A2osX | Working | `.MA >MYMACRO` | |
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -24,7 +24,7 @@
|
||||||
<Keywords name="Folders in comment, open"></Keywords>
|
<Keywords name="Folders in comment, open"></Keywords>
|
||||||
<Keywords name="Folders in comment, middle"></Keywords>
|
<Keywords name="Folders in comment, middle"></Keywords>
|
||||||
<Keywords name="Folders in comment, close"></Keywords>
|
<Keywords name="Folders in comment, close"></Keywords>
|
||||||
<Keywords name="Keywords1">.BS
.DA
.AS
.AT
.AZ
.EQ
.MA
.EM
.OR
.TF
.LIST
.HS
.IN
.INB
.OP
.TA
.EM
.PH
.EP
.DUMMY
.ED
.CS
.CZ
.PS</Keywords>
|
<Keywords name="Keywords1">.BS
.DA
.AS
.AT
.AZ
.EQ
.MA
.EM
.OR
.TF
.LIST
.HS
.IN
.INB
.OP
.TA
.EM
.PH
.EP
.DUMMY
.ED
.CS
.CZ
.PS
.HX</Keywords>
|
||||||
<Keywords name="Keywords2">adc
and
asl
bit
brk
clc
cld
cli
clv
cmp
cpx
cpy
dec
dex
dey
eor
inc
inx
iny
lda
ldx
ldy
lsr
nop
ora
rmb
rol
ror
rti
rts
sbc
sec
sed
sei
smb
sta
stp
stx
sty
stz
tax
tay
trb
tsb
tsx
txa
txs
tya
wai</Keywords>
|
<Keywords name="Keywords2">adc
and
asl
bit
brk
clc
cld
cli
clv
cmp
cpx
cpy
dec
dex
dey
eor
inc
inx
iny
lda
ldx
ldy
lsr
nop
ora
rmb
rol
ror
rti
rts
sbc
sec
sed
sei
smb
sta
stp
stx
sty
stz
tax
tay
trb
tsb
tsx
txa
txs
tya
wai</Keywords>
|
||||||
<Keywords name="Keywords3">$
%
/
#
&
^</Keywords>
|
<Keywords name="Keywords3">$
%
/
#
&
^</Keywords>
|
||||||
<Keywords name="Keywords4">.1
.2
.3
.4
.5
.6
.7
.8
.9
</Keywords>
|
<Keywords name="Keywords4">.1
.2
.3
.4
.5
.6
.7
.8
.9
</Keywords>
|
||||||
|
|
|
@ -478,7 +478,13 @@ DIR.FI >LDA.G ASM.DO.StackPtr
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*---------------------------------------
|
*---------------------------------------
|
||||||
DIR.HS jsr SRC.GetNextCharNB
|
DIR.HS clc
|
||||||
|
.HS B0 BCS
|
||||||
|
|
||||||
|
DIR.HX sec
|
||||||
|
ror DIR.Word
|
||||||
|
|
||||||
|
jsr SRC.GetNextCharNB
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr SRC.IsDigit16
|
jsr SRC.IsDigit16
|
||||||
|
@ -503,18 +509,24 @@ DIR.HS jsr SRC.GetNextCharNB
|
||||||
jsr OUT.EmitByte
|
jsr OUT.EmitByte
|
||||||
bcc .5
|
bcc .5
|
||||||
rts
|
rts
|
||||||
|
*---------------------------------------
|
||||||
|
.3 bit DIR.Word
|
||||||
|
bmi .30
|
||||||
|
|
||||||
|
asl DIR.Byte
|
||||||
|
asl DIR.Byte
|
||||||
|
asl DIR.Byte
|
||||||
|
asl DIR.Byte
|
||||||
|
|
||||||
|
bra .4
|
||||||
|
|
||||||
|
.30 asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
|
||||||
.3 pha
|
.4 ora DIR.Byte
|
||||||
lda DIR.Byte
|
jsr OUT.EmitByte
|
||||||
asl
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
sta DIR.Byte
|
|
||||||
pla
|
|
||||||
ora DIR.Byte
|
|
||||||
|
|
||||||
.4 jsr OUT.EmitByte
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr SRC.GetNextChar
|
jsr SRC.GetNextChar
|
||||||
|
|
|
@ -172,6 +172,7 @@ DIR.EL.ID .EQ *-J.DIRECTIVES
|
||||||
DIR.FI.ID .EQ *-J.DIRECTIVES
|
DIR.FI.ID .EQ *-J.DIRECTIVES
|
||||||
.DA DIR.FI
|
.DA DIR.FI
|
||||||
.DA DIR.HS
|
.DA DIR.HS
|
||||||
|
.DA DIR.HX
|
||||||
.DA DIR.IN
|
.DA DIR.IN
|
||||||
.DA DIR.IN
|
.DA DIR.IN
|
||||||
.DA DIR.IN
|
.DA DIR.IN
|
||||||
|
@ -488,6 +489,7 @@ T.DIRECTIVES .PS "AC"
|
||||||
.PS "EQ"
|
.PS "EQ"
|
||||||
.PS "FIN"
|
.PS "FIN"
|
||||||
.PS "HS"
|
.PS "HS"
|
||||||
|
.PS "HX"
|
||||||
.PS "IN"
|
.PS "IN"
|
||||||
.PS "INB"
|
.PS "INB"
|
||||||
.PS "INB1"
|
.PS "INB1"
|
||||||
|
|
|
@ -12,15 +12,13 @@ CODE.Init stz ZPCCConst
|
||||||
>LDYAI 20 char *ARGV[10]
|
>LDYAI 20 char *ARGV[10]
|
||||||
>STYA ZPCCData
|
>STYA ZPCCData
|
||||||
|
|
||||||
lda #'_'
|
>STZ.G CC.ScopeID
|
||||||
>STA.G CC.CPSPFX+1
|
iny
|
||||||
|
|
||||||
lda #'A'
|
|
||||||
>STA.G CC.CPSID
|
|
||||||
|
|
||||||
iny CC.CPSID+1
|
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
|
lda #'_'
|
||||||
|
>STA.G CC.Label
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -17,7 +17,9 @@ CORE.Init lda #SL._
|
||||||
>SYSCALL SListNew
|
>SYSCALL SListNew
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STA.G CC.hScopes
|
>STA.G CC.hSyms
|
||||||
|
|
||||||
|
ldy #CC.ScopeIDs
|
||||||
sty ScopeIdx
|
sty ScopeIdx
|
||||||
|
|
||||||
>LDYAI 256
|
>LDYAI 256
|
||||||
|
@ -46,21 +48,11 @@ CORE.Init lda #SL._
|
||||||
CORE.Quit jsr FIO.FClose
|
CORE.Quit jsr FIO.FClose
|
||||||
bne CORE.Quit
|
bne CORE.Quit
|
||||||
|
|
||||||
ldy ScopeIdx
|
>LDA.G CC.hSyms
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
.10 lda (pData),y
|
|
||||||
|
|
||||||
>SYSCALL SListFree
|
>SYSCALL SListFree
|
||||||
|
|
||||||
ldy ScopeIdx
|
|
||||||
cpy #CC.hScopes
|
|
||||||
beq .1
|
|
||||||
|
|
||||||
dec ScopeIdx
|
|
||||||
dey
|
|
||||||
bra .10
|
|
||||||
|
|
||||||
.1 >LDA.G CC.hTags
|
.1 >LDA.G CC.hTags
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
|
|
|
@ -105,15 +105,12 @@ DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
|
||||||
bcs .98
|
bcs .98
|
||||||
|
|
||||||
cmp #';'
|
cmp #';'
|
||||||
beq .28
|
beq .8
|
||||||
|
|
||||||
cmp #'{'
|
cmp #'{'
|
||||||
bne .26
|
bne .26
|
||||||
|
|
||||||
jsr CORE.GetNCharNB skip '{'
|
jmp CORE.GetNCharNBNL Skip '{'
|
||||||
bcs .98
|
|
||||||
|
|
||||||
jmp SYM.StoreF
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Initializer
|
* Initializer
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -141,7 +138,7 @@ DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
|
||||||
cmp #';'
|
cmp #';'
|
||||||
bne .98
|
bne .98
|
||||||
|
|
||||||
clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.98 lda #E.CSYN
|
.98 lda #E.CSYN
|
||||||
|
|
|
@ -1,19 +1,37 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
F.Decl stz LocalPtr
|
F.Decl ldy #SYM.Q
|
||||||
|
lda (ZPSymBufPtr),y
|
||||||
|
ora #SYM.Q.FUNC
|
||||||
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
|
and #$FC
|
||||||
|
sta ZPPtr2+1
|
||||||
|
|
||||||
jsr CC.PushTQ push T/Q for RETURN
|
lda (ZPSymBufPtr) #SYM.T
|
||||||
|
sta ZPPtr2 T/Q for _RETURN_
|
||||||
|
|
||||||
|
stz LocalPtr
|
||||||
|
|
||||||
|
jsr SYM.Store Store this f() with no prototype...
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
ldx #$80 CPStmt.fDef state
|
jsr SCOPE.New
|
||||||
jsr STMT.CPStmt.NEW
|
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr SYM.NewScope
|
lda ZPPtr2+1 #SYM.Q
|
||||||
|
and #$F0
|
||||||
|
bne .10
|
||||||
|
|
||||||
|
lda ZPPtr2 #SYM.T
|
||||||
|
cmp #SYM.T.VOID
|
||||||
|
beq .11
|
||||||
|
|
||||||
|
.10 jsr F.AddReturnVar
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CORE.GetNCharNBNL Skip (
|
.11 jsr CORE.GetNCharNBNL Skip (
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
cmp #')' func()
|
cmp #')' func()
|
||||||
|
@ -61,12 +79,10 @@ F.Decl stz LocalPtr
|
||||||
cmp #';'
|
cmp #';'
|
||||||
bne .7
|
bne .7
|
||||||
|
|
||||||
jsr SYM.FreeScope discard local scope
|
jsr SYM.Update
|
||||||
|
bcs .99
|
||||||
|
|
||||||
lda CStackPtr
|
jsr SCOPE.Close discard local scope
|
||||||
clc
|
|
||||||
adc #CPS
|
|
||||||
sta CStackPtr discard this CPStmt + T/Q
|
|
||||||
|
|
||||||
stz LocalPtr reset for DEBUG Message
|
stz LocalPtr reset for DEBUG Message
|
||||||
|
|
||||||
|
@ -75,8 +91,8 @@ F.Decl stz LocalPtr
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.7 cmp #'{'
|
.7 cmp #'{'
|
||||||
bne .9
|
bne .9
|
||||||
|
*--------------------------------------
|
||||||
bit bInitCode
|
F.Def bit bInitCode
|
||||||
bmi .8
|
bmi .8
|
||||||
|
|
||||||
dec bInitCode
|
dec bInitCode
|
||||||
|
@ -89,12 +105,17 @@ F.Decl stz LocalPtr
|
||||||
.8 >LDYA ZPCCCode f() Code starts HERE
|
.8 >LDYA ZPCCCode f() Code starts HERE
|
||||||
jsr SYM.SetAddrYA
|
jsr SYM.SetAddrYA
|
||||||
|
|
||||||
|
jsr SYM.Update
|
||||||
|
bcs .99
|
||||||
|
|
||||||
lda LocalPtr
|
lda LocalPtr
|
||||||
jsr CODE.LDAI A = f() ARGS size
|
jsr CODE.LDAI A = f() ARGS size
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>LDYA L.PCC.ENTER
|
>LDYA L.PCC.ENTER
|
||||||
jmp CODE.EmitPCC Store f() Declaration / Start Definition
|
jmp CODE.EmitPCC Store f() Declaration / Start Definition
|
||||||
|
|
||||||
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
F.DeclGetTQ lda (ZPLineBufPtr)
|
F.DeclGetTQ lda (ZPLineBufPtr)
|
||||||
cmp #'.'
|
cmp #'.'
|
||||||
|
@ -142,6 +163,23 @@ F.DeclGetTQ lda (ZPLineBufPtr)
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
F.AddReturnVar ldx ZPLineBufPtr
|
||||||
|
phx
|
||||||
|
ldx ZPLineBufPtr+1
|
||||||
|
phx
|
||||||
|
|
||||||
|
>LDYA L.CC._RETURN_
|
||||||
|
>STYA ZPLineBufPtr
|
||||||
|
|
||||||
|
jsr F.NewArg
|
||||||
|
|
||||||
|
plx
|
||||||
|
stx ZPLineBufPtr+1
|
||||||
|
plx
|
||||||
|
stx ZPLineBufPtr
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
F.NewArg >LDYA.G CC.SymID
|
F.NewArg >LDYA.G CC.SymID
|
||||||
>STYA.G CC.SymIDSave
|
>STYA.G CC.SymIDSave
|
||||||
|
|
||||||
|
@ -151,10 +189,11 @@ F.NewArg >LDYA.G CC.SymID
|
||||||
>LDYA ZPPtr2
|
>LDYA ZPPtr2
|
||||||
ldx #SYM.SC.AUTO
|
ldx #SYM.SC.AUTO
|
||||||
sec Reset Buffer
|
sec Reset Buffer
|
||||||
|
* >DEBUG
|
||||||
jsr SYM.New
|
jsr SYM.New
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr SYM.StoreL Store f() Args in Local scope
|
jsr SYM.Store
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDA.G CC.hSymBuf
|
>LDA.G CC.hSymBuf
|
||||||
|
@ -170,10 +209,10 @@ F.Def.END >LDYA L.PCC.LEAVE
|
||||||
jsr CODE.EmitPCC
|
jsr CODE.EmitPCC
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr SYM.FreeScope
|
jsr SCOPE.Close
|
||||||
|
|
||||||
stz LocalPtr back to global
|
stz LocalPtr back to global
|
||||||
|
>DEBUG
|
||||||
clv pop context
|
clv pop context
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
|
@ -21,7 +21,7 @@ KW.IF jsr STMT.NewCPS00
|
||||||
jsr KW.TestZero Y,A=T/Q
|
jsr KW.TestZero Y,A=T/Q
|
||||||
|
|
||||||
lda #'E'
|
lda #'E'
|
||||||
jsr SYM.LookupA
|
jsr SYM.LookupLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C emit JMP else
|
lda #$4C emit JMP else
|
||||||
|
@ -51,14 +51,14 @@ KW.IF.END jsr CORE.GetCharNBNL
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
.1 lda #'E' define ELSE Label
|
.1 lda #'E' define ELSE Label
|
||||||
jsr STMT.NewLabelA
|
jsr SYM.NewLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
clv pop context
|
clv pop context
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.2 lda #'X'
|
.2 lda #'X'
|
||||||
jsr SYM.LookupA
|
jsr SYM.LookupLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C emit JMP exit
|
lda #$4C emit JMP exit
|
||||||
|
@ -66,7 +66,7 @@ KW.IF.END jsr CORE.GetCharNBNL
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'E' define ELSE Label
|
lda #'E' define ELSE Label
|
||||||
jsr STMT.NewLabelA
|
jsr SYM.NewLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #KW.ELSE.ID replace IF by ELSE keyword
|
lda #KW.ELSE.ID replace IF by ELSE keyword
|
||||||
|
@ -88,7 +88,7 @@ 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 STMT.NewLabelA
|
jsr SYM.NewLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
clv pop context
|
clv pop context
|
||||||
|
@ -98,7 +98,7 @@ KW.WHILE jsr STMT.NewCPS00
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'C' define CONT Label
|
lda #'C' define CONT Label
|
||||||
jsr SYM.NewA
|
jsr SYM.NewLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -116,7 +116,7 @@ KW.WHILE jsr STMT.NewCPS00
|
||||||
jsr KW.TestZero
|
jsr KW.TestZero
|
||||||
|
|
||||||
lda #'B'
|
lda #'B'
|
||||||
jsr SYM.LookupA
|
jsr SYM.LookupLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C emit JMP break:
|
lda #$4C emit JMP break:
|
||||||
|
@ -140,7 +140,7 @@ KW.WHILE.END >LDYA L.PCC.SLEEP
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'C'
|
lda #'C'
|
||||||
jsr STMT.GetLabelA
|
jsr SYM.LookupLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C
|
lda #$4C
|
||||||
|
@ -148,7 +148,7 @@ KW.WHILE.END >LDYA L.PCC.SLEEP
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'B' define BREAK Label
|
lda #'B' define BREAK Label
|
||||||
jsr STMT.NewLabelA
|
jsr SYM.NewLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
clv pop context
|
clv pop context
|
||||||
|
@ -159,7 +159,7 @@ KW.DO jsr STMT.NewCPS00
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'C' define CONT Label
|
lda #'C' define CONT Label
|
||||||
jsr SYM.NewA
|
jsr SYM.NewLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jmp STMT.SetCPSType
|
jmp STMT.SetCPSType
|
||||||
|
@ -185,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 STMT.GetLabelA
|
jsr SYM.LookupLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C emit JMP cont
|
lda #$4C emit JMP cont
|
||||||
|
@ -193,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 STMT.NewLabelA
|
jsr SYM.NewLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -265,7 +265,7 @@ KW.FOR jsr CC.GetCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
lda #'L' LOOP Label
|
lda #'L' LOOP Label
|
||||||
jsr SYM.NewA
|
jsr SYM.NewLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr EXP.Eval00 get e2
|
jsr EXP.Eval00 get e2
|
||||||
|
@ -275,14 +275,14 @@ KW.FOR jsr CC.GetCharNB
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'B'
|
lda #'B'
|
||||||
jsr SYM.LookupA
|
jsr SYM.LookupLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C emit JMP break:
|
lda #$4C emit JMP break:
|
||||||
jsr CODE.TOABSYX
|
jsr CODE.TOABSYX
|
||||||
|
|
||||||
lda #'S'
|
lda #'S'
|
||||||
jsr SYM.LookupA
|
jsr SYM.LookupLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$20 emit JSR s:
|
lda #$20 emit JSR s:
|
||||||
|
@ -298,7 +298,7 @@ KW.FOR jsr CC.GetCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
lda #'C' CONT Label
|
lda #'C' CONT Label
|
||||||
jsr SYM.NewA
|
jsr SYM.NewLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr STMT.Get get s3
|
jsr STMT.Get get s3
|
||||||
|
@ -313,14 +313,14 @@ KW.FOR jsr CC.GetCharNB
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
lda #'L'
|
lda #'L'
|
||||||
jsr SYM.LookupA
|
jsr SYM.LookupLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C
|
lda #$4C
|
||||||
jsr CODE.TOABSYX emit JMP loop
|
jsr CODE.TOABSYX emit JMP loop
|
||||||
|
|
||||||
lda #'S' S Label
|
lda #'S' S Label
|
||||||
jsr SYM.NewA
|
jsr SYM.NewLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jmp STMT.SetCPSType
|
jmp STMT.SetCPSType
|
||||||
|
@ -335,7 +335,7 @@ KW.FOR.END lda #$60
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'B' define BREAK Label
|
lda #'B' define BREAK Label
|
||||||
jsr STMT.NewLabelA
|
jsr SYM.NewLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
clv pop context
|
clv pop context
|
||||||
|
@ -390,7 +390,7 @@ KW.SWITCH jsr CC.GetCharNB
|
||||||
bne .98
|
bne .98
|
||||||
|
|
||||||
lda #'J'
|
lda #'J'
|
||||||
jsr STMT.LookupLabelA
|
jsr SYM.LookupLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #$4C emit JMP JmpTable
|
lda #$4C emit JMP JmpTable
|
||||||
|
@ -409,7 +409,7 @@ KW.SWITCH jsr CC.GetCharNB
|
||||||
KW.SWITCH.RTS rts
|
KW.SWITCH.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.SWITCH.END lda #'J' define JMP Label
|
KW.SWITCH.END lda #'J' define JMP Label
|
||||||
jsr STMT.NewLabelA
|
jsr SYM.NewLabelA
|
||||||
bcs KW.SWITCH.RTS
|
bcs KW.SWITCH.RTS
|
||||||
|
|
||||||
lda CStackPtr
|
lda CStackPtr
|
||||||
|
@ -470,7 +470,7 @@ KW.SWITCH.END lda #'J' define JMP Label
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'D'
|
lda #'D'
|
||||||
jsr STMT.LookupLabelA
|
jsr SYM.LookupLabelA
|
||||||
bcs .3
|
bcs .3
|
||||||
|
|
||||||
lda #$4C emit JMP Default
|
lda #$4C emit JMP Default
|
||||||
|
@ -478,7 +478,7 @@ KW.SWITCH.END lda #'J' define JMP Label
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
.3 lda #'B' define BREAK Label
|
.3 lda #'B' define BREAK Label
|
||||||
jsr STMT.NewLabelA
|
jsr SYM.NewLabelA
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda CStackPtr
|
lda CStackPtr
|
||||||
|
@ -579,7 +579,7 @@ KW.DEFAULT ldy CStackPtr
|
||||||
jsr CORE.GetNCharNB skip ':'
|
jsr CORE.GetNCharNB skip ':'
|
||||||
|
|
||||||
lda #'D' define DEFAULT Label
|
lda #'D' define DEFAULT Label
|
||||||
jmp STMT.NewLabelA
|
jmp SYM.NewLabelA
|
||||||
|
|
||||||
.9 lda #E.CSYN
|
.9 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
|
@ -587,7 +587,7 @@ KW.DEFAULT ldy CStackPtr
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.BREAK lda #'B'
|
KW.BREAK lda #'B'
|
||||||
|
|
||||||
jsr STMT.LookupLabelA
|
jsr SYM.LookupLabelA
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda #$4C emit JMP break
|
lda #$4C emit JMP break
|
||||||
|
@ -599,7 +599,7 @@ KW.BREAK lda #'B'
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.CONTINUE lda #'C'
|
KW.CONTINUE lda #'C'
|
||||||
|
|
||||||
jsr STMT.LookupLabelA
|
jsr SYM.LookupLabelA
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda #$4C emit JMP cont
|
lda #$4C emit JMP cont
|
||||||
|
@ -609,34 +609,29 @@ KW.CONTINUE lda #'C'
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.RETURN ldy CStackPtr
|
KW.RETURN ldx ZPLineBufPtr
|
||||||
beq .9
|
phx
|
||||||
|
ldx ZPLineBufPtr+1
|
||||||
|
phx
|
||||||
|
|
||||||
.1 lda (ZPCCStack),y CPS.KW
|
>LDYA L.CC._RETURN_
|
||||||
bmi .7 f()
|
>STYA ZPLineBufPtr
|
||||||
|
|
||||||
tya
|
jsr SYM.Lookup
|
||||||
clc
|
|
||||||
adc #CPS skip CPStmt (6 bytes)
|
plx
|
||||||
tay
|
stx ZPLineBufPtr+1
|
||||||
bcc .1
|
plx
|
||||||
|
stx ZPLineBufPtr
|
||||||
.9 lda #E.STACKERROR
|
|
||||||
sec
|
|
||||||
.99 rts
|
|
||||||
|
|
||||||
.7 tya
|
|
||||||
clc
|
|
||||||
adc #CPS.T
|
|
||||||
tay
|
|
||||||
lda (ZPCCStack),y
|
|
||||||
|
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
ldy #SYM.Q
|
||||||
|
lda (ZPLookupSymPtr),y
|
||||||
pha
|
pha
|
||||||
|
lda (ZPLookupSymPtr) SYM.T
|
||||||
iny get CPS.Q
|
tay
|
||||||
lda (ZPCCStack),y
|
pla
|
||||||
|
|
||||||
ply T
|
|
||||||
|
|
||||||
jsr EXP.Eval
|
jsr EXP.Eval
|
||||||
bcs .99
|
bcs .99
|
||||||
|
@ -648,6 +643,8 @@ KW.RETURN ldy CStackPtr
|
||||||
|
|
||||||
>LDYA L.PCC.LEAVE
|
>LDYA L.PCC.LEAVE
|
||||||
jmp CODE.EmitPCC
|
jmp CODE.EmitPCC
|
||||||
|
|
||||||
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
KW.SIZEOF
|
KW.SIZEOF
|
||||||
lda #E.CSYN
|
lda #E.CSYN
|
||||||
|
|
|
@ -8,8 +8,8 @@ CC.Link >LDYA L.MSG.LINKING
|
||||||
lda #1
|
lda #1
|
||||||
|
|
||||||
.1 >STYA ZPPtr1 SymID
|
.1 >STYA ZPPtr1 SymID
|
||||||
|
* >DEBUG
|
||||||
>PUSHB.G CC.hScopes
|
>PUSHB.G CC.hSyms
|
||||||
>PUSHW ZPPtr1 SymID
|
>PUSHW ZPPtr1 SymID
|
||||||
>PUSHW pData
|
>PUSHW pData
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ CC.Link >LDYA L.MSG.LINKING
|
||||||
|
|
||||||
>STYA ZPPtr2 NextID
|
>STYA ZPPtr2 NextID
|
||||||
|
|
||||||
>PUSHB.G CC.hScopes
|
>PUSHB.G CC.hSyms
|
||||||
>PUSHW ZPPtr1 SymID
|
>PUSHW ZPPtr1 SymID
|
||||||
>PUSHW ZPSymBufPtr
|
>PUSHW ZPSymBufPtr
|
||||||
>PUSHWI $ffff All
|
>PUSHWI $ffff All
|
||||||
|
@ -26,16 +26,21 @@ CC.Link >LDYA L.MSG.LINKING
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
ldy #SYM.SC
|
>LDA.G bTrace
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
jsr CC.Link.Dump
|
||||||
|
|
||||||
|
.2 ldy #SYM.SC
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
cmp #SYM.SC.TYPEDEF
|
cmp #SYM.SC.TYPEDEF
|
||||||
bcs .6
|
bcs .7
|
||||||
|
|
||||||
ldy #SYM.Addr+1
|
ldy #SYM.Addr+1
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
dey
|
dey
|
||||||
ora (ZPSymBufPtr),y
|
ora (ZPSymBufPtr),y
|
||||||
bne .6
|
bne .7
|
||||||
|
|
||||||
jsr CC.Link.Lookup
|
jsr CC.Link.Lookup
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -43,20 +48,18 @@ CC.Link >LDYA L.MSG.LINKING
|
||||||
jsr CC.Link.Update
|
jsr CC.Link.Update
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
.6 >LDA.G bTrace
|
|
||||||
bpl .7
|
|
||||||
|
|
||||||
jsr CC.Link.Dump
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
.7 >LDYA ZPPtr2
|
.7 >LDYA ZPPtr2
|
||||||
jmp .1
|
jmp .1
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 jsr CC.Link.Dump
|
.9 >LDA.G bTrace
|
||||||
lda #E.FUNDEF
|
bmi .2
|
||||||
|
|
||||||
|
jsr CC.Link.Dump
|
||||||
|
|
||||||
|
.90 lda #E.FUNDEF
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -156,7 +159,7 @@ CC.Link.Update ldy #SYM.Addr
|
||||||
txa
|
txa
|
||||||
sta (ZPSymBufPtr),y
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
>PUSHB.G CC.hScopes
|
>PUSHB.G CC.hSyms
|
||||||
>PUSHW ZPPtr1 SymID
|
>PUSHW ZPPtr1 SymID
|
||||||
>PUSHW ZPSymBufPtr
|
>PUSHW ZPSymBufPtr
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
|
@ -212,7 +215,7 @@ CC.Link.Dump ldy #$ff
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.Link.CheckMain
|
CC.Link.CheckMain
|
||||||
>PUSHB.G CC.hScopes
|
>PUSHB.G CC.hSyms
|
||||||
>PUSHW L.CC.MAIN
|
>PUSHW L.CC.MAIN
|
||||||
>PUSHWI 0 ScopeID
|
>PUSHWI 0 ScopeID
|
||||||
>SYSCALL SListLookup
|
>SYSCALL SListLookup
|
||||||
|
@ -220,7 +223,7 @@ CC.Link.CheckMain
|
||||||
|
|
||||||
>STYA ZPPtr1 SymID
|
>STYA ZPPtr1 SymID
|
||||||
|
|
||||||
>PUSHB.G CC.hScopes
|
>PUSHB.G CC.hSyms
|
||||||
>PUSHW ZPPtr1 SymID
|
>PUSHW ZPPtr1 SymID
|
||||||
>PUSHW ZPSymBufPtr
|
>PUSHW ZPSymBufPtr
|
||||||
>PUSHWI 65535 all
|
>PUSHWI 65535 all
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
*--------------------------------------
|
||||||
|
SCOPE.New ldy ScopeIdx
|
||||||
|
cpy #CC.ScopeIDs+SCOPE.MAX*2
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
sty ScopeIdx
|
||||||
|
|
||||||
|
>INCW.G CC.ScopeID
|
||||||
|
|
||||||
|
>LDA.G CC.ScopeID
|
||||||
|
|
||||||
|
ldy ScopeIdx
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
>LDA.G CC.ScopeID+1
|
||||||
|
|
||||||
|
ldy ScopeIdx
|
||||||
|
iny
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
dec bLocalScope
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #E.OOH
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
SCOPE.Close ldy ScopeIdx
|
||||||
|
cpy #CC.ScopeIDs
|
||||||
|
beq *
|
||||||
|
|
||||||
|
dey
|
||||||
|
dey
|
||||||
|
sty ScopeIdx
|
||||||
|
|
||||||
|
inc bLocalScope
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
SCOPE.Push ldy ScopeIdx
|
||||||
|
|
||||||
|
SCOPE.PushY iny
|
||||||
|
lda (pData),y
|
||||||
|
>PUSHA
|
||||||
|
dey
|
||||||
|
lda (pData),y
|
||||||
|
>PUSHA
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/bin/cc.s.scope
|
||||||
|
LOAD usr/src/bin/cc.s
|
||||||
|
ASM
|
|
@ -139,15 +139,7 @@ STMT.Stmt.END ldy CStackPtr
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* X = KW.ID
|
* X = KW.ID
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
STMT.CPStmt.NEW >LDA.G CC.CPSID+1
|
STMT.CPStmt.NEW lda LocalPtr Locals
|
||||||
jsr CC.Push
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
>LDA.G CC.CPSID
|
|
||||||
jsr CC.Push
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
lda LocalPtr Locals
|
|
||||||
jsr CC.Push
|
jsr CC.Push
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
|
@ -216,24 +208,7 @@ STMT.NewCPS00 lda #0
|
||||||
jsr CC.Push
|
jsr CC.Push
|
||||||
bcs STMT.NewCPS.RTS
|
bcs STMT.NewCPS.RTS
|
||||||
|
|
||||||
STMT.NewCPS jsr STMT.NewCPSID
|
STMT.NewCPS lda LocalPtr Locals
|
||||||
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
|
jsr CC.Push
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
|
@ -276,121 +251,6 @@ STMT.SetCPSType jsr CORE.GetNCharNBNL
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.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
|
||||||
|
|
240
BIN/CC.S.SYM.txt
240
BIN/CC.S.SYM.txt
|
@ -12,12 +12,9 @@ SYM.New >STYA ZPPtr2 T/Q
|
||||||
bit bPass2
|
bit bPass2
|
||||||
bpl SYM.New.1
|
bpl SYM.New.1
|
||||||
|
|
||||||
bit bLocalScope
|
>PUSHB.G CC.hSyms
|
||||||
bmi SYM.New.1
|
|
||||||
|
|
||||||
>PUSHB.G CC.hScopes Global Scope
|
|
||||||
>PUSHW ZPLineBufPtr
|
>PUSHW ZPLineBufPtr
|
||||||
>PUSHWI 0 ScopeID
|
jsr SCOPE.Push
|
||||||
>SYSCALL SListLookup
|
>SYSCALL SListLookup
|
||||||
bcs SYM.New.9
|
bcs SYM.New.9
|
||||||
|
|
||||||
|
@ -25,7 +22,7 @@ SYM.New >STYA ZPPtr2 T/Q
|
||||||
|
|
||||||
jsr CC.SkipX X = KeyLen
|
jsr CC.SkipX X = KeyLen
|
||||||
|
|
||||||
>PUSHB.G CC.hScopes
|
>PUSHB.G CC.hSyms
|
||||||
>PUSHW.G CC.SymID
|
>PUSHW.G CC.SymID
|
||||||
>PUSHW ZPSymBufPtr
|
>PUSHW ZPSymBufPtr
|
||||||
>PUSHWI 65535 all
|
>PUSHWI 65535 all
|
||||||
|
@ -33,18 +30,22 @@ SYM.New >STYA ZPPtr2 T/Q
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
bcc SYM.New.2
|
bcc SYM.New.2
|
||||||
|
|
||||||
SYM.New.9 rts Y,A = SymSize
|
SYM.New.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYM.New.1 jsr SYM.BufInitYAXC set buf according C
|
SYM.New.1 jsr SYM.BufInitYAXC set buf according C
|
||||||
|
|
||||||
ldy ScopeIdx
|
>PUSHB.G CC.hSyms
|
||||||
lda (pData),y
|
>PUSHW ZPLineBufPtr
|
||||||
jsr SYM.NewKey
|
jsr SCOPE.Push
|
||||||
|
>SYSCALL SListNewKey
|
||||||
bcs SYM.New.9
|
bcs SYM.New.9
|
||||||
|
|
||||||
>STYA.G CC.SymID Y,A = KeyID
|
>STYA.G CC.SymID Y,A = KeyID
|
||||||
|
|
||||||
jsr CC.SkipX X = KeyLen
|
jsr CC.SkipX X = KeyLen
|
||||||
|
.DO DBG_SYM=1
|
||||||
|
jsr SYM.DEBUG0
|
||||||
|
.FIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYM.New.2 jsr CC.GetCharNB
|
SYM.New.2 jsr CC.GetCharNB
|
||||||
bcs .98
|
bcs .98
|
||||||
|
@ -62,11 +63,6 @@ SYM.New.2 jsr CC.GetCharNB
|
||||||
.1 cmp #'('
|
.1 cmp #'('
|
||||||
bne SYM.NewV
|
bne SYM.NewV
|
||||||
|
|
||||||
ldy #SYM.Q
|
|
||||||
lda #SYM.Q.FUNC
|
|
||||||
ora (ZPSymBufPtr),y
|
|
||||||
sta (ZPSymBufPtr),y
|
|
||||||
|
|
||||||
jmp F.Decl
|
jmp F.Decl
|
||||||
|
|
||||||
.98 lda #E.CSYN
|
.98 lda #E.CSYN
|
||||||
|
@ -362,11 +358,7 @@ SYM.NewKey >PUSHA
|
||||||
>PUSHW ZPLineBufPtr
|
>PUSHW ZPLineBufPtr
|
||||||
>PUSHWI 0 ScopeID
|
>PUSHWI 0 ScopeID
|
||||||
>SYSCALL SListNewKey
|
>SYSCALL SListNewKey
|
||||||
bcs .9
|
rts Y,A = KeyID, X = KeyLen
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.9 rts Y,A = KeyID, X = KeyLen
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYM.Add0000 >LDYAI 0
|
SYM.Add0000 >LDYAI 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -461,14 +453,14 @@ SYM.AddByte pha
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYM.NewA bit bPass2
|
SYM.NewLabelA bit bPass2
|
||||||
bmi .8
|
bmi .8
|
||||||
|
|
||||||
>STA.G CC.CPSPFX A = "B"reak, "C"ontinue...
|
>STA.G CC.Label+1 _A = "B"reak, "C"ontinue...
|
||||||
|
|
||||||
>PUSHB.G CC.hScopes Global Scope
|
>PUSHB.G CC.hSyms
|
||||||
>PUSHEA.G CC.CPSPFX
|
>PUSHEA.G CC.Label
|
||||||
>PUSHWI 0 ScopeID
|
jsr SCOPE.Push
|
||||||
>SYSCALL SListNewKey
|
>SYSCALL SListNewKey
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
|
@ -498,104 +490,114 @@ SYM.NewA bit bPass2
|
||||||
|
|
||||||
>LDYA ZPCCCode
|
>LDYA ZPCCCode
|
||||||
jsr SYM.SetAddrYA
|
jsr SYM.SetAddrYA
|
||||||
|
.DO DBG_SYM=1
|
||||||
>LDA.G CC.hScopes Global Scope
|
jsr SYM.DEBUG0
|
||||||
jmp SYM.Store.1
|
.FIN
|
||||||
|
jmp SYM.Store
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYM.StoreF >LDA.G CC.hScopes
|
SYM.Update sec
|
||||||
|
.HS 90 BCC
|
||||||
bit bPass2
|
|
||||||
bpl SYM.Store.1
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYM.Store bit bPass2
|
SYM.Store clc
|
||||||
bpl SYM.StoreL Store Global & Local at Pass 1
|
bit bPass2
|
||||||
|
bmi .8
|
||||||
|
|
||||||
bit bLocalScope Store Local at Pass 2
|
|
||||||
bmi SYM.StoreL
|
|
||||||
|
|
||||||
clc
|
php
|
||||||
rts
|
.DO DBG_SYM=1
|
||||||
|
bcc .10
|
||||||
|
|
||||||
SYM.StoreL ldy ScopeIdx
|
jsr SYM.DEBUG1
|
||||||
lda (pData),y
|
|
||||||
|
|
||||||
SYM.Store.1 >PUSHA
|
bra .11
|
||||||
|
|
||||||
|
.10
|
||||||
|
jsr SYM.DEBUG2
|
||||||
|
|
||||||
|
.11 .FIN
|
||||||
|
>PUSHB.G CC.hSyms
|
||||||
>PUSHW.G CC.SymID
|
>PUSHW.G CC.SymID
|
||||||
>PUSHW ZPSymBufPtr
|
>PUSHW ZPSymBufPtr
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
|
|
||||||
|
ldy #SYM.Q
|
||||||
|
lda (ZPSymBufPtr),y
|
||||||
|
and #SYM.Q.FUNC
|
||||||
|
bne .1
|
||||||
|
|
||||||
ldy #SYM.DefSize
|
ldy #SYM.DefSize
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
>PUSHA
|
bra .2
|
||||||
|
|
||||||
|
.1 lda #SYM.F.MAX
|
||||||
|
|
||||||
|
.2 >PUSHA
|
||||||
|
|
||||||
|
plp
|
||||||
|
bcs .3
|
||||||
|
|
||||||
>SYSCALL SListAddData
|
>SYSCALL SListAddData
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
SYM.NewScope ldy ScopeIdx
|
|
||||||
cpy #CC.hScopes+SCOPE.MAX
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
lda #SL._
|
|
||||||
>SYSCALL SListNew
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
inc ScopeIdx
|
|
||||||
ldy ScopeIdx
|
|
||||||
sta (pData),y
|
|
||||||
|
|
||||||
dec bLocalScope
|
|
||||||
clc
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #E.OOH
|
.3 >SYSCALL SListSetData
|
||||||
sec
|
rts
|
||||||
.99 rts
|
|
||||||
*--------------------------------------
|
|
||||||
SYM.FreeScope ldy ScopeIdx
|
|
||||||
cpy #CC.hScopes
|
|
||||||
beq *
|
|
||||||
|
|
||||||
lda (pData),y
|
|
||||||
>SYSCALL SListFree
|
|
||||||
|
|
||||||
dec ScopeIdx
|
|
||||||
inc bLocalScope
|
|
||||||
|
|
||||||
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYM.Lookup >LDA.G CC.LookupIdx
|
SYM.Lookup >LDA.G CC.LookupIdx
|
||||||
|
|
||||||
cmp #CC.LookupIdx+LOOKUP.MAX
|
cmp #CC.LookupIdx+LOOKUP.MAX
|
||||||
beq .99
|
beq .99
|
||||||
|
|
||||||
>PUSHB ScopeIdx
|
>PUSHB.G CC.hSyms ...for SListGetData
|
||||||
|
|
||||||
.1 tay
|
lda ScopeIdx
|
||||||
lda (pData),y
|
|
||||||
jsr CC.SListLookup
|
.1 pha
|
||||||
|
>PUSHB.G CC.hSyms
|
||||||
|
>PUSHW ZPLineBufPtr
|
||||||
|
ply
|
||||||
|
phy
|
||||||
|
jsr SCOPE.PushY
|
||||||
|
>SYSCALL SListLookup
|
||||||
bcc .8
|
bcc .8
|
||||||
|
|
||||||
lda (pstack)
|
pla
|
||||||
cmp #CC.hScopes
|
cmp #CC.ScopeIDs
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
dec
|
dec
|
||||||
sta (pstack)
|
dec
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.9 inc pStack
|
|
||||||
|
.99 lda #E.OOH
|
||||||
|
* sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 inc pStack discard CC.hSyms
|
||||||
|
|
||||||
lda #E.NOKEY
|
lda #E.NOKEY
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.8 inc pStack
|
.8 >PUSHA KeyID.HI
|
||||||
|
tya
|
||||||
|
>PUSHA KeyID.LO
|
||||||
|
|
||||||
|
pla discard ScopeIdx
|
||||||
|
|
||||||
|
jsr CC.SkipX
|
||||||
|
|
||||||
|
>PUSHWZ allocate
|
||||||
|
>PUSHWI 65535 all
|
||||||
|
>PUSHWZ From Start
|
||||||
|
>SYSCALL SListGetData
|
||||||
|
|
||||||
>STYA.G CC.LookupSymSize
|
>STYA.G CC.LookupSymSize
|
||||||
|
|
||||||
|
@ -610,12 +612,9 @@ SYM.Lookup >LDA.G CC.LookupIdx
|
||||||
|
|
||||||
* clc
|
* clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.99 lda #E.OOH
|
|
||||||
* sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYM.LookupA bit bPass2
|
SYM.LookupLabelA
|
||||||
|
bit bPass2
|
||||||
bmi .1
|
bmi .1
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
@ -623,18 +622,39 @@ SYM.LookupA bit bPass2
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 >STA.G CC.CPSPFX A = "B"reak, "C"ontinue...
|
.1 >STA.G CC.Label+1 A = "B"reak, "C"ontinue...
|
||||||
|
|
||||||
>PUSHB.G CC.hScopes Global Scope
|
>PUSHB.G CC.hSyms ...for SListGetData
|
||||||
>PUSHEA.G CC.CPSPFX
|
|
||||||
>PUSHWI 0 ScopeID
|
lda ScopeIdx
|
||||||
|
|
||||||
|
.2 pha
|
||||||
|
>PUSHB.G CC.hSyms
|
||||||
|
>PUSHEA.G CC.Label
|
||||||
|
ply
|
||||||
|
phy
|
||||||
|
jsr SCOPE.PushY
|
||||||
>SYSCALL SListLookup
|
>SYSCALL SListLookup
|
||||||
bcs .99
|
bcc .8
|
||||||
|
|
||||||
>STYA.G CC.SymID Y,A = KeyID
|
pla
|
||||||
|
cmp #CC.ScopeIDs
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
dec
|
||||||
|
dec
|
||||||
|
bra .2
|
||||||
|
|
||||||
|
.9 inc pStack discard CC.hSyms
|
||||||
|
|
||||||
|
lda #E.NOKEY
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.8 >PUSHA KeyID.HI
|
||||||
|
tya
|
||||||
|
>PUSHA KeyID.LO
|
||||||
|
|
||||||
>PUSHB.G CC.hScopes
|
|
||||||
>PUSHW.G CC.SymID
|
|
||||||
>PUSHW ZPSymBufPtr
|
>PUSHW ZPSymBufPtr
|
||||||
>PUSHWI 65535 all
|
>PUSHWI 65535 all
|
||||||
>PUSHWZ From Start
|
>PUSHWZ From Start
|
||||||
|
@ -850,6 +870,32 @@ SYM.SetAddrYA phy
|
||||||
sta (ZPSymBufPtr),y
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
.DO DBG_SYM=1
|
||||||
|
SYM.DEBUG0 >PUSHW L.MSG.DEBUG.SYM0
|
||||||
|
>PUSHW.G CC.SymID
|
||||||
|
jsr SCOPE.Push
|
||||||
|
lda (ZPSymBufPtr)
|
||||||
|
>PUSHA
|
||||||
|
ldy #1
|
||||||
|
lda (ZPSymBufPtr),y
|
||||||
|
>PUSHA
|
||||||
|
>PUSHBI 6
|
||||||
|
>SYSCALL Printf
|
||||||
|
rts
|
||||||
|
|
||||||
|
SYM.DEBUG1 >PUSHW L.MSG.DEBUG.SYM1
|
||||||
|
>PUSHW.G CC.SymID
|
||||||
|
>PUSHBI 2
|
||||||
|
>SYSCALL Printf
|
||||||
|
rts
|
||||||
|
|
||||||
|
SYM.DEBUG2 >PUSHW L.MSG.DEBUG.SYM2
|
||||||
|
>PUSHW.G CC.SymID
|
||||||
|
>PUSHBI 2
|
||||||
|
>SYSCALL Printf
|
||||||
|
rts
|
||||||
|
.FIN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/bin/cc.s.sym
|
SAVE usr/src/bin/cc.s.sym
|
||||||
|
|
63
BIN/CC.S.txt
63
BIN/CC.S.txt
|
@ -10,6 +10,8 @@ NEW
|
||||||
.INB inc/mli.i
|
.INB inc/mli.i
|
||||||
.INB inc/mli.e.i
|
.INB inc/mli.e.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
DBG_SYM .EQ 0
|
||||||
|
*--------------------------------------
|
||||||
FILES.MAX .EQ 4
|
FILES.MAX .EQ 4
|
||||||
LIBS.MAX .EQ 4
|
LIBS.MAX .EQ 4
|
||||||
SCOPE.MAX .EQ 16
|
SCOPE.MAX .EQ 16
|
||||||
|
@ -46,15 +48,17 @@ SYM.SC.EXTERN .EQ 6
|
||||||
SYM.SC.TYPEDEF .EQ 8
|
SYM.SC.TYPEDEF .EQ 8
|
||||||
SYM.SC.DEFINE .EQ 10
|
SYM.SC.DEFINE .EQ 10
|
||||||
SYM.SC.TAG .EQ 12
|
SYM.SC.TAG .EQ 12
|
||||||
SYM.hSym .EQ 3
|
* .EQ 3
|
||||||
SYM.SizeOf .EQ 4
|
SYM.SizeOf .EQ 4
|
||||||
SYM.Addr .EQ 6
|
SYM.Addr .EQ 6
|
||||||
SYM.BitO .EQ 8
|
SYM.BitO .EQ 8
|
||||||
SYM.BitW .EQ 9
|
SYM.BitW .EQ 9
|
||||||
SYM.DefSize .EQ 10
|
SYM.DefSize .EQ 10
|
||||||
SYM.Def .EQ 11 Funtions : fTQ,a1TQ,a2TQ....
|
*
|
||||||
|
SYM.Def .EQ 12 Funtions : fTQ,a1TQ,a2TQ....
|
||||||
*
|
*
|
||||||
SYM .EQ 14
|
SYM .EQ 14
|
||||||
|
SYM.F.MAX .EQ 64
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SU.F.T .EQ 0
|
SU.F.T .EQ 0
|
||||||
SU.F.Q .EQ 1
|
SU.F.Q .EQ 1
|
||||||
|
@ -63,19 +67,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.hMEM .EQ 5 switch/case
|
||||||
CPS.Ptr .EQ 6
|
CPS.Ptr .EQ 4
|
||||||
|
|
||||||
CPS.Q .EQ 7 f
|
CPS.Q .EQ 5 f
|
||||||
CPS.T .EQ 6
|
CPS.T .EQ 4
|
||||||
|
|
||||||
CPS.CPSID .EQ 4
|
|
||||||
CPS.LOCAL .EQ 3
|
CPS.LOCAL .EQ 3
|
||||||
CPS.STATE .EQ 2
|
CPS.STATE .EQ 2
|
||||||
CPS.TERM .EQ 1
|
CPS.TERM .EQ 1
|
||||||
CPS.KW .EQ 0
|
CPS.KW .EQ 0
|
||||||
*
|
*
|
||||||
CPS .EQ 8
|
CPS .EQ 6
|
||||||
|
*--------------------------------------
|
||||||
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Zero Page Segment, up to 32 bytes
|
* Zero Page Segment, up to 32 bytes
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -141,6 +146,11 @@ L.MSG.LINKING .DA MSG.LINKING
|
||||||
L.MSG.LINKING2 .DA MSG.LINKING2
|
L.MSG.LINKING2 .DA MSG.LINKING2
|
||||||
L.MSG.GENERATING .DA MSG.GENERATING
|
L.MSG.GENERATING .DA MSG.GENERATING
|
||||||
L.MSG.DEBUG .DA MSG.DEBUG
|
L.MSG.DEBUG .DA MSG.DEBUG
|
||||||
|
.DO DBG_SYM=1
|
||||||
|
L.MSG.DEBUG.SYM0 .DA MSG.DEBUG.SYM0
|
||||||
|
L.MSG.DEBUG.SYM1 .DA MSG.DEBUG.SYM1
|
||||||
|
L.MSG.DEBUG.SYM2 .DA MSG.DEBUG.SYM2
|
||||||
|
.FIN
|
||||||
L.MSG.TRACE .DA MSG.TRACE
|
L.MSG.TRACE .DA MSG.TRACE
|
||||||
L.MSG.RTSTK .DA MSG.RTSTK
|
L.MSG.RTSTK .DA MSG.RTSTK
|
||||||
L.MSG.ERROR .DA MSG.ERROR
|
L.MSG.ERROR .DA MSG.ERROR
|
||||||
|
@ -233,6 +243,7 @@ J.CC.STYPES .DA TYPE.SCHAR
|
||||||
.DA TYPE.SLONG
|
.DA TYPE.SLONG
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
L.CC.MAIN .DA CC.MAIN
|
L.CC.MAIN .DA CC.MAIN
|
||||||
|
L.CC._RETURN_ .DA CC._RETURN_
|
||||||
L.CC.SYSCALL .DA CC.SYSCALL
|
L.CC.SYSCALL .DA CC.SYSCALL
|
||||||
L.CC.FPUCALL .DA CC.FPUCALL
|
L.CC.FPUCALL .DA CC.FPUCALL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -364,11 +375,11 @@ CS.RUN.CLOOP jsr CORE.CompileFile
|
||||||
|
|
||||||
cmp #MLI.E.EOF
|
cmp #MLI.E.EOF
|
||||||
bne .9
|
bne .9
|
||||||
|
* bne .1
|
||||||
jsr FIO.FClose
|
jsr FIO.FClose
|
||||||
bne CS.RUN.CLOOP
|
bne CS.RUN.CLOOP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
jsr PrintSummary
|
.1 jsr PrintSummary
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.Link
|
jsr CC.Link
|
||||||
|
@ -570,7 +581,8 @@ PrintDebugMsg >PUSHW L.MSG.DEBUG
|
||||||
|
|
||||||
lda ScopeIdx
|
lda ScopeIdx
|
||||||
sec
|
sec
|
||||||
sbc #CC.hScopes
|
sbc #CC.ScopeIDs
|
||||||
|
lsr
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
>PUSHBI 15
|
>PUSHBI 15
|
||||||
|
@ -637,16 +649,17 @@ PrintSummary >PUSHW L.MSG.SUMMARY
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB usr/src/bin/cc.s.code
|
.INB usr/src/bin/cc.s.code
|
||||||
.INB usr/src/bin/cc.s.core
|
.INB usr/src/bin/cc.s.core
|
||||||
.INB usr/src/bin/cc.s.dir
|
|
||||||
.INB usr/src/bin/cc.s.decl
|
.INB usr/src/bin/cc.s.decl
|
||||||
.INB usr/src/bin/cc.s.stmt
|
.INB usr/src/bin/cc.s.dir
|
||||||
.INB usr/src/bin/cc.s.kw
|
|
||||||
.INB usr/src/bin/cc.s.type
|
|
||||||
.INB usr/src/bin/cc.s.f
|
|
||||||
.INB usr/src/bin/cc.s.exp
|
.INB usr/src/bin/cc.s.exp
|
||||||
.INB usr/src/bin/cc.s.sym
|
.INB usr/src/bin/cc.s.f
|
||||||
.INB usr/src/bin/cc.s.link
|
|
||||||
.INB usr/src/bin/cc.s.fio
|
.INB usr/src/bin/cc.s.fio
|
||||||
|
.INB usr/src/bin/cc.s.kw
|
||||||
|
.INB usr/src/bin/cc.s.link
|
||||||
|
.INB usr/src/bin/cc.s.scope
|
||||||
|
.INB usr/src/bin/cc.s.stmt
|
||||||
|
.INB usr/src/bin/cc.s.sym
|
||||||
|
.INB usr/src/bin/cc.s.type
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -663,6 +676,11 @@ MSG.LINKING2 .CZ "*** %H:%H:%18s T/Q=%h/%h, SC=%h, Def=%h, SizeOf=%H, @=%H\r\n"
|
||||||
MSG.GENERATING .CZ "*** Generating: %s\r\n"
|
MSG.GENERATING .CZ "*** Generating: %s\r\n"
|
||||||
MSG.DEBUG .CS "*** pCode=%H, pConst=%H, pData=%H, pStack=%H\r\n"
|
MSG.DEBUG .CS "*** pCode=%H, pConst=%H, pData=%H, pStack=%H\r\n"
|
||||||
.CZ " LSP=%h, CSP=%H:%h>%h:%h, ScopeIdx=%h\r\n"
|
.CZ " LSP=%h, CSP=%H:%h>%h:%h, ScopeIdx=%h\r\n"
|
||||||
|
.DO DBG_SYM=1
|
||||||
|
MSG.DEBUG.SYM0 .CZ "New SymID=%H[%H],T=%h,Q=%h "
|
||||||
|
MSG.DEBUG.SYM1 .CZ "Upd SymID=%H\r\n"
|
||||||
|
MSG.DEBUG.SYM2 .CZ "Sto SymID=%H\r\n"
|
||||||
|
.FIN
|
||||||
MSG.TRACE .CZ "%5D> %s\r\n"
|
MSG.TRACE .CZ "%5D> %s\r\n"
|
||||||
MSG.RTSTK .CZ "<pBase=%H, pVar=%H, (pVar)=%H, pStack=%H>\r\n"
|
MSG.RTSTK .CZ "<pBase=%H, pVar=%H, (pVar)=%H, pStack=%H>\r\n"
|
||||||
MSG.ERROR .CZ " %s^\r\n"
|
MSG.ERROR .CZ " %s^\r\n"
|
||||||
|
@ -808,6 +826,7 @@ CC.TYPESIGN .HS 0000FF00FF00FFFF
|
||||||
CC.MAIN .AZ "main"
|
CC.MAIN .AZ "main"
|
||||||
CC.MAIN.DEF .DA #SYM.T.SINT,#0,#SYM.T.SINT,#0,#SYM.T.UCHAR,#SYM.Q.PPOINTER,0
|
CC.MAIN.DEF .DA #SYM.T.SINT,#0,#SYM.T.SINT,#0,#SYM.T.UCHAR,#SYM.Q.PPOINTER,0
|
||||||
CC.MAIN.DEF.LEN .EQ *-CC.MAIN.DEF
|
CC.MAIN.DEF.LEN .EQ *-CC.MAIN.DEF
|
||||||
|
CC._RETURN_ .AZ "_RETURN_;"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYSCALL .PS "chtyp"
|
CC.SYSCALL .PS "chtyp"
|
||||||
.DA #SYS.ChTyp
|
.DA #SYS.ChTyp
|
||||||
|
@ -1125,10 +1144,12 @@ CC.SaveDefine .BS 2
|
||||||
CC.hTags .BS 1
|
CC.hTags .BS 1
|
||||||
CC.hStack .BS 1
|
CC.hStack .BS 1
|
||||||
|
|
||||||
CC.hScopes .BS 1+SCOPE.MAX 1 Global+ MAX locals
|
CC.hSyms .BS 1
|
||||||
|
|
||||||
CC.CPSID .BS 2 AA
|
CC.ScopeID .BS 2
|
||||||
CC.CPSPFX .BS 5 X_id\0
|
CC.ScopeIDs .BS 2+SCOPE.MAX*2 2 bytes Global+ MAX locals
|
||||||
|
|
||||||
|
CC.Label .BS 3 _X\0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.hSymBuf .BS 1
|
CC.hSymBuf .BS 1
|
||||||
CC.SymID .BS 2
|
CC.SymID .BS 2
|
||||||
|
|
434
BIN/FORMAT.S.txt
434
BIN/FORMAT.S.txt
|
@ -32,19 +32,17 @@ BlkCnt .BS 2
|
||||||
TrkCnt .BS 1
|
TrkCnt .BS 1
|
||||||
Stepping .BS 1
|
Stepping .BS 1
|
||||||
VolNum .BS 1
|
VolNum .BS 1
|
||||||
AltBB .BS 1
|
bAltBB .BS 1
|
||||||
HeadCnt .BS 1
|
HeadCnt .BS 1
|
||||||
|
|
||||||
TimeOut .BS 1
|
|
||||||
|
|
||||||
CatSize .BS 1
|
CatSize .BS 1
|
||||||
CatBlkCnt .BS 1
|
CatBlkCnt .BS 1
|
||||||
bLL .BS 1
|
bLL .BS 1
|
||||||
bCustomBlkSize .BS 1
|
|
||||||
bHighDensity .BS 1
|
|
||||||
bExtraTrack .BS 1
|
|
||||||
bDS .BS 1
|
|
||||||
bVerify .BS 1
|
bVerify .BS 1
|
||||||
|
bCustomBlkSize .BS 1
|
||||||
|
|
||||||
|
TimeOut .BS 1
|
||||||
|
|
||||||
ZS.END
|
ZS.END
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -81,11 +79,19 @@ L.MSG.LLDISK2 .DA MSG.LLDISK2
|
||||||
L.MSG.VERIFY .DA MSG.VERIFY
|
L.MSG.VERIFY .DA MSG.VERIFY
|
||||||
L.MSG.WRITECAT .DA MSG.WRITECAT
|
L.MSG.WRITECAT .DA MSG.WRITECAT
|
||||||
L.FMT.BLANK .DA FMT.BLANK
|
L.FMT.BLANK .DA FMT.BLANK
|
||||||
|
J.Opts .DA CS.RUN.OptA
|
||||||
|
.DA CS.RUN.OptB
|
||||||
|
.DA CS.RUN.OptD
|
||||||
|
.DA CS.RUN.OptL
|
||||||
|
.DA CS.RUN.OptS
|
||||||
|
.DA CS.RUN.OptT
|
||||||
|
.DA CS.RUN.OptV
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.INIT >LDYA L.LIBBLKDEV
|
CS.INIT >LDYA L.LIBBLKDEV
|
||||||
>SYSCALL LoadLib
|
>SYSCALL LoadLib
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
sta hLIBBLKDEV
|
sta hLIBBLKDEV
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
|
@ -94,14 +100,17 @@ CS.RUN ldy #S.PS.ARGC
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
beq .99
|
beq .99
|
||||||
|
|
||||||
.1 inc ArgIndex
|
ldx #6
|
||||||
lda ArgIndex
|
|
||||||
>SYSCALL ArgV
|
|
||||||
bcc .11
|
|
||||||
|
|
||||||
jmp .8
|
.10 lda Disk2.Default,x
|
||||||
|
sta BlkCnt,x
|
||||||
|
dex
|
||||||
|
bpl .10
|
||||||
|
|
||||||
.11 >STYA ZPPtr1
|
.1 jsr CS.RUN.NextArg
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
>STYA ZPPtr1
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
cmp #'-'
|
cmp #'-'
|
||||||
bne .4
|
bne .4
|
||||||
|
@ -112,72 +121,53 @@ CS.RUN ldy #S.PS.ARGC
|
||||||
|
|
||||||
cmp #'0'
|
cmp #'0'
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
cmp #'9'+1
|
cmp #'9'+1
|
||||||
bcs .2
|
bcs .2
|
||||||
|
|
||||||
and #$0F
|
and #$0F
|
||||||
sta CatSize
|
sta CatSize
|
||||||
.10 bra .1
|
bra .1
|
||||||
|
|
||||||
.2 jsr CS.RUN.CheckOpt
|
.2 jsr CS.RUN.CheckOpt
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
cpy #bCustomBlkSize
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
inc ArgIndex
|
|
||||||
lda ArgIndex
|
|
||||||
>SYSCALL ArgV
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
>SYSCALL AToI
|
|
||||||
>STYA BlkCnt
|
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.99 >LDYA L.MSG.USAGE1
|
|
||||||
>SYSCALL PutS
|
|
||||||
>LDYA L.MSG.USAGE2
|
|
||||||
>SYSCALL Puts
|
|
||||||
lda #E.SYN
|
|
||||||
sec
|
|
||||||
.9 rts
|
|
||||||
|
|
||||||
.4 lda hDevID
|
.4 lda hDevID
|
||||||
bne .5 Already have a dev...go get VolName
|
bne .5 Already have a dev...go get VolName
|
||||||
|
|
||||||
>LDYA ZPPtr1
|
jsr CS.RUN.GetDev
|
||||||
>SYSCALL GetDevByName
|
bcc .1
|
||||||
bcs .9
|
|
||||||
|
rts
|
||||||
|
|
||||||
stx hDevID
|
.5 jsr CS.RUN.GetVolName
|
||||||
>STYA ZPPtrFD
|
bcc .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
>LDYA ZPPtr1
|
.99 >LDYA L.MSG.USAGE1
|
||||||
>STYA ZPPtrDevName
|
>SYSCALL PutS
|
||||||
bra .10
|
>LDYA L.MSG.USAGE2
|
||||||
|
>SYSCALL PutS
|
||||||
|
|
||||||
.5 ldy #$ff
|
lda #E.SYN
|
||||||
|
sec
|
||||||
.6 iny
|
.9 rts
|
||||||
lda (ZPPtr1),y
|
|
||||||
sta (pData),y VolName
|
|
||||||
beq .10
|
|
||||||
|
|
||||||
cpy #16
|
|
||||||
bcc .6
|
|
||||||
bra .99 VolName too long
|
|
||||||
|
|
||||||
.8 lda hDevID
|
.8 lda hDevID
|
||||||
beq .99
|
beq .99
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.Format jsr CS.RUN.GetDevDIB
|
CS.RUN.Format jsr CS.RUN.GetDevDIB
|
||||||
bcs .99
|
bcs .9
|
||||||
|
|
||||||
>PUSHW L.MSG.INIT
|
>PUSHW L.MSG.INIT
|
||||||
>PUSHW ZPPtrDevName
|
>PUSHW ZPPtrDevName
|
||||||
>PUSHEA.G VolName
|
>PUSHW pData >PUSHEA.G VolName
|
||||||
>PUSHBI 4
|
>PUSHBI 4
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
bcs .99
|
bcs .9
|
||||||
|
|
||||||
jsr CS.RUN.GET.DSSS0000
|
jsr CS.RUN.GET.DSSS0000
|
||||||
|
|
||||||
|
@ -194,8 +184,7 @@ CS.RUN.Format jsr CS.RUN.GetDevDIB
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CS.RUN.WriteCat
|
jsr CS.RUN.WriteCat
|
||||||
|
bcs .9
|
||||||
.99 bcs .9
|
|
||||||
|
|
||||||
>LDYA L.MSG.OK
|
>LDYA L.MSG.OK
|
||||||
>SYSCALL PutS
|
>SYSCALL PutS
|
||||||
|
@ -221,10 +210,158 @@ CS.RUN.Format jsr CS.RUN.GetDevDIB
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.GetDevDIB
|
CS.RUN.CheckOpt ldy #1
|
||||||
lda bCustomBlkSize
|
lda (ZPPtr1),y
|
||||||
bmi .8
|
|
||||||
|
|
||||||
|
ldx #OptionList.Cnt-1
|
||||||
|
|
||||||
|
.2 cmp OptionList,x
|
||||||
|
beq .3
|
||||||
|
|
||||||
|
dex
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 txa
|
||||||
|
and #$fe
|
||||||
|
tax
|
||||||
|
jmp (J.Opts,x)
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.OptA sec
|
||||||
|
ror bAltBB
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.OptB jsr CS.RUN.NextArg
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>SYSCALL AToI
|
||||||
|
>STYA BlkCnt
|
||||||
|
|
||||||
|
sec
|
||||||
|
ror bCustomBlkSize
|
||||||
|
|
||||||
|
clc
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.OptD lda #2
|
||||||
|
sta HeadCnt
|
||||||
|
|
||||||
|
lda #$80
|
||||||
|
tsb VolNum
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.OptV sec
|
||||||
|
ror bVerify
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.OptL sec
|
||||||
|
ror bLL
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.OptS jsr CS.RUN.NextArg
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>SYSCALL AToI
|
||||||
|
tax
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
tya
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
cmp #5
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
sta Stepping
|
||||||
|
cmp #4
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
tsb VolNum
|
||||||
|
|
||||||
|
sec
|
||||||
|
ror bAltBB
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 sec
|
||||||
|
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.OptT jsr CS.RUN.NextArg
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>SYSCALL AToI
|
||||||
|
tax
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
tya
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
sta TrkCnt
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 sec
|
||||||
|
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.NextArg inc ArgIndex
|
||||||
|
lda ArgIndex
|
||||||
|
>SYSCALL ArgV
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.GetDev >LDYA ZPPtr1
|
||||||
|
>SYSCALL GetDevByName
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
stx hDevID
|
||||||
|
>STYA ZPPtrFD
|
||||||
|
|
||||||
|
>LDYA ZPPtr1
|
||||||
|
>STYA ZPPtrDevName
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.GetVolName
|
||||||
|
lda (pData)
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
lda (ZPPtr1)
|
||||||
|
jsr CS.RUN.IsL
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
sta (pData) VolName
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
sta (pData),y
|
||||||
|
* clc
|
||||||
|
beq .8 \0
|
||||||
|
|
||||||
|
jsr CS.RUN.IsDOrL
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
cpy #16
|
||||||
|
bcc .1 VolName too long ?
|
||||||
|
|
||||||
|
.9 lda #E.SYN
|
||||||
|
|
||||||
|
sec
|
||||||
|
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN.GetDevDIB
|
||||||
>LEA.G DIB
|
>LEA.G DIB
|
||||||
>STYA.G IOCTL+S.IOCTL.BUFPTR
|
>STYA.G IOCTL+S.IOCTL.BUFPTR
|
||||||
|
|
||||||
|
@ -237,6 +374,9 @@ CS.RUN.GetDevDIB
|
||||||
>SYSCALL IOCTL
|
>SYSCALL IOCTL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
lda bCustomBlkSize
|
||||||
|
bmi .8
|
||||||
|
|
||||||
>LDA.G DIB+S.DIB.SIZE
|
>LDA.G DIB+S.DIB.SIZE
|
||||||
tax
|
tax
|
||||||
iny
|
iny
|
||||||
|
@ -277,37 +417,7 @@ CS.RUN.GET.DSSS0000
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.LL >LDA.G DIB+S.DIB.T
|
CS.RUN.LL >PUSHW L.MSG.LL
|
||||||
cmp #S.DIB.T.DISKII
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
bit bExtraTrack
|
|
||||||
bpl .10
|
|
||||||
|
|
||||||
ora #8
|
|
||||||
|
|
||||||
.10 bit bHighDensity
|
|
||||||
bpl .11
|
|
||||||
|
|
||||||
ora #16
|
|
||||||
|
|
||||||
.11 bit bDS
|
|
||||||
bpl .12
|
|
||||||
|
|
||||||
ora #32
|
|
||||||
|
|
||||||
.12 tay
|
|
||||||
ldx #0
|
|
||||||
|
|
||||||
.13 lda Disk2.Default,y
|
|
||||||
sta BlkCnt,x
|
|
||||||
iny
|
|
||||||
inx
|
|
||||||
cpx #7
|
|
||||||
bne .13
|
|
||||||
|
|
||||||
.1 >PUSHW L.MSG.LL
|
|
||||||
>PUSHW BlkCnt
|
>PUSHW BlkCnt
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
|
@ -596,10 +706,10 @@ CS.RUN.InitCat lda CatSize
|
||||||
lda #4
|
lda #4
|
||||||
sta CatSize
|
sta CatSize
|
||||||
|
|
||||||
.1 >LDA.G VolName
|
.1 lda (pData) >LDA.G VolName
|
||||||
bne .8 Volume name ok
|
bne .8 Volume name ok
|
||||||
|
|
||||||
>PUSHEA.G VolName
|
>PUSHW pData >PUSHEA.G VolName
|
||||||
>PUSHW L.FMT.BLANK
|
>PUSHW L.FMT.BLANK
|
||||||
>PUSHW A2osX.TIMER16
|
>PUSHW A2osX.TIMER16
|
||||||
>PUSHW A2osX.RANDOM16
|
>PUSHW A2osX.RANDOM16
|
||||||
|
@ -642,18 +752,20 @@ CS.RUN.BuildCat jsr .7
|
||||||
|
|
||||||
jsr .7
|
jsr .7
|
||||||
|
|
||||||
>PUSHEA.G VolName
|
>PUSHW pData >PUSHEA.G VolName
|
||||||
>PUSHW.G IOCTL+S.IOCTL.BUFPTR
|
>PUSHW.G IOCTL+S.IOCTL.BUFPTR
|
||||||
>LIBCALL hLIBBLKDEV,LIBBLKDEV.BuildProDOSCat
|
>LIBCALL hLIBBLKDEV,LIBBLKDEV.BuildProDOSCat
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.7 >PUSHW BlkCnt
|
.7 >PUSHW BlkCnt
|
||||||
>PUSHB CatSize
|
>PUSHB CatSize
|
||||||
>PUSHB AltBB
|
>PUSHB bAltBB
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.WriteCat >LDYA L.MSG.WRITECAT
|
CS.RUN.WriteCat >PUSHW L.MSG.WRITECAT
|
||||||
>SYSCALL PutS
|
>PUSHBI 0
|
||||||
|
>SYSCALL PrintF
|
||||||
|
bcs .9
|
||||||
|
|
||||||
>STZ.G IOCTL+S.IOCTL.BLKNUM
|
>STZ.G IOCTL+S.IOCTL.BLKNUM
|
||||||
iny
|
iny
|
||||||
|
@ -709,26 +821,6 @@ CS.QUIT lda hCatBuf
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.CheckOpt ldy #1
|
|
||||||
lda (ZPPtr1),y
|
|
||||||
|
|
||||||
ldx #OptionVars-OptionList-1
|
|
||||||
|
|
||||||
.2 cmp OptionList,x
|
|
||||||
beq .3
|
|
||||||
|
|
||||||
dex
|
|
||||||
bpl .2
|
|
||||||
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.3 ldy OptionVars,x
|
|
||||||
ldx #$ff
|
|
||||||
stx 0,y
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CS.RUN.Wait sta TimeOut
|
CS.RUN.Wait sta TimeOut
|
||||||
|
|
||||||
.1 jsr CS.RUN.CheckCtrlC
|
.1 jsr CS.RUN.CheckCtrlC
|
||||||
|
@ -764,6 +856,36 @@ CS.RUN.CheckCtrlC
|
||||||
plx
|
plx
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CS.RUN.IsDOrL cmp #'0'
|
||||||
|
bcc CS.RUN.IsL
|
||||||
|
|
||||||
|
cmp #'9'+1
|
||||||
|
bcc CS.RUN.IsL.RTS
|
||||||
|
|
||||||
|
CS.RUN.IsL cmp #'_'
|
||||||
|
clc
|
||||||
|
beq CS.RUN.IsL.RTS
|
||||||
|
|
||||||
|
cmp #'.'
|
||||||
|
clc
|
||||||
|
beq CS.RUN.IsL.RTS
|
||||||
|
|
||||||
|
cmp #'A'
|
||||||
|
bcc CS.RUN.IsL.9
|
||||||
|
|
||||||
|
cmp #'Z'+1
|
||||||
|
bcc CS.RUN.IsL.RTS
|
||||||
|
|
||||||
|
cmp #'a'
|
||||||
|
bcc CS.RUN.IsL.9
|
||||||
|
|
||||||
|
cmp #'z'+1
|
||||||
|
|
||||||
|
CS.RUN.IsL.RTS rts
|
||||||
|
|
||||||
|
CS.RUN.IsL.9 sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIBBLKDEV .AZ "libblkdev"
|
LIBBLKDEV .AZ "libblkdev"
|
||||||
|
@ -771,15 +893,15 @@ hLIBBLKDEV .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.USAGE1 .CS "Usage : FORMAT <BLOCKDEV> [VOL.NAME]\r\n"
|
MSG.USAGE1 .CS "Usage : FORMAT <BLOCKDEV> [VOL.NAME]\r\n"
|
||||||
.CS " -L : Low-Level Format\r\n"
|
.CS " -L : Low-Level Format\r\n"
|
||||||
.CS "-L -V : Verify After LLF\r\n"
|
.CS " -V : Verify After LLF\r\n"
|
||||||
.CS " -B xxxx : Smrtprt, Override Device block size\r\n"
|
.CS " -B xxxx : Volume size (blocks)\r\n"
|
||||||
.CZ " -1-9 : Catalog Size (Blocks)\r\n"
|
.CZ " -1-9 : Catalog Size (blocks)"
|
||||||
MSG.USAGE2 .CS "------- ProDOS.FX only ------\r\n"
|
MSG.USAGE2 .CS "------- ProDOS.FX only ------\r\n"
|
||||||
.CS " -H : 35trk drives, High Density: 48 tracks, 384 Blocks\r\n"
|
.CS " -A : Alternate boot block\r\n"
|
||||||
.CS " -X : 40trk drives, 320 Blocks\r\n"
|
.CS " -D : Dual sided\r\n"
|
||||||
.CS "-H -X : 40trk drives, 432 Blocks\r\n"
|
.CS " -S x : Quarter track stepping\r\n"
|
||||||
.CS " -D : Rana Elite II 640 Blocks, 2 Sides\r\n"
|
.CZ " -T xxx : Track count\r\n"
|
||||||
.CZ "-H -D : Rana Elite III 1280 Blocks, 2 Sides\r\n"
|
*--------------------------------------
|
||||||
MSG.OK .CZ "[OK]"
|
MSG.OK .CZ "[OK]"
|
||||||
MSG.ERR .CS "[%h]"
|
MSG.ERR .CS "[%h]"
|
||||||
MSG.CRLF .CZ "\r\n"
|
MSG.CRLF .CZ "\r\n"
|
||||||
|
@ -791,75 +913,15 @@ MSG.VERIFY .CZ "\rVerifying Head %d/Track %02d/Block %d (%05D)..."
|
||||||
MSG.WRITECAT .CZ "Writing Catalog..."
|
MSG.WRITECAT .CZ "Writing Catalog..."
|
||||||
FMT.BLANK .CZ "BLANK%H%H"
|
FMT.BLANK .CZ "BLANK%H%H"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OptionList .AS "LlBbHhXxDdVv"
|
OptionList .AS "AaBbDdLlSsTtVv"
|
||||||
OptionVars .DA #bLL,#bLL,#bCustomBlkSize,#bCustomBlkSize
|
OptionList.cnt .EQ *-OptionList
|
||||||
.DA #bHighDensity,#bHighDensity,#bExtraTrack,#bExtraTrack
|
|
||||||
.DA #bDS,#bDS
|
|
||||||
.DA #bVerify,#bVerify
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Disk2.Default .DA 280 BlkCnt
|
Disk2.Default .DA 280 BlkCnt
|
||||||
.DA #35 TrkCnt
|
.DA #35 TrkCnt
|
||||||
.DA #4 Stepping
|
.DA #4 Stepping
|
||||||
.DA #$00 VolNum
|
.DA #$00 VolNum
|
||||||
.DA #0 AltBB
|
.DA #0 bAltBB
|
||||||
.DA #1 HeadCnt
|
.DA #1 HeadCnt
|
||||||
.BS 1
|
|
||||||
*--------------------------------------
|
|
||||||
Disk2.X .DA 320 BlkCnt
|
|
||||||
.DA #40 TrkCnt
|
|
||||||
.DA #4 Stepping
|
|
||||||
.DA #$00 VolNum
|
|
||||||
.DA #0 AltBB
|
|
||||||
.DA #1 HeadCnt
|
|
||||||
.BS 1
|
|
||||||
*--------------------------------------
|
|
||||||
Disk2.H .DA 384 BlkCnt
|
|
||||||
.DA #48 TrkCnt
|
|
||||||
.DA #3 Stepping
|
|
||||||
.DA #$03 VolNum
|
|
||||||
.DA #$80 AltBB
|
|
||||||
.DA #1 HeadCnt
|
|
||||||
.BS 1
|
|
||||||
*--------------------------------------
|
|
||||||
Disk2.HX .DA 432 BlkCnt
|
|
||||||
.DA #54 TrkCnt
|
|
||||||
.DA #3 Stepping
|
|
||||||
.DA #$03 VolNum
|
|
||||||
.DA #$80 AltBB
|
|
||||||
.DA #1 HeadCnt
|
|
||||||
.BS 1
|
|
||||||
*-------------------------------------- RANA Elite 2
|
|
||||||
Disk2.DefaultD .DA 640 BlkCnt
|
|
||||||
.DA #40 TrkCnt
|
|
||||||
.DA #4 Stepping
|
|
||||||
.DA #$84 VolNum
|
|
||||||
.DA #$80 AltBB
|
|
||||||
.DA #2 HeadCnt
|
|
||||||
.BS 1
|
|
||||||
*--------------------------------------
|
|
||||||
Disk2.XD .DA 640 BlkCnt
|
|
||||||
.DA #40 TrkCnt
|
|
||||||
.DA #4 Stepping
|
|
||||||
.DA #84 VolNum
|
|
||||||
.DA #$80 AltBB
|
|
||||||
.DA #2 HeadCnt
|
|
||||||
.BS 1
|
|
||||||
*-------------------------------------- RANA Elite 3
|
|
||||||
Disk2.HD .DA 1280 BlkCnt
|
|
||||||
.DA #80 TrkCnt
|
|
||||||
.DA #2 Stepping
|
|
||||||
.DA #$82 VolNum
|
|
||||||
.DA #$80 AltBB
|
|
||||||
.DA #2 HeadCnt
|
|
||||||
.BS 1
|
|
||||||
*--------------------------------------
|
|
||||||
Disk2.HXD .DA 1280 BlkCnt
|
|
||||||
.DA #80 TrkCnt
|
|
||||||
.DA #2 Stepping
|
|
||||||
.DA #$82 VolNum
|
|
||||||
.DA #$80 AltBB
|
|
||||||
.DA #2 HeadCnt
|
|
||||||
.BS 1
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
|
|
|
@ -196,9 +196,10 @@ CS.RUN.DIR lda (ZPFileName)
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHW ZPFullPath
|
|
||||||
jsr CS.RUN.GetNewPath
|
jsr CS.RUN.GetNewPath
|
||||||
>PUSHYA
|
|
||||||
|
>PUSHW ZPFullPath
|
||||||
|
>PUSHW ZPNewPath
|
||||||
>SYSCALL Rename
|
>SYSCALL Rename
|
||||||
jsr CS.RUN.CheckErr
|
jsr CS.RUN.CheckErr
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
147
BIN/SH.S.CMD.txt
147
BIN/SH.S.CMD.txt
|
@ -98,7 +98,7 @@ CMD..EXEC.YAX jsr CORE.Load.YAX Y,A = Args, X = Code
|
||||||
bcs CMD.SHIFTA.RTS
|
bcs CMD.SHIFTA.RTS
|
||||||
|
|
||||||
lda #$C0+C..
|
lda #$C0+C..
|
||||||
jmp CORE.StkPush
|
jmp STK.Push
|
||||||
|
|
||||||
CMD...9 jmp CMD.E.CSYN
|
CMD...9 jmp CMD.E.CSYN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -189,6 +189,7 @@ CMD.CD.YA >PUSHYA
|
||||||
beq .11
|
beq .11
|
||||||
|
|
||||||
lda #MLI.E.INVPATH
|
lda #MLI.E.INVPATH
|
||||||
|
|
||||||
.19 pha
|
.19 pha
|
||||||
lda ZPTmpW
|
lda ZPTmpW
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
@ -607,7 +608,7 @@ CMD.REN lda (ZPArgVBufPtr)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.FUNCTION lda (ZPArgVBufPtr)
|
CMD.FUNCTION lda (ZPArgVBufPtr)
|
||||||
beq .9
|
beq .9
|
||||||
jsr CORE.StkGetCtx
|
jsr STK.GetCtx
|
||||||
bcc .9 No context allowed
|
bcc .9 No context allowed
|
||||||
|
|
||||||
>LDA.G hFunctions
|
>LDA.G hFunctions
|
||||||
|
@ -713,7 +714,7 @@ CMD.CALL jsr CMD.CALL.GETFUNC
|
||||||
bcs CMD.CALL.RTS
|
bcs CMD.CALL.RTS
|
||||||
|
|
||||||
lda #$C0+C.CALL
|
lda #$C0+C.CALL
|
||||||
jmp CORE.StkPush
|
jmp STK.Push
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.CALL.GETFUNC
|
CMD.CALL.GETFUNC
|
||||||
>LDA.G hFunctions
|
>LDA.G hFunctions
|
||||||
|
@ -738,7 +739,7 @@ CMD.EXIT lda (ZPArgVBufPtr)
|
||||||
.1 ldy #S.PS.RC
|
.1 ldy #S.PS.RC
|
||||||
sta (pPS),y
|
sta (pPS),y
|
||||||
|
|
||||||
.2 jsr CORE.StkPull Pull everything until CALL . CL...
|
.2 jsr STK.Pull Pull everything until CALL . CL...
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
cmp #$C0+C.. in CALL, "." or CL context ?
|
cmp #$C0+C.. in CALL, "." or CL context ?
|
||||||
|
@ -750,7 +751,7 @@ CMD.EXIT lda (ZPArgVBufPtr)
|
||||||
cmp #$C0+C.CLEXEC
|
cmp #$C0+C.CLEXEC
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
jsr CORE.StkPopCtxA
|
jsr STK.PopCtxA
|
||||||
bcc .2
|
bcc .2
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
@ -761,25 +762,25 @@ CMD.EXIT lda (ZPArgVBufPtr)
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.EXIT.FILE jsr CORE.StkPullFree Code buffer
|
CMD.EXIT.FILE jsr STK.PullFree Code buffer
|
||||||
|
|
||||||
ldy #S.PS.hARGV
|
ldy #S.PS.hARGV
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
>SYSCALL FreeMem ArgV buffer
|
>SYSCALL FreeMem ArgV buffer
|
||||||
|
|
||||||
jsr CORE.StkPull
|
jsr STK.Pull
|
||||||
ldy #S.PS.hARGV
|
ldy #S.PS.hARGV
|
||||||
sta (pPS),y
|
sta (pPS),y
|
||||||
|
|
||||||
jsr CORE.StkPull
|
jsr STK.Pull
|
||||||
ldy #S.PS.ARGC
|
ldy #S.PS.ARGC
|
||||||
sta (pPS),y
|
sta (pPS),y
|
||||||
|
|
||||||
jsr CORE.StkPullInputBufPtr
|
jsr STK.PullInputBufPtr
|
||||||
|
|
||||||
jsr CORE.StkPull
|
jsr STK.Pull
|
||||||
sta ZPInputBuf
|
sta ZPInputBuf
|
||||||
jsr CORE.StkPull
|
jsr STK.Pull
|
||||||
sta ZPInputBuf+1
|
sta ZPInputBuf+1
|
||||||
|
|
||||||
ldy #S.PS.RC
|
ldy #S.PS.RC
|
||||||
|
@ -788,19 +789,44 @@ CMD.EXIT.FILE jsr CORE.StkPullFree Code buffer
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.BREAK jsr CORE.StkGetCtx Get context in CORE.TestResult
|
CMD.BREAK jsr STK.GetCtx Get context in CORE.TestResult
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
tax
|
tax
|
||||||
and #$3F
|
and #$3F
|
||||||
cmp #C.CASE
|
|
||||||
bne .9
|
|
||||||
txa
|
|
||||||
bpl .8
|
|
||||||
jsr CORE.StkPull remove C.CASE
|
|
||||||
jsr CORE.StkGet
|
|
||||||
and #$7F
|
|
||||||
|
|
||||||
sta (pData),y
|
cmp #C.CASE
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
txa
|
||||||
|
bpl .8 already FALSE
|
||||||
|
|
||||||
|
jsr STK.Pull remove C.CASE
|
||||||
|
jsr STK.Get get SWITCH
|
||||||
|
bra .7
|
||||||
|
*--------------------------------------
|
||||||
|
.1 cmp #C.IF
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
sta (pData),y IF=false to skip until FI
|
||||||
|
|
||||||
|
dey get parent context
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
lda (pData),y
|
||||||
|
and #$3F
|
||||||
|
|
||||||
|
.2 cmp #C.WHILE
|
||||||
|
beq .6
|
||||||
|
|
||||||
|
.3 cmp #C.FOR
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
.6 lda (pData),y
|
||||||
|
|
||||||
|
.7 and #%01111111
|
||||||
|
sta (pData),y WHILE/FOR=false, Parent=unchanged
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
@ -809,41 +835,51 @@ CMD.BREAK jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||||
* stack-1 hVALUE
|
* stack-1 hVALUE
|
||||||
* stack SWITCH TOKEN
|
* stack SWITCH TOKEN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.SWITCH jsr CORE.StkGetCtx
|
CMD.SWITCH jsr STK.GetCtx
|
||||||
|
|
||||||
lda #2
|
lda #2
|
||||||
jsr CORE.StkCheck
|
jsr STK.Check
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr EXP.GET
|
jsr EXP.GET
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>SYSCALL StrDup
|
>SYSCALL StrDup
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
txa
|
txa
|
||||||
jsr CORE.StkPush Push EXP hVALUE
|
jsr STK.Push Push EXP hVALUE
|
||||||
|
|
||||||
lda CORE.TestResult
|
lda CORE.TestResult
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
ora #$80
|
ora #$80
|
||||||
|
|
||||||
.1 ora #C.SWITCH
|
.1 ora #C.SWITCH
|
||||||
jmp CORE.StkPush
|
jmp STK.Push
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.CASE jsr CORE.StkGetCtx Get context in CORE.TestResult
|
CMD.CASE jsr STK.GetCtx Get context in CORE.TestResult
|
||||||
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
tax
|
tax
|
||||||
and #$3F
|
and #$3F
|
||||||
cmp #C.SWITCH
|
cmp #C.SWITCH
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
cmp #C.CASE
|
cmp #C.CASE
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
txa previous case was true ?
|
txa previous case was true ?
|
||||||
bpl .10
|
bpl .10
|
||||||
|
|
||||||
jsr EXP.GET skip expression
|
jsr EXP.GET skip expression
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
rts keep existing context
|
rts keep existing context
|
||||||
.10 jsr CORE.StkPull remove previous C.CASE
|
|
||||||
|
.10 jsr STK.Pull remove previous C.CASE
|
||||||
bra CMD.CASE
|
bra CMD.CASE
|
||||||
|
|
||||||
.1 jsr EXP.GET
|
.1 jsr EXP.GET
|
||||||
|
@ -862,13 +898,13 @@ CMD.CASE jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||||
eor #$80
|
eor #$80
|
||||||
ora CORE.TestResult
|
ora CORE.TestResult
|
||||||
ora #C.CASE
|
ora #C.CASE
|
||||||
jmp CORE.StkPush
|
jmp STK.Push
|
||||||
.9
|
.9
|
||||||
CMD.E.CSYN lda #E.CSYN
|
CMD.E.CSYN lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.DEFAULT jsr CORE.StkGetCtx Get context in CORE.TestResult
|
CMD.DEFAULT jsr STK.GetCtx Get context in CORE.TestResult
|
||||||
bcs CMD.E.CSYN
|
bcs CMD.E.CSYN
|
||||||
|
|
||||||
and #$3F
|
and #$3F
|
||||||
|
@ -879,14 +915,14 @@ CMD.DEFAULT jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||||
cmp #C.CASE
|
cmp #C.CASE
|
||||||
bne CMD.E.CSYN
|
bne CMD.E.CSYN
|
||||||
|
|
||||||
jsr CORE.StkPull remove C.CASE
|
jsr STK.Pull remove C.CASE
|
||||||
|
|
||||||
.1 jsr CORE.StkGet
|
.1 jsr STK.Get
|
||||||
and #$C0
|
and #$C0
|
||||||
ora #C.DEFAULT
|
ora #C.DEFAULT
|
||||||
jmp CORE.StkPush
|
jmp STK.Push
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.END jsr CORE.StkGetCtx Get context in CORE.TestResult
|
CMD.END jsr STK.GetCtx Get context in CORE.TestResult
|
||||||
bcs CMD.E.CSYN
|
bcs CMD.E.CSYN
|
||||||
|
|
||||||
and #$3F
|
and #$3F
|
||||||
|
@ -900,9 +936,9 @@ CMD.END jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||||
cmp #C.DEFAULT
|
cmp #C.DEFAULT
|
||||||
bne CMD.E.CSYN
|
bne CMD.E.CSYN
|
||||||
|
|
||||||
.8 jmp CORE.StkPopCtx
|
.8 jmp STK.PopCtx
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.FOR jsr CORE.StkGetCtx
|
CMD.FOR jsr STK.GetCtx
|
||||||
|
|
||||||
lda (ZPArgVBufPtr)
|
lda (ZPArgVBufPtr)
|
||||||
beq CMD.E.CSYN
|
beq CMD.E.CSYN
|
||||||
|
@ -922,7 +958,7 @@ CMD.FOR jsr CORE.StkGetCtx
|
||||||
beq CMD.E.CSYN
|
beq CMD.E.CSYN
|
||||||
|
|
||||||
lda #8 Make sure 8 bytes free on stack
|
lda #8 Make sure 8 bytes free on stack
|
||||||
jsr CORE.StkCheck
|
jsr STK.Check
|
||||||
bcs FOR.FILE.9
|
bcs FOR.FILE.9
|
||||||
|
|
||||||
lda (ZPArgVBufPtr)
|
lda (ZPArgVBufPtr)
|
||||||
|
@ -939,19 +975,19 @@ CMD.FOR.LIST >LDYA ZPArgVBufPtr
|
||||||
phy
|
phy
|
||||||
pha
|
pha
|
||||||
|
|
||||||
jsr CORE.StkPushInputBufPtr Push CmdPtr AFTER FOR
|
jsr STK.PushInputBufPtr Push CmdPtr AFTER FOR
|
||||||
|
|
||||||
pla
|
pla
|
||||||
ply
|
ply
|
||||||
|
|
||||||
jsr CORE.StkPushYAX Push listPtr,hList
|
jsr STK.PushYAX Push listPtr,hList
|
||||||
|
|
||||||
jsr CORE.PushVarName Push hVARNAME
|
jsr CORE.PushVarName Push hVARNAME
|
||||||
|
|
||||||
lda #C.FOR.LIST
|
lda #C.FOR.LIST
|
||||||
jsr CORE.StkPush
|
jsr STK.Push
|
||||||
lda #C.FOR
|
lda #C.FOR
|
||||||
jsr CORE.StkPush
|
jsr STK.Push
|
||||||
|
|
||||||
jsr CMD.NEXT.LIST.TOKEN
|
jsr CMD.NEXT.LIST.TOKEN
|
||||||
bcc CMD.FOR.LOOP
|
bcc CMD.FOR.LOOP
|
||||||
|
@ -981,18 +1017,18 @@ CMD.FOR.EXEC jsr CORE.ArgV.NextChar skip "`"
|
||||||
|
|
||||||
CMD.FOR.PUSH pha save hFILE/hPIPE
|
CMD.FOR.PUSH pha save hFILE/hPIPE
|
||||||
|
|
||||||
jsr CORE.StkPushInputBufPtr Push CmdPtr AFTER FOR
|
jsr STK.PushInputBufPtr Push CmdPtr AFTER FOR
|
||||||
|
|
||||||
pla
|
pla
|
||||||
|
|
||||||
jsr CORE.StkPush push hPIPE for read
|
jsr STK.Push push hPIPE for read
|
||||||
jsr CORE.PushVarName Push hVARNAME
|
jsr CORE.PushVarName Push hVARNAME
|
||||||
* bcs FOR.FILE.9
|
* bcs FOR.FILE.9
|
||||||
|
|
||||||
lda #C.FOR.FILEEXEC
|
lda #C.FOR.FILEEXEC
|
||||||
jsr CORE.StkPush
|
jsr STK.Push
|
||||||
lda #C.FOR
|
lda #C.FOR
|
||||||
jsr CORE.StkPush
|
jsr STK.Push
|
||||||
|
|
||||||
jsr CMD.NEXT.LINE
|
jsr CMD.NEXT.LINE
|
||||||
bcs FOR.FILE.9
|
bcs FOR.FILE.9
|
||||||
|
@ -1008,7 +1044,7 @@ CMD.FOR.LOOP ora CORE.TestResult
|
||||||
* clc
|
* clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.NEXT jsr CORE.StkGet Y = StkPtr
|
CMD.NEXT jsr STK.Get Y = StkPtr
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
and #$3F
|
and #$3F
|
||||||
|
@ -1204,7 +1240,7 @@ CMD.NEXT.GetVarNamePtr
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.WHILE
|
CMD.WHILE
|
||||||
CMD.IF jsr CORE.StkGetCtx
|
CMD.IF jsr STK.GetCtx
|
||||||
|
|
||||||
bit #$40 Parent is true ?
|
bit #$40 Parent is true ?
|
||||||
beq .3
|
beq .3
|
||||||
|
@ -1217,35 +1253,36 @@ CMD.IF jsr CORE.StkGetCtx
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
lda #3
|
lda #3
|
||||||
jsr CORE.StkCheck
|
jsr STK.Check
|
||||||
bcs CMD.NEXT.LINE.RTS
|
bcs CMD.NEXT.LINE.RTS
|
||||||
|
|
||||||
>LDYA ZPInputCmdPtr
|
>LDYA ZPInputCmdPtr
|
||||||
jsr CORE.StkPushYA Push BEFORE WHILE/IF
|
jsr STK.PushYA Push BEFORE WHILE/IF
|
||||||
|
|
||||||
.8 lda CORE.TestResult
|
.8 lda CORE.TestResult
|
||||||
ora CORE.IntCmd
|
ora CORE.IntCmd
|
||||||
jmp CORE.StkPush
|
jmp STK.Push
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.LOOP jsr CORE.StkPull
|
CMD.LOOP jsr STK.Pull
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
tax
|
tax
|
||||||
and #$3F
|
and #$3F
|
||||||
cmp #C.WHILE
|
cmp #C.WHILE
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
txa
|
txa
|
||||||
bmi .8 true, loop
|
bmi .8 true, loop
|
||||||
|
|
||||||
jmp CORE.StkPopCtxA false, Discard loop Ptr
|
jmp STK.PopCtxA false, Discard loop Ptr
|
||||||
|
|
||||||
.8 jmp CORE.StkPullInputBufPtr
|
.8 jmp STK.PullInputBufPtr
|
||||||
|
|
||||||
.9 lda #E.NOWHILE
|
.9 lda #E.NOWHILE
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.ELSE jsr CORE.StkGet
|
CMD.ELSE jsr STK.Get
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
bit #$40 parent is true ?
|
bit #$40 parent is true ?
|
||||||
|
@ -1255,9 +1292,11 @@ CMD.ELSE jsr CORE.StkGet
|
||||||
and #$3F
|
and #$3F
|
||||||
cmp #C.IF
|
cmp #C.IF
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
txa
|
txa
|
||||||
eor #$80 toggle and store at stack ptr
|
eor #$80 toggle and store at stack ptr
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
.9
|
.9
|
||||||
|
@ -1265,7 +1304,7 @@ CMD.ELSE.NOIF lda #E.NOIF
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.FI jsr CORE.StkPull
|
CMD.FI jsr STK.Pull
|
||||||
bcs CMD.ELSE.NOIF
|
bcs CMD.ELSE.NOIF
|
||||||
|
|
||||||
and #$3F
|
and #$3F
|
||||||
|
|
|
@ -35,21 +35,21 @@ CORE.Load.YAX stx LOAD.hCode X = Code to Execute
|
||||||
sta LOAD.ArgCnt A = ARGC
|
sta LOAD.ArgCnt A = ARGC
|
||||||
|
|
||||||
lda #8
|
lda #8
|
||||||
jsr CORE.StkCheck
|
jsr STK.Check
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYA ZPInputBuf
|
>LDYA ZPInputBuf
|
||||||
jsr CORE.StkPushYA
|
jsr STK.PushYA
|
||||||
|
|
||||||
jsr CORE.StkPushInputBufPtr
|
jsr STK.PushInputBufPtr
|
||||||
|
|
||||||
ldy #S.PS.ARGC
|
ldy #S.PS.ARGC
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
jsr CORE.StkPush old ARGC
|
jsr STK.Push old ARGC
|
||||||
|
|
||||||
ldy #S.PS.hARGV
|
ldy #S.PS.hARGV
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
jsr CORE.StkPush old hARGV
|
jsr STK.Push old hARGV
|
||||||
|
|
||||||
ldy #S.PS.ARGC
|
ldy #S.PS.ARGC
|
||||||
lda LOAD.ArgCnt new ARGC
|
lda LOAD.ArgCnt new ARGC
|
||||||
|
@ -61,7 +61,7 @@ CORE.Load.YAX stx LOAD.hCode X = Code to Execute
|
||||||
sta (pPS),y new hARGV
|
sta (pPS),y new hARGV
|
||||||
|
|
||||||
lda LOAD.hCode new code
|
lda LOAD.hCode new code
|
||||||
jsr CORE.StkPush
|
jsr STK.Push
|
||||||
* lda LOAD.hCode
|
* lda LOAD.hCode
|
||||||
>SYSCALL GetMemPtr
|
>SYSCALL GetMemPtr
|
||||||
>STYA ZPInputBuf
|
>STYA ZPInputBuf
|
||||||
|
@ -95,7 +95,7 @@ CORE.Load.YAX stx LOAD.hCode X = Code to Execute
|
||||||
* set hStdIn = hStdOut
|
* set hStdIn = hStdOut
|
||||||
* set hStdOut = Std
|
* set hStdOut = Std
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.Run.EOF jsr CORE.StkPull
|
CORE.Run.EOF jsr STK.Pull
|
||||||
bcs *
|
bcs *
|
||||||
cmp #$C0+C.. check CALL . CL context
|
cmp #$C0+C.. check CALL . CL context
|
||||||
beq .1
|
beq .1
|
||||||
|
@ -198,7 +198,7 @@ CORE.Run.4 >LDYA L.CMD internal command ?
|
||||||
.41 stx CORE.IntCmd
|
.41 stx CORE.IntCmd
|
||||||
jsr CORE.SkipCharsA
|
jsr CORE.SkipCharsA
|
||||||
|
|
||||||
.42 jsr CORE.StkGet
|
.42 jsr STK.Get
|
||||||
bcs CORE.Run.5 no particular context, exec...
|
bcs CORE.Run.5 no particular context, exec...
|
||||||
|
|
||||||
tax
|
tax
|
||||||
|
@ -794,191 +794,6 @@ CORE.SListGetData
|
||||||
>SYSCALL SListGetData X = hMem
|
>SYSCALL SListGetData X = hMem
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Stack
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.StkPopCtx jsr CORE.StkPull
|
|
||||||
|
|
||||||
CORE.StkPopCtxA and #$3F
|
|
||||||
cmp #C.IF
|
|
||||||
beq .8 IF : Nothing
|
|
||||||
|
|
||||||
ldx #2
|
|
||||||
cmp #C.WHILE WHILE : One Ptr = 2 bytes
|
|
||||||
beq CORE.StkPopX
|
|
||||||
|
|
||||||
cmp #C.SWITCH SWITCH : hValue
|
|
||||||
beq .2
|
|
||||||
|
|
||||||
ldx #1
|
|
||||||
cmp #C.CASE CASE : C.CASE + hValue
|
|
||||||
beq .1
|
|
||||||
|
|
||||||
cmp #C.FOR
|
|
||||||
beq .3
|
|
||||||
|
|
||||||
cmp #C.DEFAULT DEFAULT : C.DEFAULT + hValue
|
|
||||||
bne .9
|
|
||||||
|
|
||||||
.1 jsr CORE.StkPopX
|
|
||||||
|
|
||||||
.2 jsr CORE.StkPullFree
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.3 jsr CORE.StkPull Get FOR sub cmd
|
|
||||||
beq .4 FOR List
|
|
||||||
|
|
||||||
jsr CORE.StkPullFree hVARNAME
|
|
||||||
|
|
||||||
jsr CORE.StkPullFClose hFILE/hPIPE
|
|
||||||
|
|
||||||
ldx #2 CmdPtr
|
|
||||||
jmp CORE.StkPopX
|
|
||||||
|
|
||||||
.4 jsr CORE.StkPullFree hVARNAME
|
|
||||||
|
|
||||||
jsr CORE.StkPullFClose hFILE/hPIPE
|
|
||||||
|
|
||||||
ldx #4 ListPtr,CmdPtr
|
|
||||||
jmp CORE.StkPopX
|
|
||||||
|
|
||||||
.9 lda #E.STACKERROR
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.StkPopX lda (pData)
|
|
||||||
.1 dec
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
sta (pData)
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.StkCheck sec
|
|
||||||
adc (pData) StackPtr
|
|
||||||
cmp #CORE.STACK.MAX
|
|
||||||
bcc .8
|
|
||||||
|
|
||||||
lda #E.STKOVERFLOW
|
|
||||||
* sec
|
|
||||||
.8 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.StkPushYAX phx
|
|
||||||
jsr CORE.StkPushYA
|
|
||||||
bcc CORE.StkPush.1
|
|
||||||
|
|
||||||
plx
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.StkPushInputBufPtr
|
|
||||||
>LDYA ZPInputBufPtr
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.StkPushYA phy
|
|
||||||
jsr CORE.StkPush
|
|
||||||
bcc CORE.StkPush.1
|
|
||||||
|
|
||||||
plx
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.PushVarName
|
|
||||||
>LDYA ZPVarNamePtr
|
|
||||||
>SYSCALL StrDup
|
|
||||||
bcs CORE.StkPush.RTS
|
|
||||||
|
|
||||||
txa
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.StkPush pha
|
|
||||||
|
|
||||||
CORE.StkPush.1 lda (pData) StackPtr
|
|
||||||
inc
|
|
||||||
cmp #CORE.STACK.MAX
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
sta (pData) StackPtr
|
|
||||||
tay
|
|
||||||
pla
|
|
||||||
sta (pData),y
|
|
||||||
* clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 pla
|
|
||||||
lda #E.STKOVERFLOW
|
|
||||||
* sec
|
|
||||||
CORE.StkPush.RTS
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.StkGetCtx jsr CORE.StkGet
|
|
||||||
tax
|
|
||||||
bcs .1 no context...
|
|
||||||
|
|
||||||
cmp #$C0+C.. in a call...
|
|
||||||
beq .1 CS
|
|
||||||
|
|
||||||
cmp #$C0+C.CALL
|
|
||||||
beq .1 CS
|
|
||||||
|
|
||||||
cmp #$C0+C.CLEXEC
|
|
||||||
beq .1 CS
|
|
||||||
|
|
||||||
and #$80 get current..
|
|
||||||
lsr becomes parent
|
|
||||||
bra .8
|
|
||||||
|
|
||||||
.1 lda #$40 ...set Parent = true
|
|
||||||
|
|
||||||
.8 sta CORE.TestResult
|
|
||||||
|
|
||||||
txa
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.StkPullInputBufPtr
|
|
||||||
jsr CORE.StkPull
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
sta ZPInputBufPtr
|
|
||||||
jsr CORE.StkPull
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
sta ZPInputBufPtr+1
|
|
||||||
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.StkPullFClose
|
|
||||||
jsr CORE.StkPull
|
|
||||||
>SYSCALL FClose
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.StkPullFree
|
|
||||||
jsr CORE.StkPull
|
|
||||||
>SYSCALL FreeMem
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.StkPull jsr CORE.StkGet
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
dey
|
|
||||||
pha
|
|
||||||
tya
|
|
||||||
sta (pData) StackPtr
|
|
||||||
pla
|
|
||||||
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.StkGet lda (pData) StackPtr
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
tay
|
|
||||||
lda (pData),y
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 lda #E.STACKERROR
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/bin/sh.s.core
|
SAVE usr/src/bin/sh.s.core
|
||||||
LOAD usr/src/bin/sh.s
|
LOAD usr/src/bin/sh.s
|
||||||
|
|
|
@ -0,0 +1,188 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
*--------------------------------------
|
||||||
|
STK.PopCtx jsr STK.Pull
|
||||||
|
|
||||||
|
STK.PopCtxA and #$3F
|
||||||
|
cmp #C.IF
|
||||||
|
beq .8 IF : Nothing
|
||||||
|
|
||||||
|
ldx #2
|
||||||
|
cmp #C.WHILE WHILE : One Ptr = 2 bytes
|
||||||
|
beq STK.PopX
|
||||||
|
|
||||||
|
cmp #C.SWITCH SWITCH : hValue
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
ldx #1
|
||||||
|
cmp #C.CASE CASE : C.CASE + hValue
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
cmp #C.FOR
|
||||||
|
beq .3
|
||||||
|
|
||||||
|
cmp #C.DEFAULT DEFAULT : C.DEFAULT + hValue
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
.1 jsr STK.PopX
|
||||||
|
|
||||||
|
.2 jsr STK.PullFree
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 jsr STK.Pull Get FOR sub cmd
|
||||||
|
beq .4 FOR List
|
||||||
|
|
||||||
|
jsr STK.PullFree hVARNAME
|
||||||
|
|
||||||
|
jsr STK.PullFClose hFILE/hPIPE
|
||||||
|
|
||||||
|
ldx #2 CmdPtr
|
||||||
|
jmp STK.PopX
|
||||||
|
|
||||||
|
.4 jsr STK.PullFree hVARNAME
|
||||||
|
|
||||||
|
jsr STK.PullFClose hFILE/hPIPE
|
||||||
|
|
||||||
|
ldx #4 ListPtr,CmdPtr
|
||||||
|
jmp STK.PopX
|
||||||
|
|
||||||
|
.9 lda #E.STACKERROR
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
STK.PopX lda (pData)
|
||||||
|
.1 dec
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
sta (pData)
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
STK.Check sec
|
||||||
|
adc (pData) StackPtr
|
||||||
|
cmp #CORE.STACK.MAX
|
||||||
|
bcc .8
|
||||||
|
|
||||||
|
lda #E.STKOVERFLOW
|
||||||
|
* sec
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
|
STK.PushYAX phx
|
||||||
|
jsr STK.PushYA
|
||||||
|
bcc STK.Push.1
|
||||||
|
|
||||||
|
plx
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
STK.PushInputBufPtr
|
||||||
|
>LDYA ZPInputBufPtr
|
||||||
|
*--------------------------------------
|
||||||
|
STK.PushYA phy
|
||||||
|
jsr STK.Push
|
||||||
|
bcc STK.Push.1
|
||||||
|
|
||||||
|
plx
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CORE.PushVarName
|
||||||
|
>LDYA ZPVarNamePtr
|
||||||
|
>SYSCALL StrDup
|
||||||
|
bcs STK.Push.RTS
|
||||||
|
|
||||||
|
txa
|
||||||
|
*--------------------------------------
|
||||||
|
STK.Push pha
|
||||||
|
|
||||||
|
STK.Push.1 lda (pData) StackPtr
|
||||||
|
inc
|
||||||
|
cmp #CORE.STACK.MAX
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
sta (pData) StackPtr
|
||||||
|
tay
|
||||||
|
pla
|
||||||
|
sta (pData),y
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 pla
|
||||||
|
lda #E.STKOVERFLOW
|
||||||
|
* sec
|
||||||
|
STK.Push.RTS
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
STK.GetCtx jsr STK.Get
|
||||||
|
tax
|
||||||
|
bcs .1 no context...
|
||||||
|
|
||||||
|
cmp #$C0+C.. in a call...
|
||||||
|
beq .1 CS
|
||||||
|
|
||||||
|
cmp #$C0+C.CALL
|
||||||
|
beq .1 CS
|
||||||
|
|
||||||
|
cmp #$C0+C.CLEXEC
|
||||||
|
beq .1 CS
|
||||||
|
|
||||||
|
and #$80 get current..
|
||||||
|
lsr becomes parent
|
||||||
|
bra .8
|
||||||
|
|
||||||
|
.1 lda #$40 ...set Parent = true
|
||||||
|
|
||||||
|
.8 sta CORE.TestResult
|
||||||
|
|
||||||
|
txa
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
STK.PullInputBufPtr
|
||||||
|
jsr STK.Pull
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
sta ZPInputBufPtr
|
||||||
|
jsr STK.Pull
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
sta ZPInputBufPtr+1
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
STK.PullFClose jsr STK.Pull
|
||||||
|
>SYSCALL FClose
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
STK.PullFree jsr STK.Pull
|
||||||
|
>SYSCALL FreeMem
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
STK.Pull jsr STK.Get
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
dey
|
||||||
|
pha
|
||||||
|
tya
|
||||||
|
sta (pData) StackPtr
|
||||||
|
pla
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
STK.Get lda (pData) StackPtr
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
tay
|
||||||
|
lda (pData),y
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #E.STACKERROR
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/bin/sh.s.stk
|
||||||
|
LOAD usr/src/bin/sh.s
|
||||||
|
ASM
|
23
BIN/SH.S.txt
23
BIN/SH.S.txt
|
@ -206,9 +206,9 @@ CS.INIT clc
|
||||||
CS.RUN jsr CL.Init
|
CS.RUN jsr CL.Init
|
||||||
jsr CORE.Init
|
jsr CORE.Init
|
||||||
|
|
||||||
lda #0
|
* lda #0
|
||||||
jsr GetArgV
|
* jsr GetArgV
|
||||||
>STYA.G SH
|
* >STYA.G SH
|
||||||
|
|
||||||
ldy #S.PS.ARGC
|
ldy #S.PS.ARGC
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
|
@ -397,7 +397,7 @@ CS.RUN.CMDLINE >SYSCALL StrDup
|
||||||
bcs CS.RUN.CMDLINE.9
|
bcs CS.RUN.CMDLINE.9
|
||||||
|
|
||||||
lda #$C0+C.CLEXEC
|
lda #$C0+C.CLEXEC
|
||||||
jsr CORE.StkPush
|
jsr STK.Push
|
||||||
|
|
||||||
bra CS.RUN.LOOP.RUN
|
bra CS.RUN.LOOP.RUN
|
||||||
|
|
||||||
|
@ -439,7 +439,7 @@ CS.RUN.LOOP.END ldy #S.PS.RC
|
||||||
and #bState.SET.E
|
and #bState.SET.E
|
||||||
bne CS.RUN.LOOP.80
|
bne CS.RUN.LOOP.80
|
||||||
|
|
||||||
.1 jsr CORE.StkGet
|
.1 jsr STK.Get
|
||||||
cmp #$C0+C.CLEXEC
|
cmp #$C0+C.CLEXEC
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
|
@ -449,13 +449,13 @@ CS.RUN.LOOP.END ldy #S.PS.RC
|
||||||
cmp #$C0+C.CALL in CALL ?
|
cmp #$C0+C.CALL in CALL ?
|
||||||
beq .7
|
beq .7
|
||||||
|
|
||||||
jsr CORE.StkPopCtx
|
jsr STK.PopCtx
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
.7 jsr IO.PrintBatchErrMsg
|
.7 jsr IO.PrintBatchErrMsg
|
||||||
bcs CS.RUN.LOOP.RTS
|
bcs CS.RUN.LOOP.RTS
|
||||||
|
|
||||||
jsr CORE.StkPull
|
jsr STK.Pull
|
||||||
jsr CMD.EXIT.FILE
|
jsr CMD.EXIT.FILE
|
||||||
|
|
||||||
.8 jsr IO.PrintErrMsg
|
.8 jsr IO.PrintErrMsg
|
||||||
|
@ -601,11 +601,12 @@ PrintYANoCR >PUSHYA
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB usr/src/bin/sh.s.cl
|
.INB usr/src/bin/sh.s.cl
|
||||||
.INB usr/src/bin/sh.s.his
|
|
||||||
.INB usr/src/bin/sh.s.core
|
|
||||||
.INB usr/src/bin/sh.s.io
|
|
||||||
.INB usr/src/bin/sh.s.cmd
|
.INB usr/src/bin/sh.s.cmd
|
||||||
|
.INB usr/src/bin/sh.s.core
|
||||||
.INB usr/src/bin/sh.s.exp
|
.INB usr/src/bin/sh.s.exp
|
||||||
|
.INB usr/src/bin/sh.s.his
|
||||||
|
.INB usr/src/bin/sh.s.io
|
||||||
|
.INB usr/src/bin/sh.s.stk
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -737,7 +738,7 @@ 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
|
*SH .BS 2
|
||||||
|
|
||||||
hAliases .BS 1
|
hAliases .BS 1
|
||||||
hFunctions .BS 1
|
hFunctions .BS 1
|
||||||
|
|
|
@ -199,9 +199,10 @@ CS.RUN.DIR lda (ZPFileName)
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHW ZPFullPath
|
|
||||||
jsr CS.RUN.GetNewPath
|
jsr CS.RUN.GetNewPath
|
||||||
>PUSHYA
|
|
||||||
|
>PUSHW ZPFullPath
|
||||||
|
>PUSHW ZPNewPath
|
||||||
>SYSCALL Rename
|
>SYSCALL Rename
|
||||||
jsr CS.RUN.CheckErr
|
jsr CS.RUN.CheckErr
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LBUF.SetBounds1YA
|
LBUF.SetBounds1YA
|
||||||
jsr DIVMOD7YA A=DIV, X=MOD
|
jsr DIVMOD7YA A=DIV, X=MOD
|
||||||
sta LBUF.C1
|
sta LBUF.C1
|
||||||
|
|
||||||
lda C1.MASK,x
|
lda C1.MASK,x
|
||||||
sta LBUF.C1.MASK
|
sta LBUF.C1.MASK
|
||||||
lda C1.DATA,x
|
lda C1.DATA,x
|
||||||
sta LBUF.C1.DATA
|
sta LBUF.C1.DATA
|
||||||
|
@ -14,21 +14,19 @@ LBUF.SetBounds1YA
|
||||||
LBUF.SetBounds2YA
|
LBUF.SetBounds2YA
|
||||||
jsr DIVMOD7YA A=DIV, X=MOD
|
jsr DIVMOD7YA A=DIV, X=MOD
|
||||||
sta LBUF.C2
|
sta LBUF.C2
|
||||||
cmp LBUF.C1 C1=C2, go combine in C1
|
cmp LBUF.C1
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
lda C2.MASK,x
|
lda C2.MASK,x
|
||||||
sta LBUF.C2.MASK
|
sta LBUF.C2.MASK
|
||||||
lda C2.DATA,x
|
lda C2.DATA,x
|
||||||
sta LBUF.C2.DATA
|
sta LBUF.C2.DATA
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 lda C1.MASK,x
|
.1 lda C2.MASK,x C1=C2, go combine in C1
|
||||||
ora C2.MASK,x
|
tsb LBUF.C1.MASK
|
||||||
sta LBUF.C1.MASK
|
lda C2.DATA,x
|
||||||
lda C1.DATA,x
|
tsb LBUF.C1.DATA
|
||||||
ora C2.DATA,x
|
|
||||||
sta LBUF.C1.DATA
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
||||||
|
@ -70,7 +68,7 @@ LBUF.DrawAtY.AND.SET
|
||||||
inx
|
inx
|
||||||
cpx LBUF.C2
|
cpx LBUF.C2
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
.2 >X2PageY
|
.2 >X2PageY
|
||||||
|
|
||||||
lda (ZPBasePtr),y Get C2
|
lda (ZPBasePtr),y Get C2
|
||||||
|
@ -83,7 +81,7 @@ LBUF.DrawAtY.AND.SET
|
||||||
sta (ZPBasePtr),y update screen
|
sta (ZPBasePtr),y update screen
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LBUF.DrawAtY.XOR
|
LBUF.DrawAtY.XOR
|
||||||
LBUF.DrawAtY.AND.XOR
|
LBUF.DrawAtY.AND.XOR
|
||||||
lda #$51 EOR (Indirect),Y
|
lda #$51 EOR (Indirect),Y
|
||||||
|
@ -92,33 +90,29 @@ LBUF.DrawAtY.AND.XOR
|
||||||
LBUF.DrawAtY.ORA
|
LBUF.DrawAtY.ORA
|
||||||
lda #$11 ORA (Indirect),Y
|
lda #$11 ORA (Indirect),Y
|
||||||
LBUF.DrawAtY.XXX
|
LBUF.DrawAtY.XXX
|
||||||
sta .10+1
|
sta .10
|
||||||
sta .20+1
|
sta .20
|
||||||
sta .30+1
|
sta .30
|
||||||
|
|
||||||
ldx LBUF.C1 x C1->C2
|
ldx LBUF.C1 x C1->C2
|
||||||
|
|
||||||
>X2PageY
|
>X2PageY
|
||||||
|
|
||||||
lda (ZPBasePtr),y Get C1
|
|
||||||
and LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
|
|
||||||
sta ZPTmpByte
|
|
||||||
|
|
||||||
lda LBUF.DATA,x get DATA bits
|
lda LBUF.DATA,x get DATA bits
|
||||||
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
|
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
|
||||||
ora ZPTmpByte
|
|
||||||
.10 ora (ZPBasePtr),y
|
.10 eor (ZPBasePtr),y
|
||||||
sta (ZPBasePtr),y update screen
|
sta (ZPBasePtr),y update screen
|
||||||
inx
|
inx
|
||||||
cpx LBUF.C2
|
cpx LBUF.C2
|
||||||
beq .2 C1=C2, go setup C2
|
beq .2 C1=C2, go setup C2
|
||||||
|
|
||||||
bcs .8 C1+1 > C2, we are done...
|
bcs .8 C1+1 > C2, we are done...
|
||||||
|
|
||||||
.1 >X2PageY
|
.1 >X2PageY
|
||||||
|
|
||||||
lda LBUF.DATA,x set all bytes between C1+1 & C2-1
|
lda LBUF.DATA,x set all bytes between C1+1 & C2-1
|
||||||
.20 ora (ZPBasePtr),y
|
.20 eor (ZPBasePtr),y
|
||||||
sta (ZPBasePtr),y
|
sta (ZPBasePtr),y
|
||||||
|
|
||||||
inx
|
inx
|
||||||
|
@ -127,15 +121,11 @@ LBUF.DrawAtY.XXX
|
||||||
|
|
||||||
.2 >X2PageY
|
.2 >X2PageY
|
||||||
|
|
||||||
lda (ZPBasePtr),y Get C2
|
|
||||||
and LBUF.C2.MASK clear ONLY bits ending at X2 mod 7
|
|
||||||
sta ZPTmpByte
|
|
||||||
|
|
||||||
lda LBUF.DATA,x get DATA bits
|
lda LBUF.DATA,x get DATA bits
|
||||||
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
||||||
ora ZPTmpByte
|
|
||||||
.30 ora (ZPBasePtr),y
|
.30 eor (ZPBasePtr),y
|
||||||
sta (ZPBasePtr),y update screen
|
sta (ZPBasePtr),y update screen
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -146,51 +136,41 @@ LBUF.DrawAtY.AND.ORA
|
||||||
|
|
||||||
lda LBUF.MASK,x get MASK bits
|
lda LBUF.MASK,x get MASK bits
|
||||||
ora LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
|
ora LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
|
||||||
|
and (ZPBasePtr),y
|
||||||
cpx LBUF.C2
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
ora LBUF.C2.MASK special case : C1=C2
|
|
||||||
and (ZPBasePtr),y
|
|
||||||
sta ZPTmpByte
|
sta ZPTmpByte
|
||||||
|
|
||||||
lda LBUF.DATA,x
|
lda LBUF.DATA,x
|
||||||
and LBUF.C1.DATA
|
and LBUF.C1.DATA
|
||||||
and LBUF.C2.DATA
|
ora ZPTmpByte
|
||||||
ora ZPTmpByte
|
|
||||||
sta (ZPBasePtr),y update screen
|
sta (ZPBasePtr),y update screen
|
||||||
rts
|
|
||||||
|
|
||||||
.1 and (ZPBasePtr),y Clear screen at C1
|
inx
|
||||||
sta ZPTmpByte
|
cpx LBUF.C2
|
||||||
|
beq .2 C1=C2, go setup C2
|
||||||
|
|
||||||
lda LBUF.DATA,x get DATA bits
|
bcs .8 C1+1 > C2, we are done...
|
||||||
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
|
|
||||||
ora ZPTmpByte ora with screen bits
|
|
||||||
|
|
||||||
bra .3
|
|
||||||
|
|
||||||
.2 >X2PageY
|
.1 >X2PageY
|
||||||
|
|
||||||
lda (ZPBasePtr),y
|
lda (ZPBasePtr),y
|
||||||
and LBUF.MASK,x
|
and LBUF.MASK,x
|
||||||
ora LBUF.DATA,x set all bytes between C1+1 & C2-1
|
ora LBUF.DATA,x set all bytes between C1+1 & C2-1
|
||||||
|
|
||||||
.3 sta (ZPBasePtr),y update screen
|
sta (ZPBasePtr),y update screen
|
||||||
|
|
||||||
inx
|
inx
|
||||||
cpx LBUF.C2
|
cpx LBUF.C2
|
||||||
bne .2
|
bne .1
|
||||||
|
|
||||||
>X2PageY
|
.2 >X2PageY
|
||||||
|
|
||||||
lda LBUF.MASK,x get MASK bits
|
lda LBUF.MASK,x get MASK bits
|
||||||
ora LBUF.C2.MASK
|
ora LBUF.C2.MASK
|
||||||
and (ZPBasePtr),y
|
and (ZPBasePtr),y
|
||||||
sta ZPTmpByte
|
sta ZPTmpByte
|
||||||
|
|
||||||
lda LBUF.DATA,x get DATA bits
|
lda LBUF.DATA,x get DATA bits
|
||||||
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
|
||||||
ora ZPTmpByte
|
ora ZPTmpByte
|
||||||
sta (ZPBasePtr),y update screen
|
sta (ZPBasePtr),y update screen
|
||||||
|
|
||||||
|
|
|
@ -478,11 +478,14 @@ OSD.BM.Create lda DstBM.Cache+S.BM.W
|
||||||
ldx DstBM.Cache+S.BM.W+1
|
ldx DstBM.Cache+S.BM.W+1
|
||||||
bit #7
|
bit #7
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
and #$F8
|
and #$F8
|
||||||
clc
|
clc
|
||||||
adc #8
|
adc #8
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
inx
|
inx
|
||||||
|
|
||||||
.1 sta DstBM.Cache+S.BM.RowBytes
|
.1 sta DstBM.Cache+S.BM.RowBytes
|
||||||
txa
|
txa
|
||||||
|
|
||||||
|
@ -509,12 +512,16 @@ OSD.BM.Create lda DstBM.Cache+S.BM.W
|
||||||
adc /S.BM
|
adc /S.BM
|
||||||
>SYSCALL2 GetMem
|
>SYSCALL2 GetMem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPDstBMPtr
|
>STYA ZPDstBMPtr
|
||||||
|
|
||||||
ldy #S.BM-1
|
ldy #S.BM-1
|
||||||
|
|
||||||
.2 lda DstBM.Cache,y
|
.2 lda DstBM.Cache,y
|
||||||
sta (ZPDstBMPtr),y
|
sta (ZPDstBMPtr),y
|
||||||
dey
|
dey
|
||||||
bpl .2
|
bpl .2
|
||||||
|
|
||||||
lda ZPDstBMPtr
|
lda ZPDstBMPtr
|
||||||
* clc
|
* clc
|
||||||
adc #S.BM
|
adc #S.BM
|
||||||
|
@ -524,6 +531,7 @@ OSD.BM.Create lda DstBM.Cache+S.BM.W
|
||||||
adc /S.BM
|
adc /S.BM
|
||||||
sta ZPDstBMPtr+1
|
sta ZPDstBMPtr+1
|
||||||
sta .4+2
|
sta .4+2
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
lda CBX.Cache+S.CB.OP
|
lda CBX.Cache+S.CB.OP
|
||||||
|
@ -531,16 +539,22 @@ OSD.BM.Create lda DstBM.Cache+S.BM.W
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
lda #$ff
|
lda #$ff
|
||||||
|
|
||||||
.3 inc ZPTmpPtr
|
.3 inc ZPTmpPtr
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
inc ZPTmpPtr+1
|
inc ZPTmpPtr+1
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
.4 sta $ffff,y
|
.4 sta $ffff,y
|
||||||
iny
|
iny
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
inc .4+2
|
inc .4+2
|
||||||
bra .3
|
bra .3
|
||||||
|
|
||||||
.8 txa hBM
|
.8 txa hBM
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -121,6 +121,7 @@ FD.DEV.NAME .AZ "mou1"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPIOCTL .EQ ZPDRV
|
ZPIOCTL .EQ ZPDRV
|
||||||
ZPBufPtr .EQ ZPDRV+2
|
ZPBufPtr .EQ ZPDRV+2
|
||||||
|
ZPState .EQ ZPDRV+4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRV.CS.START cld
|
DRV.CS.START cld
|
||||||
jmp (.1,x)
|
jmp (.1,x)
|
||||||
|
@ -225,7 +226,7 @@ EXIT1 jsr GOMOUSE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
READ >STYA ZPBufPtr NON STANDARD
|
READ >STYA ZPBufPtr NON STANDARD
|
||||||
|
|
||||||
stz READ.S+1 Reset Flags
|
stz ZPState Reset Flags
|
||||||
|
|
||||||
php
|
php
|
||||||
sei
|
sei
|
||||||
|
@ -255,7 +256,8 @@ READ >STYA ZPBufPtr NON STANDARD
|
||||||
sta (ZPBufPtr),y
|
sta (ZPBufPtr),y
|
||||||
|
|
||||||
lda #S.XY.S.MOVE
|
lda #S.XY.S.MOVE
|
||||||
tsb READ.S+1
|
tsb ZPState
|
||||||
|
|
||||||
stz bDblClick Reset DblClick flag
|
stz bDblClick Reset DblClick flag
|
||||||
|
|
||||||
.1 lda MOUSESTSx,x
|
.1 lda MOUSESTSx,x
|
||||||
|
@ -263,32 +265,41 @@ READ >STYA ZPBufPtr NON STANDARD
|
||||||
beq .8 no button state change:up & previously up
|
beq .8 no button state change:up & previously up
|
||||||
|
|
||||||
cmp #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
|
cmp #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
|
||||||
beq .8 no button state change:down & previously down
|
bne .10
|
||||||
|
|
||||||
asl if CS, down & previously up
|
lda ZPState no button state change:down & previously down
|
||||||
bcc .2
|
and #S.XY.S.MOVE
|
||||||
|
beq .8
|
||||||
lda #S.XY.S.DOWN
|
|
||||||
tsb READ.S+1 button has been pressed, start drag...
|
sec
|
||||||
|
ror bDrag
|
||||||
lda MOUSEXLOx,x
|
|
||||||
sta SrcDrag
|
lda #S.XY.S.DRAGSTART
|
||||||
lda MOUSEXHIx,x
|
tsb ZPState
|
||||||
sta SrcDrag+1
|
|
||||||
lda MOUSEYLOx,x
|
|
||||||
sta SrcDrag+2
|
|
||||||
lda MOUSEYHIx,x
|
|
||||||
sta SrcDrag+3
|
|
||||||
bra .8
|
bra .8
|
||||||
|
|
||||||
.2 lda READ.S+1
|
.10 asl
|
||||||
pha save move state
|
bcc .2 if CC, up & previously down
|
||||||
ora #S.XY.S.UP
|
|
||||||
sta READ.S+1
|
|
||||||
pla get back move state
|
|
||||||
bne .4 no move...click!
|
|
||||||
|
|
||||||
lda #S.XY.S.CLK
|
lda #S.XY.S.DOWN if CS, down & previously up
|
||||||
|
tsb ZPState button has been pressed
|
||||||
|
|
||||||
|
ldy #S.XY.X1+3
|
||||||
|
|
||||||
|
.11 lda (ZPBufPtr),y record pos if it is a drag start
|
||||||
|
sta SrcDrag-S.XY.X1,y
|
||||||
|
dey
|
||||||
|
bpl .11
|
||||||
|
|
||||||
|
bra .8
|
||||||
|
*--------------------------------------
|
||||||
|
.2 lda #S.XY.S.UP
|
||||||
|
tsb ZPState
|
||||||
|
|
||||||
|
bit bDrag
|
||||||
|
bmi .4
|
||||||
|
|
||||||
|
lda #S.XY.S.CLK no move since down...click!
|
||||||
bit bDblClick
|
bit bDblClick
|
||||||
bpl .3
|
bpl .3
|
||||||
|
|
||||||
|
@ -299,11 +310,11 @@ READ >STYA ZPBufPtr NON STANDARD
|
||||||
|
|
||||||
.3 dec bDblClick
|
.3 dec bDblClick
|
||||||
|
|
||||||
tsb READ.S+1
|
tsb ZPState
|
||||||
bra .8
|
bra .8
|
||||||
|
*--------------------------------------
|
||||||
.4 lda #S.XY.S.DRAGSTART
|
.4 lda #S.XY.S.DRAGEND
|
||||||
tsb READ.S+1
|
tsb ZPState
|
||||||
|
|
||||||
ldy #S.XY.X2+3
|
ldy #S.XY.X2+3
|
||||||
|
|
||||||
|
@ -311,10 +322,12 @@ READ >STYA ZPBufPtr NON STANDARD
|
||||||
sta (ZPBufPtr),y
|
sta (ZPBufPtr),y
|
||||||
dey
|
dey
|
||||||
bpl .5
|
bpl .5
|
||||||
|
|
||||||
|
stz bDrag
|
||||||
|
*--------------------------------------
|
||||||
.8 plp
|
.8 plp
|
||||||
|
|
||||||
READ.S lda #$ff SELF MODIFIED
|
lda ZPState
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
ldy #S.XY.S
|
ldy #S.XY.S
|
||||||
|
@ -356,6 +369,7 @@ GOMOUSE.JMP jmp $C100 SELF MODIFIED
|
||||||
DRV.CS.END
|
DRV.CS.END
|
||||||
DEVSLOT0n .BS 1
|
DEVSLOT0n .BS 1
|
||||||
bDblClick .BS 1
|
bDblClick .BS 1
|
||||||
|
bDrag .BS 1
|
||||||
SrcDrag .BS 4
|
SrcDrag .BS 4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DIB .DA #0
|
DIB .DA #0
|
||||||
|
|
|
@ -46,6 +46,9 @@ BM.ID.RIGHT .EQ 12
|
||||||
BM.ID.UP .EQ 14
|
BM.ID.UP .EQ 14
|
||||||
BM.ID.DOWN .EQ 16
|
BM.ID.DOWN .EQ 16
|
||||||
BM.ID.INFO .EQ 18
|
BM.ID.INFO .EQ 18
|
||||||
|
BM.ID.QMARK .EQ 20
|
||||||
|
BM.ID.EMARK .EQ 22
|
||||||
|
BM.ID.ERROR .EQ 24
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BUT.ID.OK .EQ 1
|
BUT.ID.OK .EQ 1
|
||||||
BUT.ID.CANCEL .EQ 2
|
BUT.ID.CANCEL .EQ 2
|
||||||
|
@ -86,14 +89,6 @@ S.MSG.Y1 .EQ 8
|
||||||
S.MSG.X2 .EQ 10
|
S.MSG.X2 .EQ 10
|
||||||
S.MSG.Y2 .EQ 12
|
S.MSG.Y2 .EQ 12
|
||||||
S.MSG.S .EQ 14
|
S.MSG.S .EQ 14
|
||||||
S.MSG.S.UP .EQ %00000001
|
|
||||||
S.MSG.S.DOWN .EQ %00000010
|
|
||||||
S.MSG.S.MOVE .EQ %00000100
|
|
||||||
S.MSG.S.DRAGSTART .EQ %00001000
|
|
||||||
S.MSG.S.DRAGEND .EQ %00010000
|
|
||||||
S.MSG.S.CLK .EQ %00100000
|
|
||||||
S.MSG.S.DCLK .EQ %01000000
|
|
||||||
*
|
|
||||||
*
|
*
|
||||||
S.MSG .EQ 16
|
S.MSG .EQ 16
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -115,9 +110,12 @@ S.OBJ.T.MBAR .EQ 2
|
||||||
S.OBJ.T.MENU .EQ 4
|
S.OBJ.T.MENU .EQ 4
|
||||||
S.OBJ.T.BUT .EQ 6
|
S.OBJ.T.BUT .EQ 6
|
||||||
S.OBJ.T.TEXT .EQ 8
|
S.OBJ.T.TEXT .EQ 8
|
||||||
|
S.OBJ.T.BITMAP .EQ 10
|
||||||
|
S.OBJ.T.LABEL .EQ 12
|
||||||
|
|
||||||
S.OBJ.F .EQ 1
|
S.OBJ.F .EQ 1
|
||||||
S.OBJ.F.BORDER .EQ %10000000
|
S.OBJ.F.BORDER .EQ %10000000
|
||||||
|
|
||||||
S.OBJ.S .EQ 2
|
S.OBJ.S .EQ 2
|
||||||
S.OBJ.S.VISIBLE .EQ %10000000
|
S.OBJ.S.VISIBLE .EQ %10000000
|
||||||
|
|
||||||
|
@ -131,8 +129,8 @@ S.OBJ.X2 .EQ 12
|
||||||
S.OBJ.Y2 .EQ 14
|
S.OBJ.Y2 .EQ 14
|
||||||
S.OBJ.W .EQ 16
|
S.OBJ.W .EQ 16
|
||||||
S.OBJ.H .EQ 18
|
S.OBJ.H .EQ 18
|
||||||
S.OBJ.pNEXT .EQ 20
|
S.OBJ.pChilds .EQ 20
|
||||||
*
|
S.OBJ.pNext .EQ 22
|
||||||
*
|
*
|
||||||
S.OBJ .EQ 24
|
S.OBJ .EQ 24
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -149,7 +147,7 @@ S.WND.S.HASMBAR .EQ %00000010
|
||||||
S.WND.S.HASSBAR .EQ %00000100
|
S.WND.S.HASSBAR .EQ %00000100
|
||||||
S.WND.S.MAXIMIZED .EQ %00001000
|
S.WND.S.MAXIMIZED .EQ %00001000
|
||||||
S.WND.S.MINIMIZED .EQ %00010000
|
S.WND.S.MINIMIZED .EQ %00010000
|
||||||
S.WND.S.ACTIVE .EQ %01000000
|
S.WND.S.ACTIVE .EQ %00100000
|
||||||
*
|
*
|
||||||
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
|
||||||
|
@ -163,24 +161,24 @@ S.WND.hPTR .EQ S.OBJ+16
|
||||||
*
|
*
|
||||||
* private
|
* private
|
||||||
*
|
*
|
||||||
S.WND.TitleX1 .EQ S.OBJ+18
|
S.WND.TBarY2 .EQ S.OBJ+20
|
||||||
S.WND.TitleX2 .EQ S.OBJ+20
|
S.WND.MBarY1 .EQ S.OBJ+22
|
||||||
* S.WND.TBarY1 .EQ S.OBJ.X1
|
S.WND.MBarY2 .EQ S.OBJ+24
|
||||||
S.WND.TBarY2 .EQ S.OBJ+22
|
S.WND.SBarY1 .EQ S.OBJ+26
|
||||||
S.WND.MBarY1 .EQ S.OBJ+24
|
*
|
||||||
S.WND.MBarY2 .EQ S.OBJ+26
|
S.WND.InnerX1 .EQ S.OBJ+28
|
||||||
S.WND.InnerY1 .EQ S.OBJ+28
|
S.WND.InnerY1 .EQ S.OBJ+30
|
||||||
S.WND.InnerY2 .EQ S.OBJ+30
|
S.WND.InnerX2 .EQ S.OBJ+32
|
||||||
S.WND.SBarY1 .EQ S.OBJ+32
|
S.WND.InnerY2 .EQ S.OBJ+34
|
||||||
S.WND.InnerX2 .EQ S.OBJ+34
|
|
||||||
S.WND.InnerW .EQ S.OBJ+36
|
S.WND.InnerW .EQ S.OBJ+36
|
||||||
S.WND.InnerH .EQ S.OBJ+38
|
S.WND.InnerH .EQ S.OBJ+38
|
||||||
|
*
|
||||||
S.WND.DocW .EQ S.OBJ+40
|
S.WND.DocW .EQ S.OBJ+40
|
||||||
S.WND.DocH .EQ S.OBJ+42
|
S.WND.DocH .EQ S.OBJ+42
|
||||||
S.WND.DocX .EQ S.OBJ+44
|
S.WND.DocX .EQ S.OBJ+44
|
||||||
S.WND.DocY .EQ S.OBJ+46
|
S.WND.DocY .EQ S.OBJ+46
|
||||||
S.WND.fPaint .EQ S.OBJ+48
|
S.WND.fPaint .EQ S.OBJ+48
|
||||||
S.WND.pChilds .EQ S.OBJ+50
|
*
|
||||||
*
|
*
|
||||||
S.WND .EQ S.OBJ+52
|
S.WND .EQ S.OBJ+52
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -221,10 +219,11 @@ S.MITEM.ID .EQ 10
|
||||||
*
|
*
|
||||||
S.MITEM .EQ 12
|
S.MITEM .EQ 12
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.BUT.F.DISABLED .EQ %00000010
|
*S.BUT.F.DISABLED .EQ %00000010
|
||||||
|
S.BUT.F.NOLEAVE .EQ %00000010
|
||||||
S.BUT.F.NOSPACE .EQ %00000001
|
S.BUT.F.NOSPACE .EQ %00000001
|
||||||
*
|
*
|
||||||
S.BUT.S.PUSHED .EQ %10000000
|
S.BUT.S.SELECTED .EQ %10000000
|
||||||
*
|
*
|
||||||
S.BUT.pICON .EQ S.OBJ
|
S.BUT.pICON .EQ S.OBJ
|
||||||
S.BUT.pTEXT .EQ S.OBJ+2
|
S.BUT.pTEXT .EQ S.OBJ+2
|
||||||
|
@ -234,14 +233,23 @@ S.BUT.ID .EQ S.OBJ+6
|
||||||
*
|
*
|
||||||
S.BUT .EQ S.OBJ+8
|
S.BUT .EQ S.OBJ+8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
S.LABEL.pTEXT .EQ S.OBJ
|
||||||
|
*
|
||||||
|
S.LABEL .EQ S.OBJ+2
|
||||||
|
*--------------------------------------
|
||||||
S.TEXT.F.DISABLED .EQ %10000000
|
S.TEXT.F.DISABLED .EQ %10000000
|
||||||
*
|
*
|
||||||
S.TEXT.hBM .EQ S.OBJ
|
S.TEXT.hBM .EQ S.OBJ
|
||||||
S.TEXT.TEXTX .EQ S.OBJ+2
|
S.TEXT.TEXTX .EQ S.OBJ+2
|
||||||
S.TEXT.TEXTY .EQ S.OBJ+4
|
S.TEXT.TEXTY .EQ S.OBJ+4
|
||||||
S.TEXT.TEXTLEN .EQ S.OBJ+6
|
S.TEXT.TEXTLEN .EQ S.OBJ+6
|
||||||
S.TEXT.TEXT .EQ S.OBJ+8
|
S.TEXT.pTEXT .EQ S.OBJ+8
|
||||||
* ...
|
*
|
||||||
|
S.TEXT .EQ S.OBJ+10
|
||||||
|
*--------------------------------------
|
||||||
|
S.BITMAP.pBM .EQ S.OBJ+4
|
||||||
|
*
|
||||||
|
S.BITMAP .EQ S.OBJ+6
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE inc/libgui.i
|
SAVE inc/libgui.i
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
|
|
||||||
#define C_BLACK 0
|
#define C_BLACK ((void *)0)
|
||||||
#define C_WHITE 255
|
#define C_WHITE ((void *)255)
|
||||||
#define pC_WHITE ((void *)255)
|
|
||||||
|
|
||||||
#define PTR_T_ARROW 0
|
#define PTR_T_ARROW 0
|
||||||
#define PTR_T_MOVE 2
|
#define PTR_T_MOVE 2
|
||||||
|
@ -11,7 +10,7 @@ NEW
|
||||||
#define PTR_T_RESIZEY 6
|
#define PTR_T_RESIZEY 6
|
||||||
#define PTR_T_RESIZEXY1 8
|
#define PTR_T_RESIZEXY1 8
|
||||||
#define PTR_T_RESIZEXY2 10
|
#define PTR_T_RESIZEXY2 10
|
||||||
#define PTR_T_CROSS 12
|
#define PTR_T_CROSS ((void *)12)
|
||||||
#define PTR_T_TEXT 14
|
#define PTR_T_TEXT 14
|
||||||
#define PTR_T_WAIT 16
|
#define PTR_T_WAIT 16
|
||||||
|
|
||||||
|
|
|
@ -177,41 +177,63 @@ BM.Down.AND .DA #%1111111
|
||||||
.DA #%1110111
|
.DA #%1110111
|
||||||
.DA #%1111111
|
.DA #%1111111
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
BM.Checked .DA #S.BM.F.BBP1
|
||||||
|
.DA #1 RowBytes
|
||||||
|
.DA 7 W
|
||||||
|
.DA 7 Y
|
||||||
|
.DA BM.Checked.AND-BM.Checked
|
||||||
|
|
||||||
|
.DA #%0000000
|
||||||
|
.DA #%0100000
|
||||||
|
.DA #%0101000
|
||||||
|
.DA #%0010000
|
||||||
|
.DA #%0001000
|
||||||
|
.DA #%0001000
|
||||||
|
.DA #%0000000
|
||||||
|
|
||||||
|
BM.Checked.AND .DA #%1111111
|
||||||
|
.DA #%1111111
|
||||||
|
.DA #%1111111
|
||||||
|
.DA #%1111111
|
||||||
|
.DA #%1111111
|
||||||
|
.DA #%1111111
|
||||||
|
.DA #%1111111
|
||||||
|
*--------------------------------------
|
||||||
BM.Info .DA #S.BM.F.BBP4
|
BM.Info .DA #S.BM.F.BBP4
|
||||||
.DA #4 RowBytes
|
.DA #4 RowBytes
|
||||||
.DA 28 W
|
.DA 32 W
|
||||||
.DA 14 H
|
.DA 14 H
|
||||||
.DA BM.INFO.AND-BM.INFO
|
.DA BM.Info.AND-BM.Info
|
||||||
|
|
||||||
.HS 00000000
|
.HX 00000000
|
||||||
.HS 00000000
|
.HX 00022000
|
||||||
.HS 00000000
|
.HX 00222200
|
||||||
.HS 00000000
|
.HX 002FF200
|
||||||
.HS 0BBBBB00
|
.HX 022FF220
|
||||||
.HS 0BBBBB00
|
.HX 02222220
|
||||||
.HS 0BBBBB00
|
.HX 02FFFF20
|
||||||
.HS 0BBBBB00
|
.HX 022FF220
|
||||||
.HS 0BBBBB00
|
.HX 022FF220
|
||||||
.HS 0BBBBB00
|
.HX 02FFFF20
|
||||||
.HS 00000000
|
.HX 00222200
|
||||||
.HS 00000000
|
.HX 00222200
|
||||||
.HS 00000000
|
.HX 00022000
|
||||||
.HS 00000000
|
.HX 00000000
|
||||||
|
|
||||||
BM.Info.AND .HS FFF0FFF0
|
BM.Info.AND .HX FFF00FFF
|
||||||
.HS FF000FF0
|
.HX FF0000FF
|
||||||
.HS FF000FF0
|
.HX F000000F
|
||||||
.HS F00000F0
|
.HX F000000F
|
||||||
.HS F00000F0
|
.HX 00000000
|
||||||
.HS 00000000
|
.HX 00000000
|
||||||
.HS 00000000
|
.HX 00000000
|
||||||
.HS 00000000
|
.HX 00000000
|
||||||
.HS 00000000
|
.HX 00000000
|
||||||
.HS F00000F0
|
.HX 00000000
|
||||||
.HS F00000F0
|
.HX F000000F
|
||||||
.HS FF0000F0
|
.HX F000000F
|
||||||
.HS FF000FF0
|
.HX FF0000FF
|
||||||
.HS FFF0FFF0
|
.HX FFF00FFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libgui.g.bm
|
SAVE usr/src/lib/libgui.g.bm
|
||||||
|
|
|
@ -3,7 +3,6 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
hSYSFON .BS 1
|
hSYSFON .BS 1
|
||||||
hSYSFONB .BS 1
|
hSYSFONB .BS 1
|
||||||
SYSFON.Hm1 .BS 1
|
|
||||||
SYSFON.H .BS 1
|
SYSFON.H .BS 1
|
||||||
SYSFON.Hp1 .BS 1
|
SYSFON.Hp1 .BS 1
|
||||||
SYSFON.Hp2 .BS 1
|
SYSFON.Hp2 .BS 1
|
||||||
|
|
|
@ -4,6 +4,9 @@ NEW
|
||||||
PTR.T .BS 1
|
PTR.T .BS 1
|
||||||
PTR.bVisible .BS 1
|
PTR.bVisible .BS 1
|
||||||
PTR.Pos .BS S.POINT
|
PTR.Pos .BS S.POINT
|
||||||
|
PTR.Rect .BS S.Rect
|
||||||
|
PTR.SaveBuf .BS 64
|
||||||
|
* .BS 3*14 3 bytes (16pix possibly shifted 0-6) x 14 lines max
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PTR.HotPoints .DA #0,#0 PTR.T.ARROW
|
PTR.HotPoints .DA #0,#0 PTR.T.ARROW
|
||||||
.DA #6,#6 PTR.T.MOVE
|
.DA #6,#6 PTR.T.MOVE
|
||||||
|
@ -20,8 +23,6 @@ PTR.HotPoints .DA #0,#0 PTR.T.ARROW
|
||||||
.DA #8,#7 PTR.Wait5
|
.DA #8,#7 PTR.Wait5
|
||||||
.DA #8,#7 PTR.Wait6
|
.DA #8,#7 PTR.Wait6
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PTR.SaveBuf .BS 64 16*4
|
|
||||||
*--------------------------------------
|
|
||||||
PTR.Arrow .DA #S.BM.F.BBP1
|
PTR.Arrow .DA #S.BM.F.BBP1
|
||||||
.DA #2 RowBytes
|
.DA #2 RowBytes
|
||||||
.DA 11 W
|
.DA 11 W
|
||||||
|
@ -56,32 +57,32 @@ PTR.Arrow.MASK .DA %111.11111100
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PTR.Move .DA #S.BM.F.BBP1
|
PTR.Move .DA #S.BM.F.BBP1
|
||||||
.DA #2 RowBytes
|
.DA #2 RowBytes
|
||||||
.DA 11 W
|
.DA 12 W
|
||||||
.DA 11 H
|
.DA 11 H
|
||||||
.DA PTR.Move.MASK-PTR.Move
|
.DA PTR.Move.MASK-PTR.Move
|
||||||
.DA %000.00100000
|
.DA %0000.001000000
|
||||||
.DA %000.01010000
|
.DA %0000.010100000
|
||||||
.DA %000.10001000
|
.DA %0000.100010000
|
||||||
.DA %001.00000100
|
.DA %0001.111111000
|
||||||
.DA %010.00000010
|
.DA %0010.100010100
|
||||||
.DA %100.00000001
|
.DA %0100.100010010
|
||||||
.DA %010.00000010
|
.DA %0010.100010100
|
||||||
.DA %001.00000100
|
.DA %0001.111111000
|
||||||
.DA %000.10001000
|
.DA %0000.100010000
|
||||||
.DA %000.01010000
|
.DA %0000.010100000
|
||||||
.DA %000.00100000
|
.DA %0000.001000000
|
||||||
PTR.Move.MASK
|
PTR.Move.MASK
|
||||||
.DA %111.11111111
|
.DA %1111.100011111
|
||||||
.DA %111.11111111
|
.DA %1111.000001111
|
||||||
.DA %111.11111111
|
.DA %1110.000000111
|
||||||
.DA %111.11111111
|
.DA %1100.000000011
|
||||||
.DA %111.11111111
|
.DA %1000.000000001
|
||||||
.DA %111.11111111
|
.DA %0000.000000000
|
||||||
.DA %111.11111111
|
.DA %1000.000000001
|
||||||
.DA %111.11111111
|
.DA %1100.000000011
|
||||||
.DA %111.11111111
|
.DA %1110.000000111
|
||||||
.DA %111.11111111
|
.DA %1111.000001111
|
||||||
.DA %111.11111111
|
.DA %1111.100011111
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PTR.ResizeX .DA #S.BM.F.BBP1
|
PTR.ResizeX .DA #S.BM.F.BBP1
|
||||||
.DA #2 RowBytes
|
.DA #2 RowBytes
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
*--------------------------------------
|
||||||
|
* NewBitmap (hWND, pBM, X, Y)
|
||||||
|
*--------------------------------------
|
||||||
|
BITMAP.New >PULLW DY
|
||||||
|
>PULLW DX
|
||||||
|
>PULLW ZPBMPtr
|
||||||
|
jsr OBJ.PullHWND
|
||||||
|
|
||||||
|
BITMAP.New.I lda #S.OBJ.T.BITMAP
|
||||||
|
jsr OBJ.New
|
||||||
|
bcs .9 ZPObjPtr
|
||||||
|
|
||||||
|
phx hOBJ
|
||||||
|
|
||||||
|
jsr OBJ.SetDXDYX1Y1
|
||||||
|
|
||||||
|
ldy #S.BITMAP.pBM
|
||||||
|
lda ZPBMPtr
|
||||||
|
sta (ZPObjPtr),y
|
||||||
|
iny
|
||||||
|
lda ZPBMPtr+1
|
||||||
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
|
pla hOBJ
|
||||||
|
jmp WND.AddChild.I
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
BITMAP.Enter
|
||||||
|
BITMAP.Leave
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* ZPWNDPtr
|
||||||
|
* ZPObjPtr
|
||||||
|
*--------------------------------------
|
||||||
|
BITMAP.fPaint jsr CB.GetObjX1Y1
|
||||||
|
|
||||||
|
ldy #S.BITMAP.pBM
|
||||||
|
jsr OBJ.GetPtr
|
||||||
|
|
||||||
|
jsr BM.YA2CB.cache
|
||||||
|
|
||||||
|
jsr CB.ToGlobal
|
||||||
|
jmp CB.Write
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/lib/libgui.s.bitmap
|
||||||
|
LOAD usr/src/lib/libgui.s
|
||||||
|
ASM
|
|
@ -1,9 +1,43 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BM.Get
|
BM.YA2CB.cache >STYA ZPBMPtr
|
||||||
*--------------------------------------
|
>STYA CB.Cache+S.CB.SrcPtr
|
||||||
*--------------------------------------
|
|
||||||
|
lda #S.CB.CMD.BITBLT
|
||||||
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
|
lda #S.CB.OP.MASK+S.CB.OP.ORA
|
||||||
|
sta CB.Cache+S.CB.OP
|
||||||
|
|
||||||
|
ldx #S.CB.M.MONO
|
||||||
|
lda (ZPBMPtr) #S.BM.F
|
||||||
|
cmp #S.BM.F.BBP4
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
lda #S.CB.OP.COLOR
|
||||||
|
tsb CB.Cache+S.CB.OP
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.X1
|
||||||
|
and PREFS.BestViewedX
|
||||||
|
sta CB.Cache+S.CB.X1
|
||||||
|
|
||||||
|
ldx #S.CB.M.C16
|
||||||
|
|
||||||
|
.1 stx CB.Cache+S.CB.M
|
||||||
|
|
||||||
|
jsr CB.ResetSrcXY
|
||||||
|
|
||||||
|
ldy #S.BM.W+3
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.2 lda (ZPBMPtr),y
|
||||||
|
sta CB.Cache+S.CB.SrcW,x
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libgui.s.bm
|
SAVE usr/src/lib/libgui.s.bm
|
||||||
|
|
|
@ -5,9 +5,9 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BUT.New lda #S.OBJ.T.BUT
|
BUT.New lda #S.OBJ.T.BUT
|
||||||
jsr OBJ.New
|
jsr OBJ.New
|
||||||
bcs .9
|
* bcs .9
|
||||||
|
|
||||||
* >STYA ZPObjPtr
|
phx hOBJ
|
||||||
|
|
||||||
ldy #S.OBJ.Y1
|
ldy #S.OBJ.Y1
|
||||||
jsr OBJ.PullWordAtY
|
jsr OBJ.PullWordAtY
|
||||||
|
@ -15,6 +15,9 @@ BUT.New lda #S.OBJ.T.BUT
|
||||||
ldy #S.OBJ.X1
|
ldy #S.OBJ.X1
|
||||||
jsr OBJ.PullWordAtY
|
jsr OBJ.PullWordAtY
|
||||||
|
|
||||||
|
ldy #S.BUT.ID
|
||||||
|
jsr OBJ.PullWordAtY
|
||||||
|
|
||||||
ldy #S.BUT.KEYMOD
|
ldy #S.BUT.KEYMOD
|
||||||
jsr OBJ.PullWordAtY
|
jsr OBJ.PullWordAtY
|
||||||
|
|
||||||
|
@ -74,7 +77,7 @@ BUT.New lda #S.OBJ.T.BUT
|
||||||
adc DX+1
|
adc DX+1
|
||||||
sta DX+1
|
sta DX+1
|
||||||
|
|
||||||
.3 lda #PREFS.XSeparator
|
.3 lda PREFS.XSeparator
|
||||||
asl
|
asl
|
||||||
* clc
|
* clc
|
||||||
adc DX
|
adc DX
|
||||||
|
@ -85,26 +88,95 @@ BUT.New lda #S.OBJ.T.BUT
|
||||||
iny
|
iny
|
||||||
sta (ZPObjPtr),y
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
.5
|
.5 lda SYSFON.Hp2
|
||||||
|
ldy #S.OBJ.H
|
||||||
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
|
>LDYA ZPObjPtr
|
||||||
|
jsr OBJ.SetX2Y2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.8 clc
|
.8 jsr WND.AddChild.I
|
||||||
|
|
||||||
|
pla hOBJ
|
||||||
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 >POP 14
|
.9 >POP 16
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BUT.Enter
|
BUT.Enter ldy #S.OBJ.S
|
||||||
*--------------------------------------
|
lda (ZPObjPtr),y
|
||||||
BUT.Draw
|
bpl BUT.Paint
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
BUT.Leave ldy #S.OBJ.S
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
bpl .8
|
||||||
|
|
||||||
|
bit #S.BUT.F.NOLEAVE
|
||||||
|
beq BUT.Paint
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BUT.Close
|
BUT.Close
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
BUT.Paint eor #S.BUT.S.SELECTED
|
||||||
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
|
jsr WND.GetInnerInClip
|
||||||
|
|
||||||
|
BUT.fPaint jsr CB.GetBuf
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
ldx #1
|
||||||
|
jsr DRAW.BordersAtX
|
||||||
|
|
||||||
|
ldx #C.WHITE
|
||||||
|
|
||||||
|
ldy #S.OBJ.S
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
* and #S.BUT.S.SELECTED
|
||||||
|
* beq .1
|
||||||
|
|
||||||
|
ldx #C.BLACK
|
||||||
|
|
||||||
|
.1 txa
|
||||||
|
jsr CB.FillRectMonoA
|
||||||
|
|
||||||
|
jsr CB.GetObjX1Y1X2Y2
|
||||||
|
|
||||||
|
jsr CB.Cache2CBBufG
|
||||||
|
|
||||||
|
ldy #S.BUT.pTEXT
|
||||||
|
jsr OBJ.GetPropAtY
|
||||||
|
ldx hSYSFON
|
||||||
|
jsr FON.GetTextSize
|
||||||
|
|
||||||
|
jsr CB.SrcWCenterH
|
||||||
|
|
||||||
|
jsr CB.IncY1
|
||||||
|
|
||||||
|
ldy #S.BUT.pTEXT
|
||||||
|
jsr OBJ.GetPropAtY
|
||||||
|
ldx hSYSFON
|
||||||
|
jsr DRAW.YAText
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.8 jmp CB.FlushBuf
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libgui.s.but
|
SAVE usr/src/lib/libgui.s.but
|
||||||
LOAD usr/src/lib/libgui.s
|
LOAD usr/src/lib/libgui.s
|
||||||
|
|
|
@ -1,27 +1,6 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CB.InitCacheA sta CB.Cache+S.CB.CMD
|
|
||||||
|
|
||||||
ldx #S.CB-1
|
|
||||||
|
|
||||||
.1 stz CB.Cache,x
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CB.GetInCache >STYA .1+1
|
|
||||||
|
|
||||||
ldx #S.CB-1
|
|
||||||
|
|
||||||
.1 lda $ffff,x SELF MODIFIED
|
|
||||||
sta CB.Cache,x
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CB.GetWndYCacheX
|
CB.GetWndYCacheX
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
sta CB.Cache,x
|
sta CB.Cache,x
|
||||||
|
@ -30,6 +9,32 @@ CB.GetWndYCacheX
|
||||||
sta CB.Cache+1,x
|
sta CB.Cache+1,x
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CB.SwapX1X2 ldx CB.Cache+S.CB.X1
|
||||||
|
ldy CB.Cache+S.CB.X1+1
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.X2
|
||||||
|
sta CB.Cache+S.CB.X1
|
||||||
|
lda CB.Cache+S.CB.X2+1
|
||||||
|
sta CB.Cache+S.CB.X1+1
|
||||||
|
|
||||||
|
stx CB.Cache+S.CB.X2
|
||||||
|
sty CB.Cache+S.CB.X2+1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CB.SwapY1Y2 ldx CB.Cache+S.CB.Y1
|
||||||
|
ldy CB.Cache+S.CB.Y1+1
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.Y2
|
||||||
|
sta CB.Cache+S.CB.Y1
|
||||||
|
lda CB.Cache+S.CB.Y2+1
|
||||||
|
sta CB.Cache+S.CB.Y1+1
|
||||||
|
|
||||||
|
stx CB.Cache+S.CB.Y2
|
||||||
|
sty CB.Cache+S.CB.Y2+1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CB.BorderLineH lda #S.CB.CMD.HLINE
|
CB.BorderLineH lda #S.CB.CMD.HLINE
|
||||||
sta CB.Cache+S.CB.CMD
|
sta CB.Cache+S.CB.CMD
|
||||||
lda #S.CB.OP.SET
|
lda #S.CB.OP.SET
|
||||||
|
@ -53,12 +58,115 @@ CB.FillRectMonoA
|
||||||
sta CB.Cache+S.CB.M
|
sta CB.Cache+S.CB.M
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CB.PullY2X2Y1X1 ldx #7
|
||||||
|
bra CB.PullX
|
||||||
|
|
||||||
|
CB.PullY1X1 ldx #3
|
||||||
|
|
||||||
|
CB.PullX >PULLA
|
||||||
|
sta CB.Cache+S.CB.X1-1,x
|
||||||
|
>PULLA
|
||||||
|
sta CB.Cache+S.CB.X1,x
|
||||||
|
dex
|
||||||
|
dex
|
||||||
|
bpl CB.PullX
|
||||||
|
|
||||||
|
rts
|
||||||
|
**--------------------------------------
|
||||||
|
CB.X2ToX1 ldy CB.Cache+S.CB.X2
|
||||||
|
lda CB.Cache+S.CB.X2+1
|
||||||
|
sty CB.Cache+S.CB.X1
|
||||||
|
sta CB.Cache+S.CB.X1+1
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CB.AddA2X1 clc
|
||||||
|
adc CB.Cache+S.CB.X1
|
||||||
|
sta CB.Cache+S.CB.X1
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
inc CB.Cache+S.CB.X1+1
|
||||||
|
|
||||||
|
.1 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CB.IncY1 inc CB.Cache+S.CB.Y1
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
inc CB.Cache+S.CB.Y1+1
|
||||||
|
|
||||||
|
.1 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CB.DecY2 lda CB.Cache+S.CB.Y2
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
dec CB.Cache+S.CB.Y2+1
|
||||||
|
|
||||||
|
.1 dec CB.Cache+S.CB.Y2
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CB.GetObjX1Y1 ldy #S.OBJ.X1+3
|
||||||
|
ldx #3
|
||||||
|
bra CB.GetObjXY
|
||||||
|
*--------------------------------------
|
||||||
|
CB.GetObjX1Y1X2Y2
|
||||||
|
ldy #S.OBJ.X1+7
|
||||||
|
ldx #7
|
||||||
|
|
||||||
|
CB.GetObjXY lda (ZPObjPtr),y
|
||||||
|
sta CB.Cache+S.CB.X1,x
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl CB.GetObjXY
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CB.GetObjSrcWH ldy #S.OBJ.W+3 W,H
|
||||||
|
ldx #3
|
||||||
|
|
||||||
|
.1 lda (ZPObjPtr),y
|
||||||
|
sta CB.Cache+S.CB.SrcW,x
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CB.ResetSrcXY ldx #4
|
||||||
|
|
||||||
|
.1 stz CB.Cache+S.CB.SrcX-1,x
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CB.SrcWCenterH ldy #S.OBJ.W
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
sec
|
||||||
|
sbc CB.Cache+S.CB.SrcW
|
||||||
|
pha
|
||||||
|
iny
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
sbc CB.Cache+S.CB.SrcW+1
|
||||||
|
lsr
|
||||||
|
tax
|
||||||
|
pla
|
||||||
|
ror
|
||||||
|
clc
|
||||||
|
adc CB.Cache+S.CB.X1
|
||||||
|
sta CB.Cache+S.CB.X1
|
||||||
|
|
||||||
|
txa
|
||||||
|
adc CB.Cache+S.CB.X1+1
|
||||||
|
sta CB.Cache+S.CB.X1+1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CB.GetBuf clc
|
CB.GetBuf clc
|
||||||
|
|
||||||
ldx hCBBuf
|
ldx hCBBuf
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
>LDYAI 512
|
>LDYAI 1024
|
||||||
>SYSCALL2 GetMem
|
>SYSCALL2 GetMem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -67,82 +175,86 @@ CB.GetBuf clc
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CB.Cache2CBBuf
|
CB.Cache2CBBufG jsr CB.ToGlobal
|
||||||
lda CB.Cache
|
*--------------------------------------
|
||||||
|
CB.Cache2CBBuf lda CB.Cache
|
||||||
lsr
|
lsr
|
||||||
tax
|
tax
|
||||||
ldy CB.CmdLen-1,x
|
ldy CB.CmdLen-1,x
|
||||||
|
|
||||||
ldx #0
|
.1 lda CB.Cache,y
|
||||||
|
sta (ZPCBBufPtr),y
|
||||||
.1 lda CB.Cache,x
|
|
||||||
sta (ZPCBBufPtr)
|
|
||||||
inc ZPCBBufPtr
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
inc ZPCBBufPtr+1
|
|
||||||
|
|
||||||
.2 inx
|
|
||||||
dey
|
dey
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Y,A = Target Object
|
CB.BufNext lda (ZPCBBufPtr) Get Cmd
|
||||||
*--------------------------------------
|
|
||||||
CB.FlushBufToYA jsr CLIP.GetRect
|
|
||||||
|
|
||||||
lda hCBBuf
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
sta (ZPCBBufPtr)
|
|
||||||
|
|
||||||
lda hCBBuf
|
|
||||||
>SYSCALL2 GetMemPtr
|
|
||||||
>STYA ZPCBBufPtr
|
|
||||||
|
|
||||||
jsr PTR.Disable
|
|
||||||
*--------------------------------------
|
|
||||||
.2 lda (ZPCBBufPtr)
|
|
||||||
beq .7
|
|
||||||
|
|
||||||
>LDYA ZPCBBufPtr
|
|
||||||
jsr CB.GetInCache A = CB.CMD
|
|
||||||
|
|
||||||
cmp #S.CB.CMD.DRAWTEXT2
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD
|
|
||||||
sta CB.Cache+S.CB.CMD
|
|
||||||
jsr CB.GFXWrite
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jsr CLIP.CB.Cache
|
|
||||||
bcs .3
|
|
||||||
|
|
||||||
jsr CB.GFXWrite
|
|
||||||
|
|
||||||
.3 lda CB.Cache+S.CB.SrcPtr
|
|
||||||
>SYSCALL2 FreeStkObj
|
|
||||||
bra .5
|
|
||||||
|
|
||||||
.4 jsr CLIP.CB.Cache
|
|
||||||
bcs .5
|
|
||||||
|
|
||||||
jsr CB.GFXWrite
|
|
||||||
|
|
||||||
.5 lda (ZPCBBufPtr) Get Cmd
|
|
||||||
lsr
|
lsr
|
||||||
tax
|
tax
|
||||||
lda CB.CmdLen-1,x
|
lda CB.CmdLen-1,x
|
||||||
sec +1
|
sec +1
|
||||||
adc ZPCBBufPtr
|
adc ZPCBBufPtr
|
||||||
sta ZPCBBufPtr
|
sta ZPCBBufPtr
|
||||||
bcc .2
|
bcc .1
|
||||||
|
|
||||||
inc ZPCBBufPtr+1
|
inc ZPCBBufPtr+1
|
||||||
bra .2
|
|
||||||
|
.1 rts
|
||||||
|
*--------------------------------------
|
||||||
|
* CLIP.Rect = Target Object
|
||||||
|
*--------------------------------------
|
||||||
|
CB.Write jsr PTR.Disable
|
||||||
|
jsr CB.GFXWriteClip
|
||||||
|
.8 jmp PTR.Enable
|
||||||
|
*--------------------------------------
|
||||||
|
* Y,A = Target Object
|
||||||
|
*--------------------------------------
|
||||||
|
CB.FlushBufToYA jsr CLIP.GetRect
|
||||||
|
|
||||||
|
CB.FlushBuf ldx hCBBuf
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
jsr PTR.Disable
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta (ZPCBBufPtr)
|
||||||
|
|
||||||
|
lda hCBBuf
|
||||||
|
>SYSCALL2 GetMemPtr
|
||||||
|
>STYA ZPCBBufPtr
|
||||||
|
*--------------------------------------
|
||||||
|
.1 lda (ZPCBBufPtr) Get Cmd
|
||||||
|
beq .7
|
||||||
|
|
||||||
|
lsr
|
||||||
|
tax
|
||||||
|
ldy CB.CmdLen-1,x
|
||||||
|
|
||||||
|
.2 lda (ZPCBBufPtr),y
|
||||||
|
sta CB.Cache,y
|
||||||
|
dey
|
||||||
|
bpl .2
|
||||||
|
|
||||||
|
* lda (ZPCBBufPtr) A = CB.CMD
|
||||||
|
|
||||||
|
cmp #S.CB.CMD.DRAWTEXT2
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD
|
||||||
|
sta CB.Cache+S.CB.CMD
|
||||||
|
ldx #0 Select CB.Cache
|
||||||
|
jsr CB.GFXWriteX Direct Write (no clip)
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr CB.GFXWriteClip
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.SrcPtr
|
||||||
|
>SYSCALL2 FreeStkObj
|
||||||
|
bra .5
|
||||||
|
*--------------------------------------
|
||||||
|
.4 jsr CB.GFXWriteClip
|
||||||
|
|
||||||
|
.5 jsr CB.BufNext
|
||||||
|
bra .1
|
||||||
|
|
||||||
.7 lda hCBBuf
|
.7 lda hCBBuf
|
||||||
stz hCBBuf
|
stz hCBBuf
|
||||||
|
@ -153,55 +265,13 @@ CB.FlushBufToYA jsr CLIP.GetRect
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CB.GFXWritePtr jsr PTR.Disable
|
CB.ToGlobal lda ZPWNDPtr
|
||||||
jsr CB.GFXWrite
|
ldx ZPWNDPtr+1
|
||||||
jmp PTR.Enable
|
|
||||||
*--------------------------------------
|
|
||||||
CB.GFXWrite >PUSHB WND.Screen+S.OBJ.hPARENT
|
|
||||||
>PUSHBI IOCTL.WRITE
|
|
||||||
>PUSHW L.CB.Cache
|
|
||||||
>SYSCALL2 IOCTL
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CB.SetX2Y2 lda CB.Cache+S.CB.SrcW
|
|
||||||
clc
|
|
||||||
adc CB.Cache+S.CB.X1
|
|
||||||
pha
|
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcW+1
|
.1 sta ZPPtr1
|
||||||
adc CB.Cache+S.CB.X1+1
|
stx ZPPtr1+1
|
||||||
tax
|
|
||||||
pla
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
dex
|
ldy #S.WND.InnerX1
|
||||||
|
|
||||||
.2 dec
|
|
||||||
sta CB.Cache+S.CB.X2
|
|
||||||
stx CB.Cache+S.CB.X2+1
|
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcH
|
|
||||||
|
|
||||||
clc
|
|
||||||
adc CB.Cache+S.CB.Y1
|
|
||||||
pha
|
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcH+1
|
|
||||||
adc CB.Cache+S.CB.Y1+1
|
|
||||||
tax
|
|
||||||
pla
|
|
||||||
bne .3
|
|
||||||
|
|
||||||
dex
|
|
||||||
|
|
||||||
.3 dec
|
|
||||||
sta CB.Cache+S.CB.Y2
|
|
||||||
stx CB.Cache+S.CB.Y2+1
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CB.ToGlobal >STYA ZPPtr1
|
|
||||||
|
|
||||||
.1 ldy #S.OBJ.X1
|
|
||||||
ldx #S.CB.X1
|
ldx #S.CB.X1
|
||||||
jsr CB.AddPtr1YtoCBX
|
jsr CB.AddPtr1YtoCBX
|
||||||
|
|
||||||
|
@ -209,7 +279,7 @@ CB.ToGlobal >STYA ZPPtr1
|
||||||
ldx #S.CB.Y1
|
ldx #S.CB.Y1
|
||||||
jsr CB.AddPtr1YtoCBX
|
jsr CB.AddPtr1YtoCBX
|
||||||
|
|
||||||
ldy #S.OBJ.X1
|
ldy #S.WND.InnerX1
|
||||||
ldx #S.CB.X2
|
ldx #S.CB.X2
|
||||||
jsr CB.AddPtr1YtoCBX
|
jsr CB.AddPtr1YtoCBX
|
||||||
|
|
||||||
|
@ -224,9 +294,6 @@ CB.ToGlobal >STYA ZPPtr1
|
||||||
tax
|
tax
|
||||||
dey
|
dey
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
|
|
||||||
sta ZPPtr1
|
|
||||||
stx ZPPtr1+1
|
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
@ -243,6 +310,21 @@ CB.AddPtr1YtoCBX
|
||||||
sta CB.Cache+1,x
|
sta CB.Cache+1,x
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* CB.Cache -> CLIP.Cache
|
||||||
|
*--------------------------------------
|
||||||
|
CB.GFXWriteClip jsr CLIP.CB.Cache
|
||||||
|
bcs CB.GFXWrite.9
|
||||||
|
|
||||||
|
CB.GFXWrite ldx #2 Select CLIP.Cache
|
||||||
|
*--------------------------------------
|
||||||
|
* X=0:CB.Cache, X=2:CLIP.Cache
|
||||||
|
*--------------------------------------
|
||||||
|
CB.GFXWriteX >PUSHB WND.Screen+S.OBJ.hPARENT
|
||||||
|
>PUSHBI IOCTL.WRITE
|
||||||
|
>PUSHW L.CB.Cache,x
|
||||||
|
>SYSCALL2 IOCTL
|
||||||
|
CB.GFXWrite.9 rts
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libgui.s.cb
|
SAVE usr/src/lib/libgui.s.cb
|
||||||
LOAD usr/src/lib/libgui.s
|
LOAD usr/src/lib/libgui.s
|
||||||
|
|
|
@ -1,15 +1,36 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CLIP.GetRect >STYA .1+1
|
||||||
|
|
||||||
|
ldy #S.OBJ.Y2+1
|
||||||
|
ldx #7
|
||||||
|
|
||||||
|
.1 lda $ffff,y
|
||||||
|
sta CLIP.Rect,x
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
* CLIPPING Functions:
|
* CLIPPING Functions:
|
||||||
* In:
|
* In:
|
||||||
* Target Clipping Region in CLIP.Rect
|
* Target Clipping Region in CLIP.Rect
|
||||||
* YA = Control Block
|
* YA = Control Block
|
||||||
* Out:
|
* Out:
|
||||||
* CC : CB.Cache clipped & visible
|
* CC : CLIP.Cache clipped & visible
|
||||||
* CS : CB.Cache invisible
|
* CS : CLIP.Cache invisible
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CLIP.CB.Cache lda CB.Cache+S.CB.CMD
|
CLIP.CB.Cache ldx #S.CB
|
||||||
|
|
||||||
|
.1 lda CB.Cache-1,x
|
||||||
|
sta CLIP.Cache-1,x
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
* lda CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
and #$7F remove S.CB.CMD.OSD
|
and #$7F remove S.CB.CMD.OSD
|
||||||
tax
|
tax
|
||||||
jmp (J.CLIP-2,x)
|
jmp (J.CLIP-2,x)
|
||||||
|
@ -18,66 +39,68 @@ CLIP.Point
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CLIP.HLine >LDYA CB.Cache+S.CB.Y1
|
CLIP.HLine >LDYA CLIP.Cache+S.CB.Y1
|
||||||
>SCMPYA CLIP.Rect+S.RECT.Y2
|
>SCMPYA CLIP.Rect+S.RECT.Y2
|
||||||
bpl .9
|
bpl .9
|
||||||
|
|
||||||
>LDYA CB.Cache+S.CB.Y1
|
>LDYA CLIP.Cache+S.CB.Y1
|
||||||
>SCMPYA CLIP.Rect+S.RECT.Y1
|
>SCMPYA CLIP.Rect+S.RECT.Y1
|
||||||
bmi .9
|
bmi .9
|
||||||
|
|
||||||
>LDYA CLIP.Rect+S.RECT.X1
|
>LDYA CLIP.Rect+S.RECT.X1
|
||||||
>STYAIFGTR CB.Cache+S.CB.X1
|
>STYAIFGTR CLIP.Cache+S.CB.X1
|
||||||
|
|
||||||
>LDYA CLIP.Rect+S.RECT.X2
|
>LDYA CLIP.Rect+S.RECT.X2
|
||||||
>STYAIFLWR CB.Cache+S.CB.X2
|
>STYAIFLWR CLIP.Cache+S.CB.X2
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CLIP.VLine >LDYA CB.Cache+S.CB.X1
|
CLIP.VLine >LDYA CLIP.Cache+S.CB.X1
|
||||||
>SCMPYA CLIP.Rect+S.RECT.X2
|
>SCMPYA CLIP.Rect+S.RECT.X2
|
||||||
bpl .9
|
bpl .9
|
||||||
|
|
||||||
>LDYA CB.Cache+S.CB.X1
|
>LDYA CLIP.Cache+S.CB.X1
|
||||||
>SCMPYA CLIP.Rect+S.RECT.X1
|
>SCMPYA CLIP.Rect+S.RECT.X1
|
||||||
bmi .9
|
|
||||||
|
|
||||||
>LDYA CLIP.Rect+S.RECT.Y1
|
bpl CLIP.Y1Y2
|
||||||
>STYAIFGTR CB.Cache+S.CB.Y1
|
|
||||||
|
* bmi .9
|
||||||
|
|
||||||
>LDYA CLIP.Rect+S.RECT.Y2
|
* >LDYA CLIP.Rect+S.RECT.Y1
|
||||||
>STYAIFLWR CB.Cache+S.CB.Y2
|
* >STYAIFGTR CLIP.Cache+S.CB.Y1
|
||||||
|
|
||||||
clc
|
* >LDYA CLIP.Rect+S.RECT.Y2
|
||||||
rts
|
* >STYAIFLWR CLIP.Cache+S.CB.Y2
|
||||||
|
|
||||||
|
* clc
|
||||||
|
* rts
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CLIP.Rectangle jsr CLIP.Rect.Overlap
|
CLIP.Rectangle jsr CLIP.Rect.Overlap
|
||||||
bcs .9
|
bcs CLIP.Text.RTS
|
||||||
|
|
||||||
>LDYA CLIP.Rect+S.RECT.X1
|
>LDYA CLIP.Rect+S.RECT.X1
|
||||||
>STYAIFGTR CB.Cache+S.CB.X1
|
>STYAIFGTR CLIP.Cache+S.CB.X1
|
||||||
|
|
||||||
>LDYA CLIP.Rect+S.RECT.X2
|
>LDYA CLIP.Rect+S.RECT.X2
|
||||||
>STYAIFLWR CB.Cache+S.CB.X2
|
>STYAIFLWR CLIP.Cache+S.CB.X2
|
||||||
|
|
||||||
>LDYA CLIP.Rect+S.RECT.Y1
|
CLIP.Y1Y2 >LDYA CLIP.Rect+S.RECT.Y1
|
||||||
>STYAIFGTR CB.Cache+S.CB.Y1
|
>STYAIFGTR CLIP.Cache+S.CB.Y1
|
||||||
|
|
||||||
>LDYA CLIP.Rect+S.RECT.Y2
|
>LDYA CLIP.Rect+S.RECT.Y2
|
||||||
>STYAIFLWR CB.Cache+S.CB.Y2
|
>STYAIFLWR CLIP.Cache+S.CB.Y2
|
||||||
|
|
||||||
clc
|
* clc
|
||||||
.9 rts
|
* rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CLIP.Text
|
CLIP.Text clc
|
||||||
clc
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
CLIP.Text.9 sec
|
CLIP.Text.9 sec
|
||||||
|
@ -85,137 +108,146 @@ CLIP.Text.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* BitBlt :
|
* BitBlt :
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CLIP.BitBlt jsr CB.SetX2Y2 set X2=X1+W-1 Y2=X1+H-1
|
CLIP.BitBlt jsr CLIP.SetX2Y2
|
||||||
|
|
||||||
jsr CLIP.Rect.Overlap
|
jsr CLIP.Rect.Overlap
|
||||||
bcs CLIP.Text.RTS
|
bcs CLIP.Text.RTS
|
||||||
|
|
||||||
lda CLIP.Rect+S.RECT.X1
|
ldx #S.RECT select CLIP.Rect
|
||||||
sec
|
|
||||||
sbc CB.Cache+S.CB.X1
|
|
||||||
sta DX
|
|
||||||
|
|
||||||
lda CLIP.Rect+S.RECT.X1+1
|
CLIP.BitBltX lda CLIP.Screen+S.RECT.X1,x
|
||||||
sbc CB.Cache+S.CB.X1+1
|
sec
|
||||||
sta DX+1
|
sbc CLIP.Cache+S.CB.X1
|
||||||
|
sta TmpW
|
||||||
|
|
||||||
|
lda CLIP.Screen+S.RECT.X1+1,x
|
||||||
|
sbc CLIP.Cache+S.CB.X1+1
|
||||||
|
sta TmpW+1
|
||||||
bvc .1
|
bvc .1
|
||||||
|
|
||||||
eor #$80
|
eor #$80
|
||||||
|
|
||||||
.1 bmi .2
|
.1 bmi .2
|
||||||
|
|
||||||
lda CB.Cache+S.CB.X1
|
lda CLIP.Cache+S.CB.X1
|
||||||
clc
|
clc
|
||||||
adc DX
|
adc TmpW
|
||||||
sta CB.Cache+S.CB.X1
|
sta CLIP.Cache+S.CB.X1
|
||||||
|
|
||||||
lda CB.Cache+S.CB.X1+1
|
lda CLIP.Cache+S.CB.X1+1
|
||||||
adc DX+1
|
adc TmpW+1
|
||||||
sta CB.Cache+S.CB.X1+1
|
sta CLIP.Cache+S.CB.X1+1
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcX
|
lda CLIP.Cache+S.CB.SrcX
|
||||||
clc
|
clc
|
||||||
adc DX
|
adc TmpW
|
||||||
sta CB.Cache+S.CB.SrcX
|
sta CLIP.Cache+S.CB.SrcX
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcX+1
|
lda CLIP.Cache+S.CB.SrcX+1
|
||||||
adc DX+1
|
adc TmpW+1
|
||||||
sta CB.Cache+S.CB.SrcX+1
|
sta CLIP.Cache+S.CB.SrcX+1
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcW
|
lda CLIP.Cache+S.CB.SrcW
|
||||||
sec
|
sec
|
||||||
sbc DX
|
sbc TmpW
|
||||||
sta CB.Cache+S.CB.SrcW
|
sta CLIP.Cache+S.CB.SrcW
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcW+1
|
lda CLIP.Cache+S.CB.SrcW+1
|
||||||
sbc DX+1
|
sbc TmpW+1
|
||||||
sta CB.Cache+S.CB.SrcW+1
|
sta CLIP.Cache+S.CB.SrcW+1
|
||||||
bcc CLIP.Text.9
|
bcc CLIP.Text.9
|
||||||
|
*--------------------------------------
|
||||||
.2 lda CB.Cache+S.CB.X2
|
.2 lda CLIP.Cache+S.CB.X2
|
||||||
sec
|
sec
|
||||||
sbc CLIP.Rect+S.RECT.X2
|
sbc CLIP.Screen+S.RECT.X2,x
|
||||||
sta DX
|
sta TmpW
|
||||||
|
|
||||||
lda CB.Cache+S.CB.X2+1
|
lda CLIP.Cache+S.CB.X2+1
|
||||||
sbc CLIP.Rect+S.RECT.X2+1
|
sbc CLIP.Screen+S.RECT.X2+1,x
|
||||||
sta DX+1
|
sta TmpW+1
|
||||||
bvc .3
|
bvc .3
|
||||||
|
|
||||||
eor #$80
|
eor #$80
|
||||||
|
|
||||||
.3 bmi .4
|
.3 bmi .4
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcW
|
lda CLIP.Cache+S.CB.SrcW
|
||||||
sec
|
sec
|
||||||
sbc DX
|
sbc TmpW
|
||||||
sta CB.Cache+S.CB.SrcW
|
sta CLIP.Cache+S.CB.SrcW
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcW+1
|
lda CLIP.Cache+S.CB.SrcW+1
|
||||||
sbc DX+1
|
sbc TmpW+1
|
||||||
sta CB.Cache+S.CB.SrcW+1
|
sta CLIP.Cache+S.CB.SrcW+1
|
||||||
bcc .9
|
bcc .9
|
||||||
|
*--------------------------------------
|
||||||
.4 lda CLIP.Rect+S.RECT.Y1
|
.4 lda CLIP.Screen+S.RECT.Y1,x
|
||||||
sec
|
sec
|
||||||
sbc CB.Cache+S.CB.Y1
|
sbc CLIP.Cache+S.CB.Y1
|
||||||
sta DX
|
sta TmpW
|
||||||
|
|
||||||
lda CLIP.Rect+S.RECT.Y1+1
|
lda CLIP.Screen+S.RECT.Y1+1,x
|
||||||
sbc CB.Cache+S.CB.Y1+1
|
sbc CLIP.Cache+S.CB.Y1+1
|
||||||
sta DX+1
|
sta TmpW+1
|
||||||
bvc .5
|
bvc .5
|
||||||
|
|
||||||
eor #$80
|
eor #$80
|
||||||
|
|
||||||
.5 bmi .6
|
.5 bmi .6
|
||||||
|
|
||||||
lda CB.Cache+S.CB.Y1
|
lda CLIP.Cache+S.CB.Y1
|
||||||
clc
|
clc
|
||||||
adc DX
|
adc TmpW
|
||||||
sta CB.Cache+S.CB.Y1
|
sta CLIP.Cache+S.CB.Y1
|
||||||
|
|
||||||
lda CB.Cache+S.CB.Y1+1
|
lda CLIP.Cache+S.CB.Y1+1
|
||||||
adc DX+1
|
adc TmpW+1
|
||||||
sta CB.Cache+S.CB.Y1+1
|
sta CLIP.Cache+S.CB.Y1+1
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcY
|
lda CLIP.Cache+S.CB.SrcY
|
||||||
clc
|
clc
|
||||||
adc DX
|
adc TmpW
|
||||||
sta CB.Cache+S.CB.SrcY
|
sta CLIP.Cache+S.CB.SrcY
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcY+1
|
lda CLIP.Cache+S.CB.SrcY+1
|
||||||
adc DX+1
|
adc TmpW+1
|
||||||
sta CB.Cache+S.CB.SrcY+1
|
sta CLIP.Cache+S.CB.SrcY+1
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcH
|
lda CLIP.Cache+S.CB.SrcH
|
||||||
sec
|
sec
|
||||||
sbc DX
|
sbc TmpW
|
||||||
sta CB.Cache+S.CB.SrcH
|
sta CLIP.Cache+S.CB.SrcH
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcH+1
|
lda CLIP.Cache+S.CB.SrcH+1
|
||||||
sbc DX+1
|
sbc TmpW+1
|
||||||
sta CB.Cache+S.CB.SrcH+1
|
sta CLIP.Cache+S.CB.SrcH+1
|
||||||
bcc .9
|
bcc .9
|
||||||
|
*--------------------------------------
|
||||||
.6 lda CB.Cache+S.CB.Y2
|
.6 lda CLIP.Cache+S.CB.Y2
|
||||||
sec
|
sec
|
||||||
sbc CLIP.Rect+S.RECT.Y2
|
sbc CLIP.Screen+S.RECT.Y2,x
|
||||||
sta DX
|
sta TmpW
|
||||||
|
|
||||||
lda CB.Cache+S.CB.Y2+1
|
lda CLIP.Cache+S.CB.Y2+1
|
||||||
sbc CLIP.Rect+S.RECT.Y2+1
|
sbc CLIP.Screen+S.RECT.Y2+1,x
|
||||||
sta DX+1
|
sta TmpW+1
|
||||||
bvc .7
|
bvc .7
|
||||||
|
|
||||||
eor #$80
|
eor #$80
|
||||||
|
|
||||||
.7 bmi .8
|
.7 bmi .8
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcH
|
lda CLIP.Cache+S.CB.SrcH
|
||||||
sec
|
sec
|
||||||
sbc DX
|
sbc TmpW
|
||||||
sta CB.Cache+S.CB.SrcH
|
sta CLIP.Cache+S.CB.SrcH
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcH+1
|
lda CLIP.Cache+S.CB.SrcH+1
|
||||||
sbc DX+1
|
sbc TmpW+1
|
||||||
sta CB.Cache+S.CB.SrcH+1
|
sta CLIP.Cache+S.CB.SrcH+1
|
||||||
bcc .9
|
bcc .9
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.99 rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
|
@ -309,12 +341,12 @@ CLIP.Line jsr CLIP.Line.EncodeP1
|
||||||
CLIP.Line.EncodeP1
|
CLIP.Line.EncodeP1
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
lda CB.Cache+S.CB.X1
|
lda CLIP.Cache+S.CB.X1
|
||||||
ldx CB.Cache+S.CB.X1+1
|
ldx CLIP.Cache+S.CB.X1+1
|
||||||
jsr CLIP.Line.EncodeX.AX
|
jsr CLIP.Line.EncodeX.AX
|
||||||
|
|
||||||
lda CB.Cache+S.CB.Y1
|
lda CLIP.Cache+S.CB.Y1
|
||||||
ldx CB.Cache+S.CB.Y1+1
|
ldx CLIP.Cache+S.CB.Y1+1
|
||||||
jsr CLIP.Line.EncodeY.AX
|
jsr CLIP.Line.EncodeY.AX
|
||||||
|
|
||||||
sty CLIP.Line.P1
|
sty CLIP.Line.P1
|
||||||
|
@ -323,12 +355,12 @@ CLIP.Line.EncodeP1
|
||||||
CLIP.Line.EncodeP2
|
CLIP.Line.EncodeP2
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
lda CB.Cache+S.CB.X2
|
lda CLIP.Cache+S.CB.X2
|
||||||
ldx CB.Cache+S.CB.X2+1
|
ldx CLIP.Cache+S.CB.X2+1
|
||||||
jsr CLIP.Line.EncodeX.AX
|
jsr CLIP.Line.EncodeX.AX
|
||||||
|
|
||||||
lda CB.Cache+S.CB.Y2
|
lda CLIP.Cache+S.CB.Y2
|
||||||
ldx CB.Cache+S.CB.Y2+1
|
ldx CLIP.Cache+S.CB.Y2+1
|
||||||
jsr CLIP.Line.EncodeY.AX
|
jsr CLIP.Line.EncodeY.AX
|
||||||
|
|
||||||
sty CLIP.Line.P2
|
sty CLIP.Line.P2
|
||||||
|
@ -340,11 +372,11 @@ CLIP.Line.EncodeX.AX
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
pla
|
pla
|
||||||
|
|
||||||
tya
|
tya
|
||||||
ora #CLIP.Line.LEFT
|
ora #CLIP.Line.LEFT
|
||||||
tay
|
tay
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 pla
|
.1 pla
|
||||||
|
@ -379,20 +411,52 @@ CLIP.Line.EncodeY.AX
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CLIP.SetX2Y2 ldx CLIP.Cache+S.CB.SrcW+1
|
||||||
|
lda CLIP.Cache+S.CB.SrcW
|
||||||
|
bne .3
|
||||||
|
|
||||||
|
dex
|
||||||
|
|
||||||
|
.3 dec
|
||||||
|
clc
|
||||||
|
adc CLIP.Cache+S.CB.X1
|
||||||
|
sta CLIP.Cache+S.CB.X2
|
||||||
|
|
||||||
|
txa
|
||||||
|
adc CLIP.Cache+S.CB.X1+1
|
||||||
|
sta CLIP.Cache+S.CB.X2+1
|
||||||
|
|
||||||
|
ldx CLIP.Cache+S.CB.SrcH+1
|
||||||
|
lda CLIP.Cache+S.CB.SrcH
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
dex
|
||||||
|
|
||||||
|
.4 dec
|
||||||
|
clc
|
||||||
|
adc CLIP.Cache+S.CB.Y1
|
||||||
|
sta CLIP.Cache+S.CB.Y2
|
||||||
|
|
||||||
|
txa
|
||||||
|
adc CLIP.Cache+S.CB.Y1+1
|
||||||
|
sta CLIP.Cache+S.CB.Y2+1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
CLIP.Rect.Overlap
|
CLIP.Rect.Overlap
|
||||||
>LDYA CB.Cache+S.CB.X1
|
>LDYA CLIP.Cache+S.CB.X1
|
||||||
>SCMPYA CLIP.Rect+S.RECT.X2
|
>SCMPYA CLIP.Rect+S.RECT.X2
|
||||||
bpl .9
|
bpl .9
|
||||||
|
|
||||||
>LDYA CB.Cache+S.CB.X2
|
>LDYA CLIP.Cache+S.CB.X2
|
||||||
>SCMPYA CLIP.Rect+S.RECT.X1
|
>SCMPYA CLIP.Rect+S.RECT.X1
|
||||||
bmi .9
|
bmi .9
|
||||||
|
|
||||||
>LDYA CB.Cache+S.CB.Y1
|
>LDYA CLIP.Cache+S.CB.Y1
|
||||||
>SCMPYA CLIP.Rect+S.RECT.Y2
|
>SCMPYA CLIP.Rect+S.RECT.Y2
|
||||||
bpl .9
|
bpl .9
|
||||||
|
|
||||||
>LDYA CB.Cache+S.CB.Y2
|
>LDYA CLIP.Cache+S.CB.Y2
|
||||||
>SCMPYA CLIP.Rect+S.RECT.Y1
|
>SCMPYA CLIP.Rect+S.RECT.Y1
|
||||||
bmi .9
|
bmi .9
|
||||||
|
|
||||||
|
@ -402,19 +466,6 @@ CLIP.Rect.Overlap
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CLIP.GetRect >STYA .1+1
|
|
||||||
|
|
||||||
ldy #S.OBJ.Y2+1
|
|
||||||
ldx #7
|
|
||||||
|
|
||||||
.1 lda $ffff,y
|
|
||||||
sta CLIP.Rect,x
|
|
||||||
dey
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libgui.s.clip
|
SAVE usr/src/lib/libgui.s.clip
|
||||||
LOAD usr/src/lib/libgui.s
|
LOAD usr/src/lib/libgui.s
|
||||||
|
|
|
@ -3,13 +3,16 @@ 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)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRAW.Line jsr DRAW.PullY2X2Y1X1
|
DRAW.Line jsr CB.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
|
||||||
|
|
||||||
jsr DRAW.PullInnerWND
|
jsr OBJ.PullHWND get dest window at ZPWNDPtr
|
||||||
|
jsr WND.GetInnerInClip
|
||||||
|
|
||||||
|
jsr CB.ToGlobal
|
||||||
|
|
||||||
lda CB.Cache+S.CB.X2
|
lda CB.Cache+S.CB.X2
|
||||||
sec
|
sec
|
||||||
sbc CB.Cache+S.CB.X1
|
sbc CB.Cache+S.CB.X1
|
||||||
|
@ -23,7 +26,15 @@ DRAW.Line jsr DRAW.PullY2X2Y1X1
|
||||||
ora DX
|
ora DX
|
||||||
bne .2 DX > 0...
|
bne .2 DX > 0...
|
||||||
|
|
||||||
lda #S.CB.CMD.VLINE DX=0 : VLINE Y1,Y2 At X1
|
ldx CB.Cache+S.CB.Y2
|
||||||
|
cpx CB.Cache+S.CB.Y1
|
||||||
|
lda CB.Cache+S.CB.Y2+1
|
||||||
|
sbc CB.Cache+S.CB.Y1+1
|
||||||
|
bcs .17
|
||||||
|
|
||||||
|
>SWAP16 CB.Cache+S.CB.Y1,CB.Cache+S.CB.Y2
|
||||||
|
|
||||||
|
.17 lda #S.CB.CMD.VLINE DX=0 : VLINE Y1,Y2 At X1
|
||||||
bra .20
|
bra .20
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.1 >SWAP16 CB.Cache+S.CB.X1,CB.Cache+S.CB.X2
|
.1 >SWAP16 CB.Cache+S.CB.X1,CB.Cache+S.CB.X2
|
||||||
|
@ -51,10 +62,7 @@ DRAW.Line jsr DRAW.PullY2X2Y1X1
|
||||||
|
|
||||||
.20 sta CB.Cache+S.CB.CMD
|
.20 sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
jsr CLIP.CB.Cache
|
jmp CB.Write
|
||||||
bcs .8
|
|
||||||
|
|
||||||
jmp CB.GFXWrite
|
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
@ -63,7 +71,7 @@ DRAW.Line jsr DRAW.PullY2X2Y1X1
|
||||||
lda #$ff
|
lda #$ff
|
||||||
sta IY set IY=-1
|
sta IY set IY=-1
|
||||||
|
|
||||||
.4
|
.4
|
||||||
* jsr CLIP.Line
|
* jsr CLIP.Line
|
||||||
* bcs .8
|
* bcs .8
|
||||||
|
|
||||||
|
@ -71,7 +79,8 @@ DRAW.Line 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 CB.GFXWrite
|
ldx #0 Select CB.Cache
|
||||||
|
jsr CB.GFXWriteX
|
||||||
lda DX
|
lda DX
|
||||||
sec
|
sec
|
||||||
sbc DY
|
sbc DY
|
||||||
|
@ -107,7 +116,8 @@ DRAW.Line.IncXY lda DX DX=DY
|
||||||
clc
|
clc
|
||||||
adc IY
|
adc IY
|
||||||
sta CB.Cache+S.CB.Y1
|
sta CB.Cache+S.CB.Y1
|
||||||
jsr CB.GFXWrite
|
ldx #0 Select CB.Cache
|
||||||
|
jsr CB.GFXWriteX
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 jmp PTR.Enable
|
.8 jmp PTR.Enable
|
||||||
|
@ -183,7 +193,8 @@ DRAW.Line.IncY lda DY
|
||||||
clc
|
clc
|
||||||
adc IY
|
adc IY
|
||||||
sta CB.Cache+S.CB.Y1
|
sta CB.Cache+S.CB.Y1
|
||||||
jsr CB.GFXWrite
|
ldx #0 Select CB.Cache
|
||||||
|
jsr CB.GFXWriteX
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 jmp PTR.Enable
|
.8 jmp PTR.Enable
|
||||||
|
@ -261,112 +272,138 @@ DRAW.Line.IncX lda DX
|
||||||
|
|
||||||
inc CB.Cache+S.CB.X1+1
|
inc CB.Cache+S.CB.X1+1
|
||||||
|
|
||||||
.6 jsr CB.GFXWrite
|
.6 ldx #0 Select CB.Cache
|
||||||
|
jsr CB.GFXWriteX
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 jmp PTR.Enable
|
.8 jmp PTR.Enable
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* fill (short int hWND, short int OP, short int COLOR, int X1, int Y1, int X2, int Y2)
|
* fill (short int hWND, short int OP, short int COLOR, int X1, int Y1, int X2, int Y2)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRAW.Fill jsr DRAW.PullY2X2Y1X1
|
DRAW.Fill jsr CB.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
|
||||||
|
|
||||||
|
jsr OBJ.PullHWND get dest window at ZPWNDPtr
|
||||||
|
jsr WND.GetInnerInClip
|
||||||
|
|
||||||
jsr DRAW.PullInnerWND
|
jsr CB.ToGlobal
|
||||||
|
|
||||||
lda #S.CB.CMD.FILLRECT
|
lda #S.CB.CMD.FILLRECT
|
||||||
sta CB.Cache+S.CB.CMD
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
jsr CLIP.CB.Cache
|
jmp CB.Write
|
||||||
bcs .8
|
|
||||||
|
|
||||||
jmp CB.GFXWritePtr
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* drawbitmap (short int hWND, short int OP, short int M, S.BM *bitmap, int X1, int Y1)
|
* drawBitmap (short int hWND, short int OP, short int M, S.BM *bitmap, int X1, int Y1)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRAW.BitMap lda #S.CB.CMD.BITBLT
|
DRAW.BitMap jsr CB.PullY1X1
|
||||||
jsr CB.InitCacheA
|
|
||||||
|
|
||||||
jsr DRAW.PullY1X1
|
|
||||||
|
|
||||||
>PULLW CB.Cache+S.CB.SrcPtr
|
>PULLW CB.Cache+S.CB.SrcPtr
|
||||||
|
|
||||||
>PULLB CB.Cache+S.CB.M
|
>PULLB CB.Cache+S.CB.M
|
||||||
>PULLB CB.Cache+S.CB.OP
|
>PULLB CB.Cache+S.CB.OP
|
||||||
|
|
||||||
jsr DRAW.PullInnerWND
|
|
||||||
|
|
||||||
jsr CLIP.CB.Cache
|
|
||||||
bcs .8
|
|
||||||
|
|
||||||
jmp CB.GFXWritePtr
|
jsr OBJ.PullHWND get dest window at ZPWNDPtr
|
||||||
|
jsr WND.GetInnerInClip
|
||||||
|
|
||||||
|
jsr CB.ToGlobal
|
||||||
|
|
||||||
.8 clc
|
lda #S.CB.CMD.BITBLT
|
||||||
rts
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
|
jsr CB.ResetSrcXY
|
||||||
|
|
||||||
|
jmp CB.Write
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* 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)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRAW.Text lda #S.CB.CMD.DRAWTEXT2
|
DRAW.Text >PULLW CB.Cache+S.CB.TxtPtr
|
||||||
jsr CB.InitCacheA
|
|
||||||
|
jsr CB.PullY1X1
|
||||||
>PULLW CB.Cache+S.CB.TxtPtr
|
|
||||||
|
|
||||||
jsr DRAW.PullY1X1
|
|
||||||
|
|
||||||
>PULLB CB.Cache+S.CB.hFont
|
>PULLB CB.Cache+S.CB.hFont
|
||||||
>PULLB CB.Cache+S.CB.OP
|
>PULLB CB.Cache+S.CB.OP
|
||||||
|
|
||||||
jsr DRAW.PullInnerWND
|
|
||||||
|
|
||||||
jsr CLIP.CB.Cache
|
|
||||||
bcs .8
|
|
||||||
|
|
||||||
jmp CB.GFXWritePtr
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
DRAW.PullInnerWND
|
|
||||||
jsr OBJ.PullHWND get dest window at ZPWNDPtr
|
jsr OBJ.PullHWND get dest window at ZPWNDPtr
|
||||||
|
jsr WND.GetInnerInClip
|
||||||
|
|
||||||
|
jsr CB.ToGlobal
|
||||||
|
|
||||||
jsr DRAW.GetInnerWND get inners in CLIP.Rect
|
lda #S.CB.CMD.DRAWTEXT2
|
||||||
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
>LDYA ZPWNDPtr
|
jmp CB.Write
|
||||||
jmp CB.ToGlobal set CB.Cache to global coord.
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* private
|
* private
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRAW.xBM >LDYA L.BMs,x
|
DRAW.BordersAtX stx IY
|
||||||
DRAW.yaBM >STYA ZPBMPtr
|
|
||||||
|
|
||||||
DRAW.BM lda #S.CB.CMD.BITBLT
|
jsr CB.BorderLineH
|
||||||
|
|
||||||
|
ldy #S.OBJ.X1
|
||||||
|
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
sec
|
||||||
|
sbc IY
|
||||||
|
sta CB.Cache+S.CB.X1
|
||||||
|
iny
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
sbc #0
|
||||||
|
sta CB.Cache+S.CB.X1+1
|
||||||
|
|
||||||
|
iny #S.OBJ.Y1
|
||||||
|
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
sec
|
||||||
|
sbc IY
|
||||||
|
sta CB.Cache+S.CB.Y1
|
||||||
|
iny
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
sbc #0
|
||||||
|
sta CB.Cache+S.CB.Y1+1
|
||||||
|
|
||||||
|
iny #S.OBJ.X2
|
||||||
|
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
clc
|
||||||
|
adc IY
|
||||||
|
sta CB.Cache+S.CB.X2
|
||||||
|
iny
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
adc #0
|
||||||
|
sta CB.Cache+S.CB.X2+1 top: X1,X2 at Y1
|
||||||
|
|
||||||
|
iny #S.OBJ.Y2
|
||||||
|
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
clc
|
||||||
|
adc IY
|
||||||
|
sta CB.Cache+S.CB.Y2
|
||||||
|
iny
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
adc #0
|
||||||
|
sta CB.Cache+S.CB.Y2+1
|
||||||
|
|
||||||
|
jsr CB.Cache2CBBufG
|
||||||
|
|
||||||
|
jsr CB.SwapY1Y2
|
||||||
|
|
||||||
|
jsr CB.Cache2CBBuf bottom X1,X2 at Y2
|
||||||
|
|
||||||
|
lda #S.CB.CMD.VLINE
|
||||||
sta CB.Cache+S.CB.CMD
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
lda #S.CB.OP.MASK+S.CB.OP.ORA+S.CB.OP.COLOR
|
jsr CB.SwapY1Y2
|
||||||
sta CB.Cache+S.CB.OP
|
|
||||||
|
jsr CB.Cache2CBBuf left Y1,Y2 at X1
|
||||||
|
|
||||||
lda #S.CB.M.C16
|
jsr CB.SwapX1X2
|
||||||
sta CB.Cache+S.CB.M
|
|
||||||
|
jmp CB.Cache2CBBuf right X2,Y1,X2,Y2
|
||||||
ldx #3
|
*--------------------------------------
|
||||||
|
DRAW.xBM >LDYA L.BMs,x
|
||||||
ldy #S.BM.W+3
|
DRAW.yaBM jsr BM.YA2CB.cache
|
||||||
|
|
||||||
.2 lda (ZPBMPtr),y
|
|
||||||
sta CB.Cache+S.CB.SrcW,x
|
|
||||||
dey
|
|
||||||
dex
|
|
||||||
bpl .2
|
|
||||||
|
|
||||||
lda ZPBMPtr
|
|
||||||
sta CB.Cache+S.CB.SrcPtr
|
|
||||||
|
|
||||||
lda ZPBMPtr+1
|
|
||||||
sta CB.Cache+S.CB.SrcPtr+1
|
|
||||||
|
|
||||||
jmp CB.Cache2CBBuf
|
jmp CB.Cache2CBBuf
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -376,68 +413,16 @@ DRAW.YAText >STYA CB.Cache+S.CB.TxtPtr
|
||||||
lda #S.CB.CMD.DRAWTEXT2
|
lda #S.CB.CMD.DRAWTEXT2
|
||||||
sta CB.Cache+S.CB.CMD
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
lda #0
|
lda #S.CB.OP.XOR
|
||||||
ror CS = inverse
|
|
||||||
eor #S.CB.OP.INVERSE
|
|
||||||
ora #S.CB.OP.SET
|
|
||||||
|
|
||||||
* lda #S.CB.OP.XOR
|
|
||||||
sta CB.Cache+S.CB.OP
|
sta CB.Cache+S.CB.OP
|
||||||
|
|
||||||
lda #S.CB.M.MONO
|
lda #S.CB.M.MONO
|
||||||
sta CB.Cache+S.CB.M
|
sta CB.Cache+S.CB.M
|
||||||
|
|
||||||
|
jsr CB.ResetSrcXY
|
||||||
|
|
||||||
jmp CB.Cache2CBBuf
|
jmp CB.Cache2CBBuf
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DRAW.PullY2X2Y1X1
|
|
||||||
ldx #7
|
|
||||||
bra DRAW.PullX
|
|
||||||
|
|
||||||
DRAW.PullY1X1 ldx #3
|
|
||||||
|
|
||||||
DRAW.PullX >PULLA
|
|
||||||
sta CB.Cache+S.CB.X1-1,x
|
|
||||||
>PULLA
|
|
||||||
sta CB.Cache+S.CB.X1,x
|
|
||||||
dex
|
|
||||||
dex
|
|
||||||
bpl DRAW.PullX
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
DRAW.GetInnerWND
|
|
||||||
ldy #S.OBJ.X1
|
|
||||||
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CLIP.Rect+S.RECT.X1
|
|
||||||
iny
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CLIP.Rect+S.RECT.X1+1
|
|
||||||
|
|
||||||
ldy #S.WND.InnerY1
|
|
||||||
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CLIP.Rect+S.RECT.Y1
|
|
||||||
iny
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CLIP.Rect+S.RECT.Y1+1
|
|
||||||
|
|
||||||
ldy #S.WND.InnerX2
|
|
||||||
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CLIP.Rect+S.RECT.X2
|
|
||||||
iny
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CLIP.Rect+S.RECT.X2+1
|
|
||||||
|
|
||||||
ldy #S.WND.InnerY2
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CLIP.Rect+S.RECT.Y2
|
|
||||||
iny
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CLIP.Rect+S.RECT.Y2+1
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libgui.s.draw
|
SAVE usr/src/lib/libgui.s.draw
|
||||||
LOAD usr/src/lib/libgui.s
|
LOAD usr/src/lib/libgui.s
|
||||||
|
|
|
@ -15,10 +15,8 @@ FON.Init >LDYA L.SYSX7
|
||||||
|
|
||||||
* ldy #S.FON.PixH
|
* ldy #S.FON.PixH
|
||||||
* >SYSCALL2 GetStkObjProp
|
* >SYSCALL2 GetStkObjProp
|
||||||
|
|
||||||
lda #7
|
lda #7
|
||||||
dec
|
|
||||||
sta SYSFON.Hm1
|
|
||||||
inc
|
|
||||||
sta SYSFON.H
|
sta SYSFON.H
|
||||||
inc
|
inc
|
||||||
sta SYSFON.Hp1
|
sta SYSFON.Hp1
|
||||||
|
@ -34,12 +32,152 @@ FON.Init >LDYA L.SYSX7
|
||||||
>SYSCALL LoadStkObj
|
>SYSCALL LoadStkObj
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FON.GetTextSize >STYA CB.CACHE+S.CB.TxtPtr
|
FON.GetTextSize >STYA CB.Cache+S.CB.TxtPtr
|
||||||
stx CB.CACHE+S.CB.hFont
|
stx CB.Cache+S.CB.hFont
|
||||||
|
|
||||||
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 CB.GFXWrite
|
ldx #0 Select CB.Cache
|
||||||
|
jmp CB.GFXWriteX
|
||||||
|
*--------------------------------------
|
||||||
|
FON.GetTextSize2
|
||||||
|
>STYA ZPPtr1
|
||||||
|
stx CB.Cache+S.CB.hFont
|
||||||
|
|
||||||
|
lda #S.CB.CMD.GETTEXTSIZE+S.CB.CMD.OSD
|
||||||
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
|
jsr FON.GetBuf
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
stz DX
|
||||||
|
stz DX+1
|
||||||
|
stz DY
|
||||||
|
stz DY+1
|
||||||
|
|
||||||
|
.1 jsr FON.GetLine
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
ldx #0 Select CB.Cache
|
||||||
|
jsr CB.GFXWriteX
|
||||||
|
|
||||||
|
ldx CB.Cache+S.CB.SrcW
|
||||||
|
cpx DX
|
||||||
|
lda CB.Cache+S.CB.SrcW+1
|
||||||
|
tay
|
||||||
|
sbc DX+1
|
||||||
|
bcc .2
|
||||||
|
|
||||||
|
stx DX
|
||||||
|
sty DX+1
|
||||||
|
|
||||||
|
.2 lda CB.Cache+S.CB.SrcH
|
||||||
|
clc
|
||||||
|
adc DY
|
||||||
|
sta DY
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.SrcH+1
|
||||||
|
adc DY+1
|
||||||
|
sta DY+1
|
||||||
|
|
||||||
|
lda (ZPPtr1)
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.8 >LDYA ZPPtr2
|
||||||
|
>SYSCALL2 Free
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
FON.DrawText2 >STYA ZPPtr1
|
||||||
|
stx CB.Cache+S.CB.hFont
|
||||||
|
|
||||||
|
lda #S.CB.OP.XOR
|
||||||
|
sta CB.Cache+S.CB.OP
|
||||||
|
|
||||||
|
lda #S.CB.M.MONO
|
||||||
|
sta CB.Cache+S.CB.M
|
||||||
|
|
||||||
|
jsr CB.ResetSrcXY
|
||||||
|
|
||||||
|
jsr FON.GetBuf
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr PTR.Disable
|
||||||
|
* >DEBUG
|
||||||
|
.1 jsr FON.GetLine
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
lda #S.CB.CMD.DRAWTEXT+S.CB.CMD.OSD
|
||||||
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
jsr CB.GFXWriteX
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
* ldx #0
|
||||||
|
* jsr CB.GFXWriteX Clip
|
||||||
|
|
||||||
|
jsr CB.GFXWriteClip
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.SrcPtr
|
||||||
|
>SYSCALL2 FreeStkObj
|
||||||
|
|
||||||
|
lda CB.Cache+S.CB.SrcH
|
||||||
|
clc
|
||||||
|
adc CB.Cache+S.CB.Y1
|
||||||
|
sta CB.Cache+S.CB.Y1
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
inc CB.Cache+S.CB.Y1+1
|
||||||
|
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 >LDYA ZPPtr2
|
||||||
|
>SYSCALL2 Free
|
||||||
|
|
||||||
|
jmp PTR.Enable
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
FON.GetBuf >LDYAI 256
|
||||||
|
>SYSCALL2 GetMem
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>STYA ZPPtr2
|
||||||
|
>STYA CB.Cache+S.CB.TxtPtr
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
FON.GetLine ldy #0
|
||||||
|
|
||||||
|
.1 lda (ZPPtr1)
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
.2 cmp #C.SPACE
|
||||||
|
bcs .3
|
||||||
|
|
||||||
|
eor #C.CR
|
||||||
|
beq .7
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
.3 sta (ZPPtr2),y
|
||||||
|
iny
|
||||||
|
|
||||||
|
.4 inc ZPPtr1
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
inc ZPPtr1+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.7 inc ZPPtr1
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
inc ZPPtr1+1
|
||||||
|
|
||||||
|
.8 sta (ZPPtr2),y
|
||||||
|
tya set Z flag
|
||||||
|
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libgui.s.fon
|
SAVE usr/src/lib/libgui.s.fon
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
*--------------------------------------
|
||||||
|
* NewLabel(HWND, pTEXT, wX, wY)
|
||||||
|
*--------------------------------------
|
||||||
|
LABEL.New >PULLW DY
|
||||||
|
>PULLW DX
|
||||||
|
>PULLW ZPPtr1
|
||||||
|
jsr OBJ.PullHWND
|
||||||
|
|
||||||
|
LABEL.New.I lda #S.OBJ.T.LABEL
|
||||||
|
|
||||||
|
jsr OBJ.New
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
phx hOBJ
|
||||||
|
|
||||||
|
jsr OBJ.SetDXDYX1Y1
|
||||||
|
|
||||||
|
ldy #S.LABEL.pTEXT
|
||||||
|
lda ZPPtr1
|
||||||
|
sta (ZPObjPtr),y
|
||||||
|
pha
|
||||||
|
iny
|
||||||
|
lda ZPPtr1+1
|
||||||
|
sta (ZPObjPtr),y
|
||||||
|
ply
|
||||||
|
|
||||||
|
ldx hSYSFON
|
||||||
|
jsr FON.GetTextSize2
|
||||||
|
|
||||||
|
ldx #3
|
||||||
|
ldy #S.OBJ.W+3
|
||||||
|
|
||||||
|
.1 lda DX,x
|
||||||
|
sta (ZPObjPtr),y
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
>LDYA ZPObjPtr
|
||||||
|
jsr OBJ.SetX2Y2
|
||||||
|
|
||||||
|
jsr WND.AddChild.I
|
||||||
|
|
||||||
|
pla hOBJ
|
||||||
|
|
||||||
|
clc
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
LABEL.Enter
|
||||||
|
LABEL.Leave clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
LABEL.fPaint jsr CB.GetBuf
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda #C.WHITE
|
||||||
|
jsr CB.FillRectMonoA
|
||||||
|
|
||||||
|
jsr CB.GetObjX1Y1X2Y2
|
||||||
|
|
||||||
|
jsr CB.Cache2CBBufG
|
||||||
|
|
||||||
|
jsr CB.FlushBuf
|
||||||
|
|
||||||
|
ldy #S.LABEL.pTEXT
|
||||||
|
jsr OBJ.GetPropAtY
|
||||||
|
ldx hSYSFON
|
||||||
|
jmp FON.DrawText2
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/lib/libgui.s.label
|
||||||
|
LOAD usr/src/lib/libgui.s
|
||||||
|
ASM
|
|
@ -4,30 +4,27 @@ NEW
|
||||||
* Y,A = MBAR definition
|
* Y,A = MBAR definition
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MBAR.New >STYA ZPPtr1 MBAR definition
|
MBAR.New >STYA ZPPtr1 MBAR definition
|
||||||
>STYA ZPObjPtr for pass #2
|
>STYA ZPPtr2 for pass #2
|
||||||
|
|
||||||
jsr MBAR.GetSize
|
jsr MBAR.GetSize
|
||||||
>SYSCALL2 GetMem
|
>SYSCALL2 GetMem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA ZPMENUPtr
|
>STYA ZPObjPtr
|
||||||
|
|
||||||
phx hMBAR
|
phx hMBAR
|
||||||
|
|
||||||
lda #S.OBJ.T.MBAR
|
lda #S.OBJ.T.MBAR
|
||||||
sta (ZPMENUPtr) S.OBJ.T
|
sta (ZPObjPtr) S.OBJ.T
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
|
|
||||||
ldy #S.MBAR.Items-1
|
ldy #S.MBAR.Items-1
|
||||||
|
|
||||||
.1 sta (ZPMENUPtr),y
|
.1 sta (ZPObjPtr),y
|
||||||
dey
|
dey
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
>LDYA ZPObjPtr
|
|
||||||
>STYA ZPPtr1 MENU definition
|
|
||||||
|
|
||||||
jsr MBAR.GetData
|
jsr MBAR.GetData
|
||||||
|
|
||||||
pla hMBAR
|
pla hMBAR
|
||||||
|
@ -69,18 +66,13 @@ MBAR.GetSize lda #S.MBAR.Items+1 Ending\0
|
||||||
.8 >LDYA Counter
|
.8 >LDYA Counter
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ZPPtr1 = defintion
|
* ZPPtr2 = defintion
|
||||||
* ZPMENUPtr = DstBuf
|
* ZPObjPtr = DstMBar
|
||||||
|
* ZPPtr1 = DstMBItem
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MBAR.GetData lda ZPMENUPtr
|
MBAR.GetData jsr MBAR.GetMBItems
|
||||||
clc
|
|
||||||
adc #S.MBAR.Items
|
|
||||||
sta ZPMENUPtr
|
|
||||||
bcc .1
|
|
||||||
|
|
||||||
inc ZPMENUPtr+1
|
.1 lda (ZPPtr2)
|
||||||
|
|
||||||
.1 lda (ZPPtr1)
|
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
lda #S.MBITEM.T.SUBMENU
|
lda #S.MBITEM.T.SUBMENU
|
||||||
|
@ -89,11 +81,11 @@ MBAR.GetData lda ZPMENUPtr
|
||||||
lda #0 S.MBITEM.S
|
lda #0 S.MBITEM.S
|
||||||
jsr MBAR.AddByte
|
jsr MBAR.AddByte
|
||||||
|
|
||||||
>LDYA ZPPtr1 pTEXT
|
>LDYA ZPPtr2 pTEXT
|
||||||
ldx hSYSFON
|
ldx hSYSFON
|
||||||
jsr FON.GetTextSize
|
jsr FON.GetTextSize
|
||||||
|
|
||||||
lda PREFS.MBarXMargin
|
lda PREFS.XMargin
|
||||||
asl x2
|
asl x2
|
||||||
clc
|
clc
|
||||||
adc CB.CACHE+S.CB.SrcW
|
adc CB.CACHE+S.CB.SrcW
|
||||||
|
@ -103,23 +95,23 @@ MBAR.GetData lda ZPMENUPtr
|
||||||
adc CB.CACHE+S.CB.SrcW+1
|
adc CB.CACHE+S.CB.SrcW+1
|
||||||
jsr MBAR.AddWord S.MBITEM.W
|
jsr MBAR.AddWord S.MBITEM.W
|
||||||
|
|
||||||
>LDYA ZPPtr1 pTEXT
|
>LDYA ZPPtr2 pTEXT
|
||||||
jsr MBAR.AddWord
|
jsr MBAR.AddWord
|
||||||
|
|
||||||
jsr SkipStrZPtr1 skip "TEXT\0"
|
jsr SkipStrZPtr2 skip "TEXT\0"
|
||||||
|
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr2)
|
||||||
jsr MBAR.AddByte pMENU
|
jsr MBAR.AddByte pMENU
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr2),y
|
||||||
jsr MBAR.AddByte pMENU+1
|
jsr MBAR.AddByte pMENU+1
|
||||||
|
|
||||||
lda #2
|
lda #2
|
||||||
jsr SkipAPtr1 stkip pMENU
|
jsr SkipAPtr2 stkip pMENU
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 sta (ZPMENUPtr)
|
.8 sta (ZPPtr1)
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MBAR.AddWord pha
|
MBAR.AddWord pha
|
||||||
|
@ -128,11 +120,11 @@ MBAR.AddWord pha
|
||||||
jsr MBAR.AddByte
|
jsr MBAR.AddByte
|
||||||
pla
|
pla
|
||||||
|
|
||||||
MBAR.AddByte sta (ZPMENUPtr)
|
MBAR.AddByte sta (ZPPtr1)
|
||||||
inc ZPMENUPtr
|
inc ZPPtr1
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
inc ZPMENUPtr+1
|
inc ZPPtr1+1
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -142,7 +134,7 @@ MBAR.AddByte sta (ZPMENUPtr)
|
||||||
MBAR.Enter ldy #S.WND.pMBAR
|
MBAR.Enter ldy #S.WND.pMBAR
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
>SYSCALL2 GetMemPtr
|
>SYSCALL2 GetMemPtr
|
||||||
>STYA ZPMENUPtr pMBAR
|
>STYA ZPObjPtr pMBAR
|
||||||
|
|
||||||
stz ZPPtr2
|
stz ZPPtr2
|
||||||
stz ZPPtr2+1
|
stz ZPPtr2+1
|
||||||
|
@ -156,7 +148,7 @@ MBAR.Enter ldy #S.WND.pMBAR
|
||||||
.1 lda (ZPPtr1)
|
.1 lda (ZPPtr1)
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
jsr MBAR.SetX2
|
jsr MBAR.SetX2 set X2 = X1 + W - 1
|
||||||
|
|
||||||
lda MSG+S.MSG.X1
|
lda MSG+S.MSG.X1
|
||||||
cmp CB.Cache+S.CB.X1
|
cmp CB.Cache+S.CB.X1
|
||||||
|
@ -187,7 +179,11 @@ MBAR.Enter ldy #S.WND.pMBAR
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ZPMENUPtr = MBAR
|
MBAR.Leave clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* ZPWNDPtr parent WND
|
||||||
|
* ZPObjPtr = MBAR
|
||||||
* ZPPtr2 = Item to activate
|
* ZPPtr2 = Item to activate
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MBAR.Reset stz ZPPtr2
|
MBAR.Reset stz ZPPtr2
|
||||||
|
@ -207,8 +203,8 @@ MBAR.Set jsr MENU.DestroyAll
|
||||||
.4 lda (ZPPtr1)
|
.4 lda (ZPPtr1)
|
||||||
beq .7
|
beq .7
|
||||||
|
|
||||||
jsr MBAR.SetX2 set X2 = X1 + W
|
jsr MBAR.SetX2 set X2 = X1 + W - 1
|
||||||
|
|
||||||
ldy #S.MBITEM.S
|
ldy #S.MBITEM.S
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
bmi .5
|
bmi .5
|
||||||
|
@ -235,8 +231,7 @@ MBAR.Set jsr MENU.DestroyAll
|
||||||
.6 jsr MBAR.NextMBItem set X1 = X2
|
.6 jsr MBAR.NextMBItem set X1 = X2
|
||||||
bra .4
|
bra .4
|
||||||
|
|
||||||
.7 >LDYA L.WND.Screen
|
.7 jsr CB.FlushBuf
|
||||||
jsr CB.FlushBufToYA
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYA Counter
|
>LDYA Counter
|
||||||
|
@ -266,18 +261,21 @@ MBAR.Set jsr MENU.DestroyAll
|
||||||
* ZPWNDPtr = parent WND
|
* ZPWNDPtr = parent WND
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MBAR.Draw >SYSCALL2 GetMemPtr
|
MBAR.Draw >SYSCALL2 GetMemPtr
|
||||||
>STYA ZPMENUPtr pMBAR
|
>STYA ZPObjPtr pMBAR
|
||||||
|
|
||||||
ldy #S.OBJ.X1
|
ldy #S.OBJ.X1
|
||||||
ldx #S.CB.X1
|
ldx #S.CB.X1
|
||||||
jsr CB.GetWndYCacheX
|
jsr CB.GetWndYCacheX
|
||||||
|
|
||||||
|
jsr CB.GetBuf
|
||||||
|
bcs .9
|
||||||
|
|
||||||
jsr MBAR.GetMBItems
|
jsr MBAR.GetMBItems
|
||||||
|
|
||||||
.1 lda (ZPPtr1)
|
.1 lda (ZPPtr1)
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
jsr MBAR.SetX2 set X2 = X1 + W
|
jsr MBAR.SetX2 set X2 = X1 + W - 1
|
||||||
|
|
||||||
jsr MBAR.DrawMBItem
|
jsr MBAR.DrawMBItem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -285,10 +283,7 @@ MBAR.Draw >SYSCALL2 GetMemPtr
|
||||||
jsr MBAR.NextMBItem
|
jsr MBAR.NextMBItem
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 lda CB.Cache+S.CB.X2
|
.8 jsr CB.X2ToX1
|
||||||
sta CB.Cache+S.CB.X1
|
|
||||||
lda CB.Cache+S.CB.X2+1
|
|
||||||
sta CB.Cache+S.CB.X1+1
|
|
||||||
|
|
||||||
ldy #S.OBJ.X2
|
ldy #S.OBJ.X2
|
||||||
ldx #S.CB.X2
|
ldx #S.CB.X2
|
||||||
|
@ -299,7 +294,9 @@ MBAR.Draw >SYSCALL2 GetMemPtr
|
||||||
lda PREFS.MBarColor
|
lda PREFS.MBarColor
|
||||||
jsr CB.FillRectMonoA
|
jsr CB.FillRectMonoA
|
||||||
|
|
||||||
jmp CB.Cache2CBBuf
|
jsr CB.Cache2CBBuf
|
||||||
|
|
||||||
|
jmp CB.FlushBuf
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -318,22 +315,10 @@ MBAR.DrawMBItem ldy #S.MBITEM.S
|
||||||
|
|
||||||
jsr CB.Cache2CBBuf
|
jsr CB.Cache2CBBuf
|
||||||
|
|
||||||
lda PREFS.MBarXMargin
|
lda PREFS.XMargin
|
||||||
clc
|
jsr CB.AddA2X1
|
||||||
adc CB.Cache+S.CB.X1
|
|
||||||
sta CB.Cache+S.CB.X1
|
|
||||||
bcc .10
|
|
||||||
|
|
||||||
inc CB.Cache+S.CB.X1+1
|
jsr CB.IncY1
|
||||||
|
|
||||||
.10 inc CB.Cache+S.CB.Y1
|
|
||||||
bne .11
|
|
||||||
|
|
||||||
inc CB.Cache+S.CB.Y1+1
|
|
||||||
|
|
||||||
.11 ldy #S.MBITEM.S
|
|
||||||
lda (ZPPtr1),y
|
|
||||||
asl
|
|
||||||
|
|
||||||
ldy #S.MBITEM.pTEXT
|
ldy #S.MBITEM.pTEXT
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
|
@ -342,56 +327,52 @@ MBAR.DrawMBItem ldy #S.MBITEM.S
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
ply
|
ply
|
||||||
ldx hSYSFON
|
ldx hSYSFON
|
||||||
jsr DRAW.YAText
|
jmp DRAW.YAText
|
||||||
|
|
||||||
jmp CB.Cache2CBBuf
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MBAR.GetMBItems lda ZPMENUPtr
|
MBAR.GetMBItems lda ZPObjPtr
|
||||||
clc
|
clc
|
||||||
adc #S.MBAR.Items
|
adc #S.MBAR.Items
|
||||||
sta ZPPtr1
|
sta ZPPtr1
|
||||||
|
|
||||||
lda ZPMENUPtr+1
|
lda ZPObjPtr+1
|
||||||
adc /S.MBAR.Items
|
adc /S.MBAR.Items
|
||||||
sta ZPPtr1+1
|
sta ZPPtr1+1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MBAR.NextMBItem lda CB.Cache+S.CB.X2
|
MBAR.NextMBItem jsr CB.X2ToX1
|
||||||
sta CB.Cache+S.CB.X1
|
|
||||||
lda CB.Cache+S.CB.X2+1
|
|
||||||
sta CB.Cache+S.CB.X1+1
|
|
||||||
|
|
||||||
lda #S.MBITEM
|
lda #S.MBITEM
|
||||||
jmp SkipAPtr1
|
jmp SkipAPtr1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MBAR.SetX2 lda CB.Cache+S.CB.X1
|
MBAR.SetX2 ldy #S.MBITEM.W
|
||||||
|
lda (ZPPtr1),y
|
||||||
clc
|
clc
|
||||||
ldy #S.MBITEM.W
|
adc CB.Cache+S.CB.X1
|
||||||
adc (ZPPtr1),y
|
pha
|
||||||
sta CB.Cache+S.CB.X2
|
|
||||||
|
|
||||||
lda CB.Cache+S.CB.X1+1
|
|
||||||
iny
|
iny
|
||||||
adc (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
|
adc CB.Cache+S.CB.X1+1
|
||||||
|
|
||||||
|
ply
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
dec
|
||||||
|
|
||||||
|
.1 dey
|
||||||
|
|
||||||
|
sty CB.Cache+S.CB.X2
|
||||||
sta CB.Cache+S.CB.X2+1
|
sta CB.Cache+S.CB.X2+1
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MBAR.SetY1Y2 ldy #S.WND.MBarY1
|
MBAR.SetY1Y2 ldy #S.WND.MBarY1
|
||||||
lda (ZPWNDPtr),y
|
ldx #S.CB.Y1
|
||||||
sta CB.Cache+S.CB.Y1
|
jsr CB.GetWndYCacheX
|
||||||
iny
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CB.Cache+S.CB.Y1+1
|
|
||||||
|
|
||||||
ldy #S.WND.MBarY2
|
ldy #S.WND.MBarY2
|
||||||
lda (ZPWNDPtr),y
|
ldx #S.CB.Y2
|
||||||
sta CB.Cache+S.CB.Y2
|
jmp CB.GetWndYCacheX
|
||||||
iny
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CB.Cache+S.CB.Y2+1
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libgui.s.mbar
|
SAVE usr/src/lib/libgui.s.mbar
|
||||||
|
|
|
@ -1,23 +1,23 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* idButton MsgBox(pTITLE, pTEXT, pBM, idButtons)
|
* MsgBox(pTITLE, pBM, pTEXT, idButtons)
|
||||||
|
|
||||||
* guiNewWnd(sFlags, iX1, iY1, iW, iH)
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MBOX.MsgBox >LDYAI 360
|
MBOX.MsgBox >LDYAI 360
|
||||||
>STYA IE
|
>STYA IE
|
||||||
|
|
||||||
>LDYAI 80
|
>LDYAI 70
|
||||||
>STYA INE
|
>STYA INE
|
||||||
|
|
||||||
lda WND.Desktop+S.OBJ.W
|
lda WND.Desktop+S.OBJ.W
|
||||||
sec
|
sec
|
||||||
sbc IE
|
sbc IE
|
||||||
|
and #$F8
|
||||||
sta DX
|
sta DX
|
||||||
|
|
||||||
lda WND.Desktop+S.OBJ.W+1
|
lda WND.Desktop+S.OBJ.W+1
|
||||||
sbc IE+1
|
sbc IE+1
|
||||||
lsr
|
lsr
|
||||||
sta DX+1
|
sta DX+1
|
||||||
ror DX
|
ror DX
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ MBOX.MsgBox >LDYAI 360
|
||||||
sta DY
|
sta DY
|
||||||
lda WND.Desktop+S.OBJ.H+1
|
lda WND.Desktop+S.OBJ.H+1
|
||||||
sbc INE+1
|
sbc INE+1
|
||||||
lsr
|
lsr
|
||||||
sta DY+1
|
sta DY+1
|
||||||
ror DY
|
ror DY
|
||||||
|
|
||||||
|
@ -38,13 +38,14 @@ MBOX.MsgBox >LDYAI 360
|
||||||
>PUSHW INE
|
>PUSHW INE
|
||||||
jsr WND.New
|
jsr WND.New
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
pha
|
sta WND.hWND
|
||||||
|
jsr OBJ.GetHWNDA for childs later....
|
||||||
|
|
||||||
ldy #S.WND.BGCOLOR
|
ldy #S.WND.BGCOLOR
|
||||||
lda #C.WHITE
|
lda #C.WHITE
|
||||||
sta (ZPObjPtr),y
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
ldy #6
|
ldy #6
|
||||||
lda (pStack),y
|
lda (pStack),y
|
||||||
tax
|
tax
|
||||||
|
@ -52,51 +53,93 @@ MBOX.MsgBox >LDYAI 360
|
||||||
lda (pStack),y
|
lda (pStack),y
|
||||||
ldy #S.WND.pTITLE
|
ldy #S.WND.pTITLE
|
||||||
jsr OBJ.SetAXAtY
|
jsr OBJ.SetAXAtY
|
||||||
|
|
||||||
pla
|
|
||||||
|
|
||||||
jsr WND.Show
|
ldy #4 pBM
|
||||||
bcs .9
|
|
||||||
|
|
||||||
ldy #2 pBM
|
|
||||||
lda (pStack),y
|
lda (pStack),y
|
||||||
tax
|
sta ZPBMPtr+1
|
||||||
dey
|
dey
|
||||||
lda (pStack),y
|
lda (pStack),y
|
||||||
jsr MBOX.DrawBM
|
sta ZPBMPtr
|
||||||
|
|
||||||
|
lda #16
|
||||||
|
sta DX
|
||||||
|
stz DX+1
|
||||||
|
lda #20
|
||||||
|
sta DY
|
||||||
|
stz DY+1
|
||||||
|
|
||||||
|
jsr BITMAP.New.I
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
ldy #2 pTEXT
|
||||||
|
lda (pStack),y
|
||||||
|
sta ZPPtr1+1
|
||||||
|
dey
|
||||||
|
lda (pStack),y
|
||||||
|
sta ZPPtr1
|
||||||
|
|
||||||
|
lda #60
|
||||||
|
sta DX
|
||||||
|
* stz DX+1
|
||||||
|
* lda #30
|
||||||
|
* sta DY
|
||||||
|
* stz DY+1
|
||||||
|
|
||||||
|
jsr LABEL.New.I
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr MBOX.AddButtons
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
.8 lda WND.hWND
|
||||||
|
jsr WND.Show
|
||||||
|
|
||||||
.9 >POP 7
|
.9 >POP 7
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MBOX.DrawBM cpx #0
|
MBOX.AddButtons lda #360-5-60
|
||||||
bne .1
|
sta D
|
||||||
|
lda /360-5-60
|
||||||
|
sta D+1
|
||||||
|
|
||||||
tax
|
stz IY
|
||||||
>LDYA L.BMs,x
|
|
||||||
|
.1 lda (pStack)
|
||||||
|
beq .8
|
||||||
|
|
||||||
.1 >STYA ZPBMPtr
|
lsr
|
||||||
|
sta (pStack)
|
||||||
|
bcc .7
|
||||||
|
|
||||||
jsr CB.GetBuf
|
jsr MBOX.AddButton
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda #28
|
lda D
|
||||||
sta CB.Cache+S.CB.X1
|
sec
|
||||||
stz CB.Cache+S.CB.X1+1
|
sbc #55
|
||||||
sta CB.Cache+S.CB.Y1
|
sta D
|
||||||
stz CB.Cache+S.CB.Y1+1
|
bcs .7
|
||||||
|
|
||||||
jsr DRAW.BM
|
|
||||||
* >DEBUG
|
|
||||||
* >LDYA ZPWNDPtr
|
|
||||||
>LDYA L.WND.Desktop
|
|
||||||
jmp CB.FlushBufToYA
|
|
||||||
|
|
||||||
.9 rts
|
dec D+1
|
||||||
|
|
||||||
|
.7 inc IY
|
||||||
|
inc IY
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
MBOX.AddButton >PUSHB WND.hWND
|
||||||
|
>PUSHBI 0 flags
|
||||||
|
>PUSHWI 50 w
|
||||||
|
>PUSHWZ pIcon
|
||||||
|
ldx IY
|
||||||
|
>PUSHW L.BUT.Labels,x pText
|
||||||
|
>PUSHWZ keymod/key
|
||||||
|
>PUSHWZ id
|
||||||
|
>PUSHW D X
|
||||||
|
>PUSHWI 45 Y
|
||||||
|
jmp BUT.New
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libgui.s.mbox
|
SAVE usr/src/lib/libgui.s.mbox
|
||||||
|
|
|
@ -8,7 +8,7 @@ MENU.New >PULLW DY
|
||||||
>PULLYA
|
>PULLYA
|
||||||
|
|
||||||
MENU.New.I >STYA ZPPtr1 MENU definition
|
MENU.New.I >STYA ZPPtr1 MENU definition
|
||||||
>STYA ZPObjPtr for pass #2
|
>STYA ZPPtr2 for pass #2
|
||||||
|
|
||||||
ldx MENU.Stack.Cnt
|
ldx MENU.Stack.Cnt
|
||||||
cpx #MENU.MAX
|
cpx #MENU.MAX
|
||||||
|
@ -18,42 +18,31 @@ MENU.New.I >STYA ZPPtr1 MENU definition
|
||||||
>SYSCALL2 GetMem
|
>SYSCALL2 GetMem
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>STYA ZPMENUPtr
|
>STYA ZPObjPtr
|
||||||
txa hMenu
|
txa hMenu
|
||||||
|
|
||||||
ldx MENU.Stack.Cnt
|
ldx MENU.Stack.Cnt
|
||||||
sta MENU.Stack,x
|
sta MENU.Stack,x
|
||||||
|
|
||||||
lda #S.OBJ.T.MENU
|
lda #S.OBJ.T.MENU
|
||||||
sta (ZPMENUPtr) S.OBJ.T
|
sta (ZPObjPtr) S.OBJ.T
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
|
|
||||||
ldy #S.MENU.Items-1
|
ldy #S.MENU.Items-1
|
||||||
|
|
||||||
.1 sta (ZPMENUPtr),y
|
.1 sta (ZPObjPtr),y
|
||||||
dey
|
dey
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldx #3
|
lda #S.OBJ.F.BORDER
|
||||||
ldy #S.OBJ.X1+3
|
ldy #S.OBJ.F
|
||||||
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
.2 lda DX,x
|
jsr OBJ.SetDXDYX1Y1
|
||||||
sta (ZPMENUPtr),y
|
|
||||||
dey
|
|
||||||
dex
|
|
||||||
bpl .2
|
|
||||||
|
|
||||||
>LDYA ZPObjPtr
|
|
||||||
>STYA ZPPtr1 MENU definition
|
|
||||||
|
|
||||||
jsr MENU.GetData
|
jsr MENU.GetData
|
||||||
|
|
||||||
ldx MENU.Stack.Cnt
|
|
||||||
lda MENU.Stack,x
|
|
||||||
>SYSCALL2 GetMemPtr
|
|
||||||
>STYA ZPMENUPtr
|
|
||||||
|
|
||||||
jsr MENU.SetMenuSizePos
|
jsr MENU.SetMenuSizePos
|
||||||
|
|
||||||
ldx MENU.Stack.Cnt
|
ldx MENU.Stack.Cnt
|
||||||
|
@ -111,99 +100,88 @@ MENU.GetSize lda #S.MENU.Items+1 Ending\0
|
||||||
.8 >LDYA Counter
|
.8 >LDYA Counter
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ZPPtr1 = defintion
|
* ZPPtr2 = defintion
|
||||||
* ZPMENUPtr = DstBuf
|
* ZPObjPtr = DstMenu
|
||||||
|
* ZPPtr1 = DstMItem
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MENU.GetData lda ZPMENUPtr
|
MENU.GetData jsr MENU.GetMItems
|
||||||
clc
|
|
||||||
adc #S.MENU.Items
|
|
||||||
sta ZPMENUPtr
|
|
||||||
bcc .1
|
|
||||||
|
|
||||||
inc ZPMENUPtr+1
|
.1 lda (ZPPtr2)
|
||||||
|
sta (ZPPtr1)
|
||||||
.1 lda (ZPPtr1)
|
|
||||||
sta (ZPMENUPtr)
|
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
cmp #S.MITEM.T.SEP
|
cmp #S.MITEM.T.SEP
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
inc ZPPtr1 skip 1 byte
|
inc ZPPtr2 skip 1 byte
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
inc ZPPtr1+1
|
inc ZPPtr2+1
|
||||||
bra .5
|
bra .5
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.2 cmp #S.MITEM.T.ITEM
|
.2 cmp #S.MITEM.T.ITEM
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
ldy #1 T+ID+KEMOD+KEY+pICON+"text"
|
ldy #1 T+ID+KEMOD+KEY+pICON+"text"
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr2),y
|
||||||
ldy #S.MITEM.ID
|
ldy #S.MITEM.ID
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPPtr1),y
|
||||||
|
|
||||||
ldy #2
|
ldy #2
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr2),y
|
||||||
tax
|
tax
|
||||||
iny
|
iny
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr2),y
|
||||||
|
|
||||||
ldy #S.MITEM.KEYMOD+1
|
ldy #S.MITEM.KEYMOD+1
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPPtr1),y
|
||||||
dey KEY
|
dey KEY
|
||||||
txa
|
txa
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPPtr1),y
|
||||||
|
|
||||||
lda #4
|
lda #4
|
||||||
bra .4 skip 4 bytes
|
bra .4 skip 4 bytes
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.3 ldy #1 skip T+pMENU+pICON+"text"
|
.3 ldy #1 skip T+pMENU+pICON+"text"
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr2),y
|
||||||
tax
|
tax
|
||||||
iny
|
iny
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr2),y
|
||||||
|
|
||||||
ldy #S.MITEM.pMENU+1
|
ldy #S.MITEM.pMENU+1
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPPtr1),y
|
||||||
dey
|
dey
|
||||||
txa
|
txa
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPPtr1),y
|
||||||
lda #3 skip 3 bytes
|
lda #3 skip 3 bytes
|
||||||
|
|
||||||
.4 jsr SkipAPtr1
|
.4 jsr SkipAPtr2
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr2),y
|
||||||
ldy #S.MITEM.pICON+1
|
ldy #S.MITEM.pICON+1
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPPtr1),y
|
||||||
dey
|
dey
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr2)
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPPtr1),y
|
||||||
|
|
||||||
lda #2 skip pICON
|
lda #2 skip pICON
|
||||||
jsr SkipAPtr1
|
jsr SkipAPtr2
|
||||||
|
|
||||||
ldy #S.MITEM.pTEXT
|
ldy #S.MITEM.pTEXT
|
||||||
lda ZPPtr1
|
lda ZPPtr2
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPPtr1),y
|
||||||
iny
|
iny
|
||||||
lda ZPPtr1+1
|
lda ZPPtr2+1
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPPtr1),y
|
||||||
|
|
||||||
jsr SkipStrZPtr1 skip "TEXT\0"
|
jsr SkipStrZPtr2 skip "TEXT\0"
|
||||||
|
|
||||||
ldy #S.MITEM.S
|
ldy #S.MITEM.S
|
||||||
lda #0
|
lda #0
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPPtr1),y
|
||||||
|
|
||||||
.5 lda ZPMENUPtr
|
.5 jsr MENU.NextMItem
|
||||||
clc
|
|
||||||
adc #S.MITEM
|
|
||||||
sta ZPMENUPtr
|
|
||||||
bcc .1
|
|
||||||
|
|
||||||
inc ZPMENUPtr+1
|
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
@ -234,15 +212,15 @@ MENU.SetMenuSizePos
|
||||||
|
|
||||||
.2 jsr MENU.NextMItemDY
|
.2 jsr MENU.NextMItemDY
|
||||||
bra .1
|
bra .1
|
||||||
|
*--------------------------------------
|
||||||
.3 lda #2+MENU.LMargin+MENU.RMargin 2px Borders+5 LMARGIN (Checked) +5 RMARGIN (SubMenu)
|
.3 lda #8+8 1px Border+7 (Checked) +7 (SubMenu)+1px Border
|
||||||
clc
|
clc
|
||||||
adc IY Icon W
|
adc IY Icon W
|
||||||
sta DX
|
sta DX
|
||||||
stz DX+1
|
stz DX+1
|
||||||
|
|
||||||
lda DX
|
lda DX
|
||||||
sec 1px sep
|
clc
|
||||||
adc IE Max Text W
|
adc IE Max Text W
|
||||||
sta DX
|
sta DX
|
||||||
|
|
||||||
|
@ -251,55 +229,56 @@ MENU.SetMenuSizePos
|
||||||
sta DX+1
|
sta DX+1
|
||||||
|
|
||||||
lda DX
|
lda DX
|
||||||
sec 1px sep
|
clc
|
||||||
adc INE Max Mod-Key W
|
adc INE Max Mod-Key W
|
||||||
sta DX
|
sta DX
|
||||||
bcc .4
|
|
||||||
|
|
||||||
inc DX+1
|
lda DX+1
|
||||||
|
adc INE+1
|
||||||
|
sta DX+1
|
||||||
|
|
||||||
.4 ldy #S.OBJ.W
|
ldy #S.OBJ.W
|
||||||
|
lda DX
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPObjPtr),y
|
||||||
iny
|
iny
|
||||||
lda DX+1
|
lda DX+1
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
iny #S.OBJ.H
|
iny #S.OBJ.H
|
||||||
|
|
||||||
lda DY
|
lda DY
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPObjPtr),y
|
||||||
iny
|
iny
|
||||||
lda DY+1
|
lda DY+1
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
ldy #S.MENU.iW
|
ldy #S.MENU.iW
|
||||||
lda IY
|
lda IY
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
ldy #S.MENU.tW
|
ldy #S.MENU.tW
|
||||||
lda IE
|
lda IE
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPObjPtr),y
|
||||||
iny
|
iny
|
||||||
lda IE+1
|
lda IE+1
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
iny #S.MENU.kW
|
ldy #S.MENU.kW
|
||||||
lda INE
|
lda INE
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPObjPtr),y
|
||||||
iny
|
iny
|
||||||
lda INE+1
|
lda INE+1
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPObjPtr),y
|
||||||
|
*--------------------------------------
|
||||||
ldy #S.OBJ.Y1
|
ldy #S.OBJ.Y1
|
||||||
lda DY
|
lda DY
|
||||||
clc
|
clc
|
||||||
adc (ZPMENUPtr),y
|
adc (ZPObjPtr),y
|
||||||
tax
|
tax
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda DY+1
|
lda DY+1
|
||||||
adc (ZPMENUPtr),y
|
adc (ZPObjPtr),y
|
||||||
|
|
||||||
cpx WND.Screen+S.OBJ.H
|
cpx WND.Screen+S.OBJ.H
|
||||||
sbc WND.Screen+S.OBJ.H+1
|
sbc WND.Screen+S.OBJ.H+1
|
||||||
|
@ -307,18 +286,18 @@ MENU.SetMenuSizePos
|
||||||
|
|
||||||
ldy #S.OBJ.Y1
|
ldy #S.OBJ.Y1
|
||||||
|
|
||||||
lda (ZPMENUPtr),y
|
lda (ZPObjPtr),y
|
||||||
* sec
|
* sec
|
||||||
sbc DY
|
sbc DY
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
iny
|
iny
|
||||||
|
|
||||||
lda (ZPMENUPtr),y
|
lda (ZPObjPtr),y
|
||||||
sbc DY+1
|
sbc DY+1
|
||||||
sta (ZPMENUPtr),y
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
.5 >LDYA ZPMENUPtr
|
.5 >LDYA ZPObjPtr
|
||||||
jmp OBJ.SetX2Y2
|
jmp OBJ.SetX2Y2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MENU.GetMItemW ldy #S.MITEM.pICON
|
MENU.GetMItemW ldy #S.MITEM.pICON
|
||||||
|
@ -327,7 +306,7 @@ MENU.GetMItemW ldy #S.MITEM.pICON
|
||||||
ora (ZPPtr1),y
|
ora (ZPPtr1),y
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
lda #17 Reserve space for Icon W + 1px SEP
|
lda #20 Reserve space for Icon W + 4px SEP
|
||||||
sta IY
|
sta IY
|
||||||
|
|
||||||
.1 jsr MENU.GetText
|
.1 jsr MENU.GetText
|
||||||
|
@ -351,7 +330,7 @@ MENU.GetMItemW ldy #S.MITEM.pICON
|
||||||
jsr FON.GetTextSize
|
jsr FON.GetTextSize
|
||||||
|
|
||||||
ldx CB.Cache+S.CB.SrcW
|
ldx CB.Cache+S.CB.SrcW
|
||||||
cmp INE
|
cpx INE
|
||||||
lda CB.Cache+S.CB.SrcW+1
|
lda CB.Cache+S.CB.SrcW+1
|
||||||
sbc INE+1
|
sbc INE+1
|
||||||
bcc .8
|
bcc .8
|
||||||
|
@ -362,38 +341,6 @@ MENU.GetMItemW ldy #S.MITEM.pICON
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* hMENU8, ItemID8, Prop8, Value16
|
|
||||||
*--------------------------------------
|
|
||||||
MENU.SetMItemProp
|
|
||||||
ldy #4 hMENU
|
|
||||||
lda (pStack),y
|
|
||||||
>SYSCALL2 GetMemPtr
|
|
||||||
>STYA ZPMENUPtr
|
|
||||||
|
|
||||||
ldy #3 ID8
|
|
||||||
lda (pStack),y
|
|
||||||
tax
|
|
||||||
|
|
||||||
jsr MENU.FindMItemByID
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
ldy #2 Prop8
|
|
||||||
lda (pStack),y
|
|
||||||
|
|
||||||
tay
|
|
||||||
|
|
||||||
>PULLA Value16
|
|
||||||
sta (ZPPtr1),y
|
|
||||||
|
|
||||||
iny
|
|
||||||
>PULLA
|
|
||||||
sta (ZPPtr1),y
|
|
||||||
|
|
||||||
* clc
|
|
||||||
|
|
||||||
.8 >POP 3
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
MENU.FindMItemByID
|
MENU.FindMItemByID
|
||||||
jsr MENU.GetMItems
|
jsr MENU.GetMItems
|
||||||
|
|
||||||
|
@ -417,7 +364,12 @@ MENU.FindMItemByID
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MENU.Enter jsr MENU.GetDXDY
|
* ZPObjPtr = Menu
|
||||||
|
*--------------------------------------
|
||||||
|
MENU.Enter >LDYA L.WND.Screen
|
||||||
|
jsr CLIP.GetRect
|
||||||
|
|
||||||
|
jsr MENU.GetDXDY
|
||||||
|
|
||||||
stz D
|
stz D
|
||||||
stz D+1
|
stz D+1
|
||||||
|
@ -425,12 +377,12 @@ MENU.Enter jsr MENU.GetDXDY
|
||||||
ldy #S.OBJ.X2
|
ldy #S.OBJ.X2
|
||||||
lda DX X1
|
lda DX X1
|
||||||
clc
|
clc
|
||||||
adc (ZPMENUPtr),y
|
adc (ZPObjPtr),y
|
||||||
sta IE IE = X2
|
sta IE IE = X2
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda DX+1
|
lda DX+1
|
||||||
adc (ZPMENUPtr),y
|
adc (ZPObjPtr),y
|
||||||
sta IE+1
|
sta IE+1
|
||||||
|
|
||||||
jsr MENU.GetMItems
|
jsr MENU.GetMItems
|
||||||
|
@ -443,7 +395,7 @@ MENU.Enter jsr MENU.GetDXDY
|
||||||
|
|
||||||
lda DY Y1
|
lda DY Y1
|
||||||
clc
|
clc
|
||||||
adc SYSFON.Hp2
|
adc SYSFON.Hp1
|
||||||
sta INE INE = Y2
|
sta INE INE = Y2
|
||||||
lda DY+1
|
lda DY+1
|
||||||
adc #0
|
adc #0
|
||||||
|
@ -496,8 +448,11 @@ MENU.Enter jsr MENU.GetDXDY
|
||||||
sta D+1
|
sta D+1
|
||||||
|
|
||||||
lda DY
|
lda DY
|
||||||
|
sec
|
||||||
|
sbc #1
|
||||||
sta Counter
|
sta Counter
|
||||||
lda DY+1
|
lda DY+1
|
||||||
|
sbc #0
|
||||||
sta Counter+1
|
sta Counter+1
|
||||||
|
|
||||||
bra .2
|
bra .2
|
||||||
|
@ -505,23 +460,25 @@ MENU.Enter jsr MENU.GetDXDY
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.4 >LDYA L.WND.Screen
|
.4 lda D
|
||||||
jsr CB.FlushBufToYA
|
|
||||||
|
|
||||||
lda D
|
|
||||||
ora D+1
|
ora D+1
|
||||||
beq .5
|
beq .5
|
||||||
|
|
||||||
>PUSHW D pMENU
|
>PUSHW D pMENU
|
||||||
|
|
||||||
ldy #S.OBJ.X2+1
|
ldy #S.OBJ.X2
|
||||||
lda (ZPMENUPtr),y
|
lda (ZPObjPtr),y
|
||||||
|
clc
|
||||||
|
adc #1
|
||||||
|
tax
|
||||||
|
iny
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
adc #0
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
txa
|
||||||
lda (ZPMENUPtr),y
|
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
>PUSHW Counter
|
>PUSHW Counter Y1
|
||||||
|
|
||||||
jsr MENU.New
|
jsr MENU.New
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -529,7 +486,7 @@ MENU.Enter jsr MENU.GetDXDY
|
||||||
jmp MENU.Draw
|
jmp MENU.Draw
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.5 lda MSG+S.MSG.S
|
.5 lda MSG+S.MSG.S
|
||||||
bit #S.MSG.S.CLK
|
bit #S.XY.S.CLK
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
lda #S.MSG.T.ID
|
lda #S.MSG.T.ID
|
||||||
|
@ -541,21 +498,52 @@ MENU.Enter jsr MENU.GetDXDY
|
||||||
|
|
||||||
jmp MENU.DestroyAll
|
jmp MENU.DestroyAll
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
MENU.Leave clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
* DrawMenu(hMENU)
|
* DrawMenu(hMENU)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MENU.Draw >SYSCALL2 GetMemPtr
|
MENU.Draw >SYSCALL2 GetMemPtr
|
||||||
>STYA ZPMENUPtr
|
>STYA ZPObjPtr
|
||||||
|
|
||||||
jsr MENU.Save
|
>LDYA L.WND.Screen
|
||||||
|
jsr CLIP.GetRect
|
||||||
|
|
||||||
|
lda #S.CB.CMD.GETRECTBUFSIZE
|
||||||
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
|
jsr CB.GetObjX1Y1X2Y2
|
||||||
|
|
||||||
|
jsr CB.GFXWriteClip
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CB.GetBuf
|
>SYSCALL2 NewStkObj
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYA ZPMENUPtr
|
stx CB.Cache+S.CB.DstPtr
|
||||||
|
stz CB.Cache+S.CB.DstPtr+1
|
||||||
|
|
||||||
|
txa
|
||||||
|
ldy #S.MENU.hSAVEBUF
|
||||||
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
|
lda #S.CB.CMD.BITBLT
|
||||||
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
|
lda #S.CB.OP.SAVE
|
||||||
|
sta CB.Cache+S.CB.OP
|
||||||
|
|
||||||
|
jsr CB.ResetSrcXY
|
||||||
|
|
||||||
|
jsr CB.GetObjSrcWH
|
||||||
|
|
||||||
|
jsr CB.Write
|
||||||
|
|
||||||
|
>LDYA ZPObjPtr
|
||||||
ldx #0
|
ldx #0
|
||||||
jsr OBJ.DrawBorders
|
jsr OBJ.DrawBorders
|
||||||
|
bcs .9
|
||||||
|
|
||||||
jsr MENU.GetDXDY
|
jsr MENU.GetDXDY
|
||||||
|
|
||||||
jsr MENU.GetMItems
|
jsr MENU.GetMItems
|
||||||
|
@ -563,12 +551,13 @@ MENU.Draw >SYSCALL2 GetMemPtr
|
||||||
.1 lda (ZPPtr1)
|
.1 lda (ZPPtr1)
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
jsr MENU.DrawMItem
|
jsr MENU.DrawMItemBuf
|
||||||
|
bcs .9
|
||||||
|
|
||||||
jsr MENU.NextMItemDY
|
jsr MENU.NextMItemDY
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.8 >LDYA L.WND.Screen
|
.8 clc
|
||||||
jmp CB.FlushBufToYA
|
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -578,30 +567,28 @@ MENU.DrawMItemBuf
|
||||||
|
|
||||||
jsr MENU.DrawMItem
|
jsr MENU.DrawMItem
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYA L.WND.Screen
|
jmp CB.FlushBuf
|
||||||
jmp CB.FlushBufToYA
|
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MENU.DrawMItem jsr MENU.ResetX1Y1X2
|
MENU.DrawMItem jsr MENU.ResetX1Y1X2
|
||||||
|
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
cmp #S.MITEM.T.SEP
|
cmp #S.MITEM.T.SEP
|
||||||
bne MENU.DrawMItem1
|
bne .1
|
||||||
|
|
||||||
jsr CB.BorderLineH
|
jsr CB.BorderLineH
|
||||||
|
|
||||||
jmp CB.Cache2CBBuf
|
jmp CB.Cache2CBBuf
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MENU.DrawMItem1 jsr MENU.IsSelected
|
.1 jsr MENU.IsSelected
|
||||||
|
|
||||||
lda PREFS.MenuColor
|
lda PREFS.MenuColor
|
||||||
bcc .15
|
bcc .2
|
||||||
|
|
||||||
eor #$ff
|
eor #$ff
|
||||||
|
|
||||||
.15 jsr CB.FillRectMonoA
|
.2 jsr CB.FillRectMonoA
|
||||||
|
|
||||||
lda CB.Cache+S.CB.Y1
|
lda CB.Cache+S.CB.Y1
|
||||||
sec
|
sec
|
||||||
|
@ -613,72 +600,57 @@ MENU.DrawMItem1 jsr MENU.IsSelected
|
||||||
sta CB.Cache+S.CB.Y2+1
|
sta CB.Cache+S.CB.Y2+1
|
||||||
jsr CB.Cache2CBBuf
|
jsr CB.Cache2CBBuf
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
inc CB.Cache+S.CB.Y1 Y1:1px margin
|
jsr CB.IncY1 Y1:1px margin
|
||||||
bne .12
|
|
||||||
|
|
||||||
inc CB.Cache+S.CB.Y1+1
|
lda #8 TODO : Checked
|
||||||
|
jsr CB.AddA2X1
|
||||||
|
|
||||||
.12 lda CB.Cache+S.CB.X1
|
jsr MENU.GetIcon
|
||||||
clc
|
beq .3
|
||||||
adc #MENU.LMargin TODO : Checked
|
|
||||||
sta CB.Cache+S.CB.X1
|
|
||||||
bcc .11
|
|
||||||
|
|
||||||
inc CB.Cache+S.CB.X1+1
|
|
||||||
|
|
||||||
.11 jsr MENU.GetIcon
|
|
||||||
beq .2
|
|
||||||
|
|
||||||
jsr DRAW.yaBM
|
jsr DRAW.yaBM
|
||||||
|
*--------------------------------------
|
||||||
|
.3 ldy #S.MENU.iW
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
jsr CB.AddA2X1
|
||||||
|
|
||||||
.2 lda CB.Cache+S.CB.X1
|
|
||||||
clc
|
|
||||||
ldy #S.MENU.iW
|
|
||||||
adc (ZPMENUPtr),y
|
|
||||||
sta CB.Cache+S.CB.X1
|
|
||||||
bcc .21
|
|
||||||
|
|
||||||
inc CB.Cache+S.CB.X1+1
|
|
||||||
|
|
||||||
.21 jsr MENU.IsSelected
|
|
||||||
jsr MENU.GetText
|
jsr MENU.GetText
|
||||||
ldx hSYSFON
|
ldx hSYSFON
|
||||||
jsr DRAW.YAText
|
jsr DRAW.YAText
|
||||||
|
|
||||||
lda CB.Cache+S.CB.X1
|
|
||||||
sec
|
|
||||||
ldy #S.MENU.tW
|
ldy #S.MENU.tW
|
||||||
adc (ZPMENUPtr),y
|
lda (ZPObjPtr),y
|
||||||
|
clc
|
||||||
|
adc CB.Cache+S.CB.X1
|
||||||
sta CB.Cache+S.CB.X1
|
sta CB.Cache+S.CB.X1
|
||||||
lda CB.Cache+S.CB.X1+1
|
|
||||||
iny
|
|
||||||
adc (ZPMENUPtr),y
|
|
||||||
sta CB.Cache+S.CB.X1+1
|
|
||||||
|
|
||||||
|
iny
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
adc CB.Cache+S.CB.X1+1
|
||||||
|
sta CB.Cache+S.CB.X1+1
|
||||||
|
*--------------------------------------
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
cmp #S.MITEM.T.ITEM
|
cmp #S.MITEM.T.ITEM
|
||||||
bne .3
|
bne .4
|
||||||
|
|
||||||
jsr MENU.IsSelected
|
|
||||||
jsr MENU.GetKeyString C untouched
|
jsr MENU.GetKeyString C untouched
|
||||||
beq .3
|
beq .8
|
||||||
|
|
||||||
ldx hSYSFON
|
ldx hSYSFON
|
||||||
jsr DRAW.YAText
|
jmp DRAW.YAText
|
||||||
|
*--------------------------------------
|
||||||
.3 lda (ZPPtr1)
|
.4 cmp #S.MITEM.T.SUBMENU
|
||||||
cmp #S.MITEM.T.SUBMENU
|
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
lda CB.Cache+S.CB.X1
|
|
||||||
sec
|
|
||||||
ldy #S.MENU.kW
|
ldy #S.MENU.kW
|
||||||
adc (ZPMENUPtr),y
|
lda (ZPObjPtr),y
|
||||||
|
clc
|
||||||
|
adc CB.Cache+S.CB.X1
|
||||||
sta CB.Cache+S.CB.X1
|
sta CB.Cache+S.CB.X1
|
||||||
|
|
||||||
lda CB.Cache+S.CB.X1+1
|
|
||||||
iny
|
iny
|
||||||
adc (ZPMENUPtr),y
|
lda (ZPObjPtr),y
|
||||||
|
adc CB.Cache+S.CB.X1+1
|
||||||
sta CB.Cache+S.CB.X1+1
|
sta CB.Cache+S.CB.X1+1
|
||||||
|
|
||||||
ldx #BM.ID.RIGHT
|
ldx #BM.ID.RIGHT
|
||||||
|
@ -775,73 +747,25 @@ MENU.GetKeyString
|
||||||
|
|
||||||
.6 pla
|
.6 pla
|
||||||
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
MENU.Save jsr PTR.Disable
|
|
||||||
|
|
||||||
lda #S.CB.CMD.GETRECTBUFSIZE
|
|
||||||
jsr CB.InitCacheA
|
|
||||||
|
|
||||||
ldy #S.OBJ.X1
|
|
||||||
ldx #0
|
|
||||||
|
|
||||||
.1 lda (ZPMENUPtr),y
|
|
||||||
sta CB.Cache+S.CB.X1,x
|
|
||||||
iny
|
|
||||||
inx
|
|
||||||
cpx #8 X1,Y1,X2,Y2
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
jsr CB.GFXWrite
|
|
||||||
|
|
||||||
>SYSCALL2 NewStkObj
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
stx CB.Cache+S.CB.DstPtr
|
|
||||||
|
|
||||||
txa
|
|
||||||
ldy #S.MENU.hSAVEBUF
|
|
||||||
sta (ZPMENUPtr),y
|
|
||||||
|
|
||||||
lda #S.CB.CMD.BITBLT
|
|
||||||
sta CB.Cache+S.CB.CMD
|
|
||||||
|
|
||||||
lda #S.CB.OP.SAVE
|
|
||||||
sta CB.Cache+S.CB.OP
|
|
||||||
|
|
||||||
ldy #S.OBJ.W
|
|
||||||
ldx #0
|
|
||||||
|
|
||||||
.2 lda (ZPMENUPtr),y
|
|
||||||
sta CB.Cache+S.CB.SrcW,x
|
|
||||||
iny
|
|
||||||
inx
|
|
||||||
cpx #4 W,H
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
jsr CB.GFXWrite
|
|
||||||
|
|
||||||
jmp PTR.Enable
|
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MENU.GetDXDY ldy #S.OBJ.X1
|
MENU.GetDXDY ldy #S.OBJ.X1
|
||||||
lda (ZPMENUPtr),y
|
lda (ZPObjPtr),y
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
sta DX
|
sta DX
|
||||||
iny
|
iny
|
||||||
lda (ZPMENUPtr),y
|
lda (ZPObjPtr),y
|
||||||
adc #0
|
adc #0
|
||||||
sta DX+1
|
sta DX+1
|
||||||
|
|
||||||
ldy #S.OBJ.Y1
|
ldy #S.OBJ.Y1
|
||||||
lda (ZPMENUPtr),y
|
lda (ZPObjPtr),y
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
sta DY
|
sta DY
|
||||||
iny
|
iny
|
||||||
lda (ZPMENUPtr),y
|
lda (ZPObjPtr),y
|
||||||
adc #0
|
adc #0
|
||||||
sta DY+1
|
sta DY+1
|
||||||
|
|
||||||
|
@ -849,12 +773,12 @@ MENU.GetDXDY ldy #S.OBJ.X1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MENU.ResetX1Y1X2
|
MENU.ResetX1Y1X2
|
||||||
ldy #S.OBJ.X1
|
ldy #S.OBJ.X1
|
||||||
lda (ZPMENUPtr),y
|
lda (ZPObjPtr),y
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
sta CB.Cache+S.CB.X1
|
sta CB.Cache+S.CB.X1
|
||||||
iny
|
iny
|
||||||
lda (ZPMENUPtr),y
|
lda (ZPObjPtr),y
|
||||||
adc #0
|
adc #0
|
||||||
sta CB.Cache+S.CB.X1+1
|
sta CB.Cache+S.CB.X1+1
|
||||||
|
|
||||||
|
@ -864,23 +788,23 @@ MENU.ResetX1Y1X2
|
||||||
sta CB.Cache+S.CB.Y1+1
|
sta CB.Cache+S.CB.Y1+1
|
||||||
|
|
||||||
ldy #S.OBJ.X2
|
ldy #S.OBJ.X2
|
||||||
lda (ZPMENUPtr),y
|
lda (ZPObjPtr),y
|
||||||
sec
|
sec
|
||||||
sbc #1
|
sbc #1
|
||||||
sta CB.Cache+S.CB.X2
|
sta CB.Cache+S.CB.X2
|
||||||
iny
|
iny
|
||||||
lda (ZPMENUPtr),y
|
lda (ZPObjPtr),y
|
||||||
sbc #0
|
sbc #0
|
||||||
sta CB.Cache+S.CB.X2+1
|
sta CB.Cache+S.CB.X2+1
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MENU.GetMItems lda ZPMENUPtr
|
MENU.GetMItems lda ZPObjPtr
|
||||||
clc
|
clc
|
||||||
adc #S.MENU.Items
|
adc #S.MENU.Items
|
||||||
sta ZPPtr1
|
sta ZPPtr1
|
||||||
|
|
||||||
lda ZPMENUPtr+1
|
lda ZPObjPtr+1
|
||||||
adc /S.MENU.Items
|
adc /S.MENU.Items
|
||||||
sta ZPPtr1+1
|
sta ZPPtr1+1
|
||||||
rts
|
rts
|
||||||
|
@ -915,13 +839,18 @@ MENU.Destroy clc
|
||||||
jsr PTR.Disable
|
jsr PTR.Disable
|
||||||
|
|
||||||
lda #S.CB.CMD.BITBLT
|
lda #S.CB.CMD.BITBLT
|
||||||
jsr CB.InitCacheA
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
lda #S.CB.OP.RESTORE
|
lda #S.CB.OP.RESTORE
|
||||||
sta CB.Cache+S.CB.OP
|
sta CB.Cache+S.CB.OP
|
||||||
|
|
||||||
plp
|
plp
|
||||||
|
|
||||||
|
lda ZPObjPtr+1
|
||||||
|
pha
|
||||||
|
lda ZPObjPtr
|
||||||
|
pha
|
||||||
|
|
||||||
.2 php
|
.2 php
|
||||||
|
|
||||||
ldx MENU.Stack.Cnt
|
ldx MENU.Stack.Cnt
|
||||||
|
@ -929,33 +858,22 @@ MENU.Destroy clc
|
||||||
>SYSCALL2 GetMemPtr
|
>SYSCALL2 GetMemPtr
|
||||||
>STYA ZPObjPtr
|
>STYA ZPObjPtr
|
||||||
|
|
||||||
ldy #S.OBJ.X1
|
jsr CB.GetObjX1Y1X2Y2
|
||||||
ldx #0
|
|
||||||
|
|
||||||
.3 lda (ZPObjPtr),y
|
jsr CB.ResetSrcXY
|
||||||
sta CB.Cache+S.CB.X1,x
|
|
||||||
iny
|
|
||||||
inx
|
|
||||||
cpx #8 X1,Y1,X2,Y2
|
|
||||||
bne .3
|
|
||||||
|
|
||||||
ldy #S.OBJ.W
|
jsr CB.GetObjSrcWH
|
||||||
ldx #0
|
|
||||||
|
|
||||||
.4 lda (ZPObjPtr),y
|
|
||||||
sta CB.Cache+S.CB.SrcW,x
|
|
||||||
iny
|
|
||||||
inx
|
|
||||||
cpx #4 W,H
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
ldy #S.MENU.hSAVEBUF
|
ldy #S.MENU.hSAVEBUF
|
||||||
lda (ZPObjPtr),y
|
lda (ZPObjPtr),y
|
||||||
sta CB.Cache+S.CB.DstPtr
|
sta CB.Cache+S.CB.DstPtr
|
||||||
|
stz CB.Cache+S.CB.DstPtr+1
|
||||||
|
|
||||||
jsr CB.GFXWrite
|
ldx #0 Select CB.Cache
|
||||||
|
jsr CB.GFXWriteX Direct Write (no clip)
|
||||||
|
|
||||||
lda CB.Cache+S.CB.DstPtr
|
ldy #S.MENU.hSAVEBUF
|
||||||
|
lda (ZPObjPtr),y
|
||||||
>SYSCALL2 FreeStkObj
|
>SYSCALL2 FreeStkObj
|
||||||
|
|
||||||
ldx MENU.Stack.Cnt
|
ldx MENU.Stack.Cnt
|
||||||
|
@ -969,7 +887,12 @@ MENU.Destroy clc
|
||||||
|
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
.7 jmp PTR.Enable
|
.7 pla
|
||||||
|
sta ZPObjPtr
|
||||||
|
pla
|
||||||
|
sta ZPObjPtr+1
|
||||||
|
|
||||||
|
jmp PTR.Enable
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -19,19 +19,24 @@ MOU.Init >PUSHW L.DEVNAME.MOUSE
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MOU.Setup lda DCB.GFX+S.DCB.GFX.W+1
|
* make sure mouse X,Y always in Screen
|
||||||
|
*--------------------------------------
|
||||||
|
MOU.Setup lda CLIP.Screen+S.RECT.X2+1
|
||||||
sta MouseClamp+3
|
sta MouseClamp+3
|
||||||
lsr
|
lsr
|
||||||
sta PTR.Pos+S.POINT.X+1
|
sta PTR.Pos+S.POINT.X+1
|
||||||
lda DCB.GFX+S.DCB.GFX.W
|
|
||||||
|
lda CLIP.Screen+S.RECT.X2
|
||||||
sta MouseClamp+2
|
sta MouseClamp+2
|
||||||
ror
|
ror
|
||||||
sta PTR.Pos+S.POINT.X
|
sta PTR.Pos+S.POINT.X
|
||||||
lda DCB.GFX+S.DCB.GFX.H+1
|
|
||||||
|
lda CLIP.Screen+S.RECT.Y2+1
|
||||||
sta MouseClamp+7
|
sta MouseClamp+7
|
||||||
lsr
|
lsr
|
||||||
sta PTR.Pos+S.POINT.Y+1
|
sta PTR.Pos+S.POINT.Y+1
|
||||||
lda DCB.GFX+S.DCB.GFX.H
|
|
||||||
|
lda CLIP.Screen+S.RECT.Y2
|
||||||
sta MouseClamp+6
|
sta MouseClamp+6
|
||||||
ror
|
ror
|
||||||
sta PTR.Pos+S.POINT.Y
|
sta PTR.Pos+S.POINT.Y
|
||||||
|
@ -68,25 +73,25 @@ MOU.CheckOverMenu
|
||||||
lda MENU.Stack,x
|
lda MENU.Stack,x
|
||||||
|
|
||||||
>SYSCALL2 GetMemPtr
|
>SYSCALL2 GetMemPtr
|
||||||
>STYA ZPMENUPtr
|
>STYA ZPObjPtr
|
||||||
pha
|
|
||||||
tya
|
jsr MOU.InObj
|
||||||
clc
|
|
||||||
adc #S.OBJ.X1
|
|
||||||
tay
|
|
||||||
pla
|
|
||||||
adc /S.OBJ.X1
|
|
||||||
jsr MOU.InRectYA
|
|
||||||
bcs .3
|
bcs .3
|
||||||
|
|
||||||
jsr MENU.Enter
|
lda #PTR.T.ARROW
|
||||||
|
jsr PTR.Set
|
||||||
|
|
||||||
clc
|
jmp MENU.Enter
|
||||||
rts
|
|
||||||
|
|
||||||
.3 ldx MENU.Stack.Idx
|
.3 ldx MENU.Stack.Idx
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
|
lda MSG+S.MSG.S
|
||||||
|
bit #S.XY.S.CLK
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
jsr MENU.DestroyAll
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -111,76 +116,71 @@ MOU.CheckOverWND
|
||||||
lda WND.Stack-1,x
|
lda WND.Stack-1,x
|
||||||
jsr OBJ.GetHWNDA
|
jsr OBJ.GetHWNDA
|
||||||
|
|
||||||
ldy #S.OBJ.F
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
and #S.OBJ.F.BORDER
|
|
||||||
beq .2
|
|
||||||
|
|
||||||
jsr MOU.ChkWNDBorders
|
jsr MOU.ChkWNDBorders
|
||||||
bcc .99
|
bcc MOU.CheckOverSysBut.RTS
|
||||||
|
|
||||||
.2 lda ZPWNDPtr
|
lda ZPWNDPtr
|
||||||
clc
|
clc
|
||||||
adc #S.OBJ.X1
|
adc #S.OBJ.X1
|
||||||
tay
|
tay
|
||||||
lda ZPWNDPtr+1
|
lda ZPWNDPtr+1
|
||||||
adc #0
|
adc /S.OBJ.X1
|
||||||
|
|
||||||
jsr MOU.InRectYA
|
jsr MOU.InRectYA
|
||||||
bcs .7 not over this WND
|
bcs .7 not over this WND
|
||||||
|
|
||||||
lda MSG+S.MSG.S
|
lda MSG+S.MSG.S
|
||||||
bit #S.MSG.S.CLK
|
bit #S.XY.S.CLK
|
||||||
beq .22
|
beq .2
|
||||||
|
|
||||||
jsr WND.Bring2Front
|
jsr WND.Bring2Front
|
||||||
|
|
||||||
.22 ldy #S.WND.TBarY2
|
.2 lda ZPWNDPtr
|
||||||
|
clc
|
||||||
|
adc #S.WND.InnerX1
|
||||||
|
tay
|
||||||
|
lda ZPWNDPtr+1
|
||||||
|
adc /S.WND.InnerX1
|
||||||
|
jsr MOU.InRectYA
|
||||||
|
bcc .8 in Inner Space
|
||||||
|
|
||||||
|
ldy #S.OBJ.S
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
cmp MSG+S.MSG.Y1
|
and #S.WND.S.HASTBAR
|
||||||
iny
|
beq .3
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sbc MSG+S.MSG.Y1+1
|
ldy #S.WND.TBarY2
|
||||||
|
jsr MOU.WNDCmpY
|
||||||
bcc .3 not in TBAR
|
bcc .3 not in TBAR
|
||||||
|
|
||||||
|
jmp MOU.MoveWND
|
||||||
|
|
||||||
bra .5
|
.3 ldy #S.OBJ.S
|
||||||
|
|
||||||
.3 ldy #S.WND.MBarY2
|
|
||||||
|
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
cmp MSG+S.MSG.Y1
|
and #S.WND.S.HASMBAR
|
||||||
iny
|
beq .4
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sbc MSG+S.MSG.Y1+1
|
ldy #S.WND.MBarY2
|
||||||
|
jsr MOU.WNDCmpY
|
||||||
bcc .4 not in MBAR
|
bcc .4 not in MBAR
|
||||||
|
|
||||||
jsr MBAR.Enter
|
jsr MBAR.Enter
|
||||||
|
|
||||||
bra .5
|
bra .5
|
||||||
|
|
||||||
.4 ldy #S.WND.SBarY1
|
.4 ldy #S.OBJ.S
|
||||||
|
lda (ZPWNDPtr),y
|
||||||
|
and #S.WND.S.HASSBAR
|
||||||
|
beq .5
|
||||||
|
|
||||||
lda (ZPWNDPtr),y
|
ldy #S.WND.SBarY1
|
||||||
cmp MSG+S.MSG.Y1
|
jsr MOU.WNDCmpY
|
||||||
iny
|
bcs .5 not in SBAR
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sbc MSG+S.MSG.Y1+1
|
|
||||||
bcs .6 not in SBAR
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.5 lda #PTR.T.ARROW
|
.5 lda #PTR.T.ARROW
|
||||||
jsr PTR.Set
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
.6 jmp PTR.Set
|
||||||
.6 lda #PTR.T.WAIT
|
|
||||||
jsr PTR.Set
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.7 ldx WND.Stack.Idx
|
.7 ldx WND.Stack.Idx
|
||||||
|
|
||||||
|
@ -191,9 +191,63 @@ MOU.CheckOverWND
|
||||||
jsr PTR.Set
|
jsr PTR.Set
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
.8 ldy #S.WND.hPTR
|
||||||
|
lda (ZPWNDPtr),y
|
||||||
|
jsr PTR.Set
|
||||||
|
|
||||||
|
jsr MOU.ToLocal
|
||||||
|
|
||||||
|
jsr MOU.ChkWNDChilds
|
||||||
|
bcc .99
|
||||||
|
|
||||||
|
clc
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
MOU.MoveWND lda MSG+S.MSG.S
|
||||||
|
bit #S.XY.S.DRAGSTART
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
lda ZPWNDPtr
|
||||||
|
clc
|
||||||
|
adc #S.OBJ.X1
|
||||||
|
tay
|
||||||
|
lda ZPWNDPtr+1
|
||||||
|
adc /S.OBJ.X1
|
||||||
|
|
||||||
|
jmp PTR.SetRect
|
||||||
|
|
||||||
|
.8 lda #PTR.T.MOVE
|
||||||
|
jmp PTR.Set
|
||||||
|
*--------------------------------------
|
||||||
|
MOU.ChkWNDChilds
|
||||||
|
|
||||||
|
jsr WND.GetChilds
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
.1 jsr MOU.InObj
|
||||||
|
bcs .7 not over this Child
|
||||||
|
|
||||||
|
jsr OBJ.Enter
|
||||||
|
bra .8
|
||||||
|
|
||||||
|
.7 jsr OBJ.Leave
|
||||||
|
|
||||||
|
.8 jsr OBJ.GetNext
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.9
|
||||||
|
MOU.ChkWNDChilds.9
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
MOU.ChkWNDBorders
|
MOU.ChkWNDBorders
|
||||||
|
ldy #S.OBJ.F
|
||||||
|
lda (ZPWNDPtr),y
|
||||||
|
and #S.OBJ.F.BORDER
|
||||||
|
beq MOU.ChkWNDChilds.9
|
||||||
|
|
||||||
stz IY
|
stz IY
|
||||||
|
|
||||||
ldy #S.OBJ.X1
|
ldy #S.OBJ.X1
|
||||||
|
@ -238,13 +292,13 @@ MOU.ChkWNDBorders
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
eor MSG+S.MSG.X2
|
eor MSG+S.MSG.X1
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
adc #0
|
adc #0
|
||||||
eor MSG+S.MSG.X2+1
|
eor MSG+S.MSG.X1+1
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
lda IY
|
lda IY
|
||||||
|
@ -260,13 +314,13 @@ MOU.ChkWNDBorders
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
eor MSG+S.MSG.Y2
|
eor MSG+S.MSG.Y1
|
||||||
bne .7
|
bne .7
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
adc #0
|
adc #0
|
||||||
eor MSG+S.MSG.Y2+1
|
eor MSG+S.MSG.Y1+1
|
||||||
bne .7
|
bne .7
|
||||||
|
|
||||||
lda #PTR.T.RESIZEXY1
|
lda #PTR.T.RESIZEXY1
|
||||||
|
@ -275,9 +329,16 @@ MOU.ChkWNDBorders
|
||||||
.7 lda IY
|
.7 lda IY
|
||||||
bne .6
|
bne .6
|
||||||
|
|
||||||
sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
MOU.InObj lda ZPObjPtr
|
||||||
|
clc
|
||||||
|
adc #S.OBJ.X1
|
||||||
|
tay
|
||||||
|
lda ZPObjPtr+1
|
||||||
|
adc /S.OBJ.X1
|
||||||
|
*--------------------------------------
|
||||||
MOU.InRectYA >STYA ZPRECTPtr
|
MOU.InRectYA >STYA ZPRECTPtr
|
||||||
|
|
||||||
ldy #S.RECT.X1
|
ldy #S.RECT.X1
|
||||||
|
@ -322,6 +383,41 @@ MOU.InRectYA >STYA ZPRECTPtr
|
||||||
.9 sec
|
.9 sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
MOU.WNDCmpY lda (ZPWNDPtr),y
|
||||||
|
cmp MSG+S.MSG.Y1
|
||||||
|
iny
|
||||||
|
lda (ZPWNDPtr),y
|
||||||
|
sbc MSG+S.MSG.Y1+1
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
MOU.ToLocal ldy #S.WND.InnerX1
|
||||||
|
|
||||||
|
lda MSG+S.MSG.X1
|
||||||
|
sec
|
||||||
|
sbc (ZPWNDPtr),y
|
||||||
|
sta MSG+S.MSG.X1
|
||||||
|
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda MSG+S.MSG.X1+1
|
||||||
|
sbc (ZPWNDPtr),y
|
||||||
|
sta MSG+S.MSG.X1+1
|
||||||
|
|
||||||
|
iny #S.WND.InnerY1
|
||||||
|
|
||||||
|
lda MSG+S.MSG.Y1
|
||||||
|
sec
|
||||||
|
sbc (ZPWNDPtr),y
|
||||||
|
sta MSG+S.MSG.Y1
|
||||||
|
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda MSG+S.MSG.Y1+1
|
||||||
|
sbc (ZPWNDPtr),y
|
||||||
|
sta MSG+S.MSG.Y1+1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libgui.s.mou
|
SAVE usr/src/lib/libgui.s.mou
|
||||||
LOAD usr/src/lib/libgui.s
|
LOAD usr/src/lib/libgui.s
|
||||||
|
|
|
@ -22,7 +22,7 @@ MSG.Get stz MSG+S.MSG.T
|
||||||
sta MSG+S.MSG.T
|
sta MSG+S.MSG.T
|
||||||
|
|
||||||
lda MSG+S.MSG.S
|
lda MSG+S.MSG.S
|
||||||
bit #S.MSG.S.MOVE
|
bit #S.XY.S.MOVE
|
||||||
beq .2
|
beq .2
|
||||||
|
|
||||||
>PUSHW L.MSG.XY
|
>PUSHW L.MSG.XY
|
||||||
|
@ -30,7 +30,7 @@ MSG.Get stz MSG+S.MSG.T
|
||||||
|
|
||||||
lda MSG+S.MSG.S
|
lda MSG+S.MSG.S
|
||||||
|
|
||||||
.2 bit #S.MSG.S.MOVE+S.MSG.S.CLK
|
.2 bit #S.XY.S.MOVE+S.XY.S.CLK
|
||||||
beq .5
|
beq .5
|
||||||
|
|
||||||
jsr MOU.CheckOverMenu
|
jsr MOU.CheckOverMenu
|
||||||
|
|
|
@ -30,6 +30,18 @@ OBJ.New pha
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
OBJ.Enter lda (ZPObjPtr)
|
||||||
|
tax
|
||||||
|
jmp (J.OBJ.Enter,x)
|
||||||
|
*--------------------------------------
|
||||||
|
OBJ.Leave lda (ZPObjPtr)
|
||||||
|
tax
|
||||||
|
jmp (J.OBJ.Leave,x)
|
||||||
|
*--------------------------------------
|
||||||
|
OBJ.Paint lda (ZPObjPtr)
|
||||||
|
tax
|
||||||
|
jmp (J.OBJ.fPaintX,x)
|
||||||
|
*--------------------------------------
|
||||||
* hOBJ, Prop8, Value16
|
* hOBJ, Prop8, Value16
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OBJ.SetProp ldy #3
|
OBJ.SetProp ldy #3
|
||||||
|
@ -85,19 +97,29 @@ OBJ.GetPropAtY lda (ZPObjPtr),y
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
OBJ.SetDXDYX1Y1 ldx #3
|
||||||
|
ldy #S.OBJ.X1+3
|
||||||
|
|
||||||
|
.1 lda DX,x
|
||||||
|
sta (ZPObjPtr),y
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
OBJ.SetX2Y2 >STYA ZPPtr1
|
OBJ.SetX2Y2 >STYA ZPPtr1
|
||||||
|
|
||||||
ldy #S.OBJ.W
|
ldy #S.OBJ.W+1
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
clc
|
|
||||||
sbc #0
|
|
||||||
pha
|
|
||||||
iny
|
|
||||||
lda (ZPPtr1),y
|
|
||||||
sbc #0
|
|
||||||
tax
|
tax
|
||||||
|
dey
|
||||||
pla
|
lda (ZPPtr1),y
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
dex
|
||||||
|
|
||||||
|
.1 dec
|
||||||
clc
|
clc
|
||||||
ldy #S.OBJ.X1
|
ldy #S.OBJ.X1
|
||||||
adc (ZPPtr1),y
|
adc (ZPPtr1),y
|
||||||
|
@ -110,18 +132,18 @@ OBJ.SetX2Y2 >STYA ZPPtr1
|
||||||
dey
|
dey
|
||||||
pla
|
pla
|
||||||
sta (ZPPtr1),y
|
sta (ZPPtr1),y
|
||||||
|
*--------------------------------------
|
||||||
ldy #S.OBJ.H
|
ldy #S.OBJ.H+1
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
clc
|
|
||||||
sbc #0
|
|
||||||
pha
|
|
||||||
iny
|
|
||||||
lda (ZPPtr1),y
|
|
||||||
sbc #0
|
|
||||||
tax
|
tax
|
||||||
|
dey
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
dex
|
||||||
|
|
||||||
|
.2 dec
|
||||||
|
|
||||||
pla
|
|
||||||
clc
|
clc
|
||||||
ldy #S.OBJ.Y1
|
ldy #S.OBJ.Y1
|
||||||
adc (ZPPtr1),y
|
adc (ZPPtr1),y
|
||||||
|
@ -131,13 +153,25 @@ OBJ.SetX2Y2 >STYA ZPPtr1
|
||||||
adc (ZPPtr1),y
|
adc (ZPPtr1),y
|
||||||
ldy #S.OBJ.Y2+1
|
ldy #S.OBJ.Y2+1
|
||||||
sta (ZPPtr1),y
|
sta (ZPPtr1),y
|
||||||
tax
|
|
||||||
dey
|
dey
|
||||||
pla
|
pla
|
||||||
sta (ZPPtr1),y A,X = Y2
|
sta (ZPPtr1),y
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
OBJ.GetPtr lda (ZPObjPtr),y
|
||||||
|
pha
|
||||||
|
iny
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
ply
|
||||||
|
rts
|
||||||
|
|
||||||
|
.1 plx
|
||||||
|
>LDYA L.BMs,x
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
OBJ.SetAXAtY sta (ZPObjPtr),y
|
OBJ.SetAXAtY sta (ZPObjPtr),y
|
||||||
iny
|
iny
|
||||||
txa
|
txa
|
||||||
|
@ -162,6 +196,19 @@ OBJ.GetHWNDA >SYSCALL2 GetMemPtr
|
||||||
OBJ.DrawBorders >STYA ZPObjPtr
|
OBJ.DrawBorders >STYA ZPObjPtr
|
||||||
stx IY
|
stx IY
|
||||||
|
|
||||||
|
ldy #S.OBJ.F
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
* and #S.OBJ.F.BORDER
|
||||||
|
* bne .1
|
||||||
|
|
||||||
|
bmi .1
|
||||||
|
|
||||||
|
clc
|
||||||
|
.9 rts
|
||||||
|
|
||||||
|
.1 jsr CB.GetBuf
|
||||||
|
bcs .9
|
||||||
|
|
||||||
jsr CB.BorderLineH
|
jsr CB.BorderLineH
|
||||||
|
|
||||||
ldy #S.OBJ.X1
|
ldy #S.OBJ.X1
|
||||||
|
@ -247,9 +294,19 @@ OBJ.DrawBorders >STYA ZPObjPtr
|
||||||
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 CB.Cache2CBBuf
|
jsr CB.Cache2CBBuf
|
||||||
|
|
||||||
|
jmp CB.FlushBuf
|
||||||
*-------------------------------------
|
*-------------------------------------
|
||||||
|
OBJ.GetNext ldy #S.OBJ.pNext
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
tax
|
||||||
|
iny
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
stx ZPObjPtr
|
||||||
|
sta ZPObjPtr+1
|
||||||
|
ora ZPObjPtr
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libgui.s.obj
|
SAVE usr/src/lib/libgui.s.obj
|
||||||
|
|
|
@ -12,7 +12,7 @@ PTR.Update lda PTR.T
|
||||||
|
|
||||||
lda #PTR.T.WAIT
|
lda #PTR.T.WAIT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Set X2,Y2,SrcPtr
|
* Set SrcPtr, SrcW, SrcH
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PTR.Set sta PTR.T
|
PTR.Set sta PTR.T
|
||||||
|
|
||||||
|
@ -26,61 +26,37 @@ PTR.Set sta PTR.T
|
||||||
sta CB.PTR+S.CB.SrcPtr+1
|
sta CB.PTR+S.CB.SrcPtr+1
|
||||||
sta ZPPtr1+1
|
sta ZPPtr1+1
|
||||||
|
|
||||||
ldy #S.BM.W
|
ldy #S.BM.W+3
|
||||||
lda (ZPPtr1),y
|
ldx #3
|
||||||
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
|
|
||||||
|
|
||||||
|
.1 lda (ZPPtr1),y
|
||||||
|
sta CB.PTR+S.CB.SrcW,x
|
||||||
|
dey
|
||||||
dex
|
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
|
|
||||||
|
|
||||||
bra PTR.Enable
|
|
||||||
|
|
||||||
PTR.Set.RTS rts
|
|
||||||
*--------------------------------------
|
|
||||||
* Set DestX,DestY
|
|
||||||
*--------------------------------------
|
|
||||||
PTR.SetPos >PULLW ZPPtr1
|
|
||||||
lda PTR.bVisible
|
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
jsr PTR.Hide.I
|
bra PTR.Enable
|
||||||
|
|
||||||
|
PTR.Set.RTS rts
|
||||||
|
*--------------------------------------
|
||||||
|
PTR.SetRect >STYA ZPPtr1
|
||||||
|
jsr PTR.Disable
|
||||||
|
sec
|
||||||
|
ror PTR.T
|
||||||
|
|
||||||
|
ldy #7
|
||||||
|
|
||||||
|
.1 lda (ZPPtr1),y
|
||||||
|
sta PTR.Rect,y
|
||||||
|
dey
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
bra PTR.Enable
|
||||||
|
*--------------------------------------
|
||||||
|
* SetPos DestX,DestY
|
||||||
|
*--------------------------------------
|
||||||
|
PTR.SetPos >PULLW ZPPtr1
|
||||||
|
jsr PTR.Disable
|
||||||
|
|
||||||
.1 ldy #S.POINT-1
|
.1 ldy #S.POINT-1
|
||||||
|
|
||||||
|
@ -91,13 +67,13 @@ PTR.SetPos >PULLW ZPPtr1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PTR.Enable bit PTR.bVisible
|
PTR.Enable bit PTR.bVisible
|
||||||
bmi PTR.Show.I
|
bmi PTR.Show.I
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PTR.Disable bit PTR.bVisible
|
PTR.Disable bit PTR.bVisible
|
||||||
bmi PTR.Hide.I
|
bmi PTR.Hide.I
|
||||||
|
|
||||||
PTR.Disable.8 clc
|
PTR.Disable.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -106,7 +82,12 @@ PTR.Hide lda PTR.bVisible
|
||||||
|
|
||||||
stz PTR.bVisible
|
stz PTR.bVisible
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PTR.Hide.I lda #S.CB.OP.RESTORE
|
PTR.Hide.I bit PTR.T
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
jmp PTR.ShowRect.I
|
||||||
|
|
||||||
|
.1 lda #S.CB.OP.RESTORE
|
||||||
bra PTR.Draw.I
|
bra PTR.Draw.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PTR.Show lda PTR.bVisible
|
PTR.Show lda PTR.bVisible
|
||||||
|
@ -115,7 +96,11 @@ PTR.Show lda PTR.bVisible
|
||||||
dec PTR.bVisible
|
dec PTR.bVisible
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PTR.Show.I ldx PTR.T
|
PTR.Show.I ldx PTR.T
|
||||||
lda PTR.Pos+S.POINT.X
|
bpl .10
|
||||||
|
|
||||||
|
jmp PTR.ShowRect.I
|
||||||
|
|
||||||
|
.10 lda PTR.Pos+S.POINT.X
|
||||||
sec
|
sec
|
||||||
sbc PTR.HotPoints,x
|
sbc PTR.HotPoints,x
|
||||||
sta CB.PTR+S.CB.X1
|
sta CB.PTR+S.CB.X1
|
||||||
|
@ -133,23 +118,83 @@ PTR.Show.I ldx PTR.T
|
||||||
sbc #0
|
sbc #0
|
||||||
sta CB.PTR+S.CB.Y1+1
|
sta CB.PTR+S.CB.Y1+1
|
||||||
|
|
||||||
lda #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.SAVE
|
ldx CB.PTR+S.CB.SrcW+1
|
||||||
*--------------------------------------
|
lda CB.PTR+S.CB.SrcW
|
||||||
PTR.Draw.I sta CB.PTR+S.CB.OP
|
bne .1
|
||||||
|
|
||||||
>LDYA L.WND.Screen
|
|
||||||
jsr CLIP.GetRect
|
|
||||||
|
|
||||||
* >LDYA L.CB.PTR
|
dex
|
||||||
* jsr CB.GetInCache
|
|
||||||
|
.1 dec
|
||||||
* jsr CLIP.CB.Cache
|
clc
|
||||||
|
adc CB.PTR+S.CB.X1
|
||||||
|
sta CB.PTR+S.CB.X2
|
||||||
|
txa
|
||||||
|
adc CB.PTR+S.CB.X1+1
|
||||||
|
sta CB.PTR+S.CB.X2+1
|
||||||
|
|
||||||
|
ldx CB.PTR+S.CB.SrcH+1
|
||||||
|
lda CB.PTR+S.CB.SrcH
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
dex
|
||||||
|
|
||||||
|
.2 dec
|
||||||
|
clc
|
||||||
|
adc CB.PTR+S.CB.Y1
|
||||||
|
sta CB.PTR+S.CB.Y2
|
||||||
|
txa
|
||||||
|
adc CB.PTR+S.CB.Y1+1
|
||||||
|
sta CB.PTR+S.CB.Y2+1
|
||||||
|
|
||||||
|
lda #S.CB.OP.ORA+S.CB.OP.MASK+S.CB.OP.SAVE
|
||||||
|
*--------------------------------------
|
||||||
|
PTR.Draw.I sta CB.PTR+S.CB.OP
|
||||||
|
|
||||||
|
ldx #S.CB
|
||||||
|
|
||||||
|
.1 lda CB.PTR-1,x
|
||||||
|
sta CLIP.Cache-1,x
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
* ldx #0 select CLIP.Sreen
|
||||||
|
jsr CLIP.BitBltX
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
jsr CB.GFXWrite
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
PTR.ShowRect.I lda #S.CB.CMD.HLINE
|
||||||
|
sta CLIP.Cache+S.CB.CMD
|
||||||
|
lda #S.CB.OP.XOR
|
||||||
|
sta CLIP.Cache+S.CB.OP
|
||||||
|
lda #S.CB.M.MONO
|
||||||
|
sta CLIP.Cache+S.CB.M
|
||||||
|
lda #C.WHITE
|
||||||
|
sta CLIP.Cache+S.CB.COLOR
|
||||||
|
>DEBUG
|
||||||
|
ldx #5 X1,Y1,X2
|
||||||
|
|
||||||
|
.1 lda PTR.Rect+S.RECT.X1,x
|
||||||
|
sta CLIP.Cache+S.CB.X1,x
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
jsr .7
|
||||||
|
|
||||||
|
>LDYA PTR.Rect+S.RECT.Y2
|
||||||
|
>STYA CLIP.Cache+S.CB.Y1
|
||||||
|
|
||||||
|
|
||||||
|
.7
|
||||||
|
* ldx #0 select CLIP.Sreen
|
||||||
|
* jsr CLIP.HLine
|
||||||
* bcs .8
|
* bcs .8
|
||||||
|
|
||||||
>PUSHB WND.Screen+S.OBJ.hPARENT
|
jsr CB.GFXWrite
|
||||||
>PUSHBI IOCTL.WRITE
|
|
||||||
>PUSHW L.CB.PTR
|
|
||||||
>SYSCALL2 IOCTL
|
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
|
||||||
|
|
|
@ -3,10 +3,12 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SYSBUT.Enter bit WND.SYSBAR.bSysBut
|
SYSBUT.Enter bit WND.SYSBAR.bSysBut
|
||||||
bmi .8
|
bmi .8
|
||||||
|
|
||||||
sec
|
sec
|
||||||
ror WND.SYSBAR.bSysBut
|
ror WND.SYSBAR.bSysBut
|
||||||
|
|
||||||
|
jsr MENU.DestroyAll
|
||||||
|
|
||||||
jsr CB.GetBuf
|
jsr CB.GetBuf
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -18,6 +20,7 @@ SYSBUT.Enter bit WND.SYSBAR.bSysBut
|
||||||
>PUSHW L.MENU.Sys
|
>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
|
||||||
|
|
||||||
jsr MENU.New
|
jsr MENU.New
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -37,7 +40,6 @@ SYSBUT.Leave bit WND.SYSBAR.bSysBut
|
||||||
jsr SYSBAR.ShowSysBut
|
jsr SYSBAR.ShowSysBut
|
||||||
|
|
||||||
>LDYA L.WND.SysBar
|
>LDYA L.WND.SysBar
|
||||||
|
|
||||||
jmp CB.FlushBufToYA
|
jmp CB.FlushBufToYA
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
@ -53,7 +55,6 @@ SYSBAR.Show jsr CB.GetBuf
|
||||||
jsr SYSBAR.ShowSysClk
|
jsr SYSBAR.ShowSysClk
|
||||||
|
|
||||||
>LDYA L.WND.SysBar
|
>LDYA L.WND.SysBar
|
||||||
|
|
||||||
jmp CB.FlushBufToYA
|
jmp CB.FlushBufToYA
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
|
@ -76,37 +77,18 @@ SYSBAR.ShowSysBut
|
||||||
|
|
||||||
jsr CB.Cache2CBBuf
|
jsr CB.Cache2CBBuf
|
||||||
|
|
||||||
lda CB.Cache+S.CB.X1
|
lda #4
|
||||||
clc
|
jsr CB.AddA2X1
|
||||||
adc #4
|
|
||||||
sta CB.Cache+S.CB.X1
|
|
||||||
lda CB.Cache+S.CB.X1+1
|
|
||||||
adc #0
|
|
||||||
sta CB.Cache+S.CB.X1+1
|
|
||||||
|
|
||||||
inc CB.Cache+S.CB.Y1
|
jsr CB.IncY1
|
||||||
bne .30
|
|
||||||
|
|
||||||
inc CB.Cache+S.CB.Y1+1
|
ldx #BM.ID.APPLE
|
||||||
|
|
||||||
.30 ldx #BM.ID.APPLE
|
|
||||||
jsr DRAW.xBM
|
jsr DRAW.xBM
|
||||||
|
|
||||||
lda CB.Cache+S.CB.X1
|
lda #16+1
|
||||||
clc
|
jsr CB.AddA2X1
|
||||||
adc #20
|
|
||||||
sta CB.Cache+S.CB.X1
|
|
||||||
lda CB.Cache+S.CB.X1+1
|
|
||||||
adc #0
|
|
||||||
sta CB.Cache+S.CB.X1+1
|
|
||||||
|
|
||||||
inc CB.Cache+S.CB.Y1
|
jsr CB.IncY1
|
||||||
bne .31
|
|
||||||
|
|
||||||
inc CB.Cache+S.CB.Y1+1
|
|
||||||
|
|
||||||
.31 lda WND.SysBar.bSysBut
|
|
||||||
asl
|
|
||||||
|
|
||||||
>LDYA L.WND.SysBar.2osX
|
>LDYA L.WND.SysBar.2osX
|
||||||
ldx hSYSFON
|
ldx hSYSFON
|
||||||
|
@ -129,14 +111,23 @@ SYSBAR.ShowSysClk
|
||||||
lda PREFS.SysBarColor
|
lda PREFS.SysBarColor
|
||||||
jsr CB.FillRectMonoA
|
jsr CB.FillRectMonoA
|
||||||
|
|
||||||
ldx #S.RECT-1
|
ldx #S.RECT
|
||||||
|
|
||||||
.1 lda RECT.SysClk,x
|
.1 lda RECT.SysClk-1,x
|
||||||
sta CB.Cache+S.CB.X1,x
|
sta CB.Cache+S.CB.X1-1,x
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bne .1
|
||||||
|
|
||||||
jmp CB.Cache2CBBuf
|
jsr CB.Cache2CBBuf
|
||||||
|
|
||||||
|
lda #1
|
||||||
|
jsr CB.AddA2X1
|
||||||
|
|
||||||
|
jsr CB.IncY1
|
||||||
|
|
||||||
|
>LDYA L.WND.SysBar.Clk
|
||||||
|
ldx hSYSFON
|
||||||
|
jmp DRAW.YAText
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/lib/libgui.s.sysbar
|
SAVE usr/src/lib/libgui.s.sysbar
|
||||||
|
|
|
@ -4,7 +4,10 @@ NEW
|
||||||
TEXT.New
|
TEXT.New
|
||||||
TEXT.Paint
|
TEXT.Paint
|
||||||
|
|
||||||
TEXT.Close
|
TEXT.Enter
|
||||||
|
TEXT.Leave
|
||||||
|
*--------------------------------------
|
||||||
|
TEXT.fPaint
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -28,15 +28,23 @@ WND.Setup
|
||||||
>STYA WND.Screen+S.OBJ.W
|
>STYA WND.Screen+S.OBJ.W
|
||||||
>STYA WND.Desktop+S.OBJ.W
|
>STYA WND.Desktop+S.OBJ.W
|
||||||
>STYA WND.SysBar+S.OBJ.W
|
>STYA WND.SysBar+S.OBJ.W
|
||||||
|
cpy #0
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
dec
|
||||||
|
|
||||||
|
.1 dey
|
||||||
|
>STYA CLIP.Screen+S.RECT.X2
|
||||||
|
*--------------------------------------
|
||||||
|
lda DCB.GFX+S.DCB.GFX.H
|
||||||
|
sta WND.Screen+S.OBJ.H
|
||||||
|
|
||||||
lda SYSFON.Hp2
|
lda SYSFON.Hp2
|
||||||
sta WND.SysBar+S.OBJ.H
|
sta WND.SysBar+S.OBJ.H
|
||||||
|
|
||||||
lda DCB.GFX+S.DCB.GFX.H
|
lda DCB.GFX+S.DCB.GFX.H
|
||||||
sta WND.Screen+S.OBJ.H
|
|
||||||
|
|
||||||
sec
|
sec
|
||||||
sbc WND.SysBar+S.OBJ.H
|
sbc SYSFON.Hp2
|
||||||
sta WND.Desktop+S.OBJ.H
|
sta WND.Desktop+S.OBJ.H
|
||||||
|
|
||||||
sta WND.SysBar+S.OBJ.Y1
|
sta WND.SysBar+S.OBJ.Y1
|
||||||
|
@ -44,15 +52,19 @@ WND.Setup
|
||||||
sta RECT.SysWNDs+S.RECT.Y1
|
sta RECT.SysWNDs+S.RECT.Y1
|
||||||
sta RECT.SysClk+S.RECT.Y1
|
sta RECT.SysClk+S.RECT.Y1
|
||||||
|
|
||||||
lda DCB.GFX+S.DCB.GFX.H
|
clc
|
||||||
dec
|
adc SYSFON.Hp1
|
||||||
|
|
||||||
sta RECT.SysBut+S.RECT.Y2
|
sta RECT.SysBut+S.RECT.Y2
|
||||||
sta RECT.SysWNDs+S.RECT.Y2
|
sta RECT.SysWNDs+S.RECT.Y2
|
||||||
sta RECT.SysClk+S.RECT.Y2
|
sta RECT.SysClk+S.RECT.Y2
|
||||||
|
sta CLIP.Screen+S.RECT.Y2
|
||||||
|
|
||||||
>LDYA L.WND.Screen
|
>LDYA L.WND.Screen
|
||||||
>STYA WND.Desktop+S.OBJ.hPARENT
|
>STYA WND.Desktop+S.OBJ.hPARENT
|
||||||
>STYA WND.SysBar+S.OBJ.hPARENT
|
>STYA WND.SysBar+S.OBJ.hPARENT
|
||||||
|
|
||||||
|
* >LDYA L.WND.Screen
|
||||||
jsr OBJ.SetX2Y2
|
jsr OBJ.SetX2Y2
|
||||||
|
|
||||||
>LDYA L.WND.Desktop
|
>LDYA L.WND.Desktop
|
||||||
|
@ -60,31 +72,32 @@ WND.Setup
|
||||||
|
|
||||||
>LDYA L.WND.SysBar
|
>LDYA L.WND.SysBar
|
||||||
jsr OBJ.SetX2Y2
|
jsr OBJ.SetX2Y2
|
||||||
|
*--------------------------------------
|
||||||
>LDYA L.WND.SysBar.2osX
|
>LDYA L.WND.SysBar.2osX
|
||||||
ldx hSYSFON
|
ldx hSYSFON
|
||||||
jsr FON.GetTextSize
|
jsr FON.GetTextSize
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcW
|
lda CB.Cache+S.CB.SrcW
|
||||||
clc
|
clc
|
||||||
adc #24 4 + BM width + 4
|
adc #25 4 + BM width(16) + 1 + "2osX" + 4
|
||||||
sta RECT.SysBut+S.RECT.X2
|
sta RECT.SysBut+S.RECT.X2
|
||||||
sta RECT.SysWNDs+S.RECT.X1
|
sta RECT.SysWNDs+S.RECT.X1
|
||||||
|
*--------------------------------------
|
||||||
>LDYA L.WND.SysBar.Clk
|
>LDYA L.WND.SysBar.Clk
|
||||||
ldx hSYSFON
|
ldx hSYSFON
|
||||||
jsr FON.GetTextSize
|
jsr FON.GetTextSize
|
||||||
|
|
||||||
lda CB.Cache+S.CB.SrcW
|
lda CB.Cache+S.CB.SrcW
|
||||||
sec for sbc below
|
clc
|
||||||
adc #8 4 + 00:00 + 4
|
adc #2 1 + "00:00" + 1
|
||||||
sta RECT.SysWNDs+S.RECT.X2
|
sta CB.Cache+S.CB.SrcW
|
||||||
|
|
||||||
lda DCB.GFX+S.DCB.GFX.W
|
lda DCB.GFX+S.DCB.GFX.W
|
||||||
sec
|
sec
|
||||||
sbc RECT.SysWNDs+S.RECT.X2
|
sbc CB.Cache+S.CB.SrcW
|
||||||
sta RECT.SysWNDs+S.RECT.X2
|
sta RECT.SysWNDs+S.RECT.X2
|
||||||
sta RECT.SysClk+S.RECT.X1
|
sta RECT.SysClk+S.RECT.X1
|
||||||
|
|
||||||
lda DCB.GFX+S.DCB.GFX.W+1
|
lda DCB.GFX+S.DCB.GFX.W+1
|
||||||
sbc #0
|
sbc #0
|
||||||
sta RECT.SysWNDs+S.RECT.X2+1
|
sta RECT.SysWNDs+S.RECT.X2+1
|
||||||
|
@ -94,7 +107,7 @@ WND.Setup
|
||||||
clc
|
clc
|
||||||
sbc #0
|
sbc #0
|
||||||
sta RECT.SysClk+S.RECT.X2
|
sta RECT.SysClk+S.RECT.X2
|
||||||
lda DCB.GFX+S.DCB.GFX.W
|
lda DCB.GFX+S.DCB.GFX.W+1
|
||||||
sbc #0
|
sbc #0
|
||||||
sta RECT.SysClk+S.RECT.X2+1
|
sta RECT.SysClk+S.RECT.X2+1
|
||||||
|
|
||||||
|
@ -132,7 +145,7 @@ WND.New ldy WND.Stack.Top
|
||||||
|
|
||||||
ldy #S.OBJ.W
|
ldy #S.OBJ.W
|
||||||
jsr OBJ.PullWordAtY
|
jsr OBJ.PullWordAtY
|
||||||
|
|
||||||
ldy #S.OBJ.Y1
|
ldy #S.OBJ.Y1
|
||||||
jsr OBJ.PullWordAtY
|
jsr OBJ.PullWordAtY
|
||||||
|
|
||||||
|
@ -175,6 +188,75 @@ WND.New ldy WND.Stack.Top
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
WND.SetMBar >PULLW ZPPtr1
|
||||||
|
|
||||||
|
jsr OBJ.PullHWND
|
||||||
|
|
||||||
|
>LDYA ZPPtr1
|
||||||
|
jsr MBAR.New
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
ldy #S.WND.pMBAR
|
||||||
|
sta (ZPWNDPtr),y
|
||||||
|
|
||||||
|
* clc
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
WND.ClrStatus ldy #S.OBJ.S
|
||||||
|
eor #$ff
|
||||||
|
and (ZPWNDPtr),y
|
||||||
|
sta (ZPWNDPtr),y
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
WND.SetStatus ldy #S.OBJ.S
|
||||||
|
ora (ZPWNDPtr),y
|
||||||
|
sta (ZPWNDPtr),y
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* ZPWNDPtr
|
||||||
|
* ZPObjPtr
|
||||||
|
*--------------------------------------
|
||||||
|
WND.AddChild.I ldy #S.OBJ.pChilds
|
||||||
|
lda (ZPWNDPtr),y
|
||||||
|
sta ZPPtr1
|
||||||
|
iny
|
||||||
|
lda (ZPWNDPtr),y
|
||||||
|
sta ZPPtr1+1
|
||||||
|
ora ZPPtr1
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
lda ZPObjPtr+1
|
||||||
|
sta (ZPWNDPtr),y
|
||||||
|
dey
|
||||||
|
lda ZPObjPtr
|
||||||
|
sta (ZPWNDPtr),y
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.1 ldy #S.OBJ.pNext
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
tax
|
||||||
|
iny
|
||||||
|
ora (ZPPtr1),y
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
stx ZPPtr1
|
||||||
|
sta ZPPtr1+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.2 lda ZPObjPtr+1
|
||||||
|
sta (ZPPtr1),y
|
||||||
|
dey
|
||||||
|
lda ZPObjPtr
|
||||||
|
sta (ZPPtr1),y
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
WND.Enter
|
||||||
|
WND.Leave
|
||||||
|
*--------------------------------------
|
||||||
WND.Destroy clc
|
WND.Destroy clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -206,6 +288,9 @@ WND.Bring2Front ldx WND.Stack.Idx
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
WND.Show sta WND.hWND
|
WND.Show sta WND.hWND
|
||||||
|
|
||||||
|
>LDYA L.WND.Desktop
|
||||||
|
jsr CLIP.GetRect
|
||||||
|
|
||||||
ldx WND.Stack.Top
|
ldx WND.Stack.Top
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
|
@ -215,37 +300,23 @@ WND.Show sta WND.hWND
|
||||||
lda #S.WND.S.ACTIVE
|
lda #S.WND.S.ACTIVE
|
||||||
jsr WND.ClrStatus
|
jsr WND.ClrStatus
|
||||||
|
|
||||||
jsr CB.GetBuf
|
|
||||||
bcs WND.Activate.RTS
|
|
||||||
|
|
||||||
jsr WND.DrawTitleBar
|
jsr WND.DrawTitleBar
|
||||||
|
|
||||||
>LDYA L.WND.Desktop
|
|
||||||
jsr CB.FlushBufToYA
|
|
||||||
|
|
||||||
lda WND.hWND
|
.1 lda WND.hWND
|
||||||
ldx WND.Stack.Top
|
ldx WND.Stack.Top
|
||||||
|
|
||||||
.1 sta WND.Stack,x
|
sta WND.Stack,x
|
||||||
inc WND.Stack.Top
|
inc WND.Stack.Top
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
WND.Draw jsr OBJ.GetHWNDA Y,A = ZPWNDPtr
|
WND.Draw jsr OBJ.GetHWNDA Y,A = ZPWNDPtr
|
||||||
|
|
||||||
jsr OBJ.SetX2Y2
|
jsr OBJ.SetX2Y2
|
||||||
|
|
||||||
jsr WND.ResetInnerW
|
jsr WND.ResetInnerW
|
||||||
|
|
||||||
jsr CB.GetBuf
|
|
||||||
bcs WND.Activate.RTS
|
|
||||||
|
|
||||||
lda #S.WND.S.ACTIVE
|
lda #S.WND.S.ACTIVE
|
||||||
jsr WND.SetStatus
|
jsr WND.SetStatus
|
||||||
|
|
||||||
ldy #S.OBJ.F
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
and #S.OBJ.F.BORDER
|
|
||||||
beq .1
|
|
||||||
|
|
||||||
>LDYA ZPWNDPtr
|
>LDYA ZPWNDPtr
|
||||||
ldx #1
|
ldx #1
|
||||||
jsr OBJ.DrawBorders
|
jsr OBJ.DrawBorders
|
||||||
|
@ -256,7 +327,7 @@ WND.Draw jsr OBJ.GetHWNDA Y,A = ZPWNDPtr
|
||||||
iny
|
iny
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
sta Counter+1
|
sta Counter+1
|
||||||
|
|
||||||
ldy #S.WND.pTITLE+1
|
ldy #S.WND.pTITLE+1
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
bne .2
|
bne .2
|
||||||
|
@ -284,7 +355,7 @@ WND.Draw jsr OBJ.GetHWNDA Y,A = ZPWNDPtr
|
||||||
|
|
||||||
ldy #S.WND.MBarY1
|
ldy #S.WND.MBarY1
|
||||||
jsr WND.SetCounterAtY
|
jsr WND.SetCounterAtY
|
||||||
|
|
||||||
lda SYSFON.Hp1
|
lda SYSFON.Hp1
|
||||||
jsr WND.Add2Counter
|
jsr WND.Add2Counter
|
||||||
|
|
||||||
|
@ -297,10 +368,14 @@ WND.Draw jsr OBJ.GetHWNDA Y,A = ZPWNDPtr
|
||||||
ldy #S.WND.pMBAR
|
ldy #S.WND.pMBAR
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
jsr MBAR.Draw
|
jsr MBAR.Draw
|
||||||
|
bcs .9
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.4 ldy #S.WND.InnerY1
|
.4 jsr CB.GetBuf
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
ldy #S.WND.InnerY1
|
||||||
jsr WND.SetCounterAtY
|
jsr WND.SetCounterAtY
|
||||||
|
|
||||||
ldy #S.WND.pSTATUS+1
|
ldy #S.WND.pSTATUS+1
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
beq .8
|
beq .8
|
||||||
|
@ -318,12 +393,12 @@ WND.Draw jsr OBJ.GetHWNDA Y,A = ZPWNDPtr
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
sbc #0
|
sbc #0
|
||||||
sta (ZPWNDPtr),y
|
sta (ZPWNDPtr),y
|
||||||
|
|
||||||
inx
|
inx
|
||||||
bne .5
|
bne .5
|
||||||
|
|
||||||
inc
|
inc
|
||||||
|
|
||||||
.5 ldy #S.WND.SBarY1+1
|
.5 ldy #S.WND.SBarY1+1
|
||||||
sta (ZPWNDPtr),y
|
sta (ZPWNDPtr),y
|
||||||
dey
|
dey
|
||||||
|
@ -346,8 +421,7 @@ WND.Draw jsr OBJ.GetHWNDA Y,A = ZPWNDPtr
|
||||||
sbc Counter+1
|
sbc Counter+1
|
||||||
sta (ZPWNDPtr),y
|
sta (ZPWNDPtr),y
|
||||||
|
|
||||||
>LDYA L.WND.Desktop
|
jsr CB.FlushBuf
|
||||||
jsr CB.FlushBufToYA
|
|
||||||
|
|
||||||
lda WND.hWND
|
lda WND.hWND
|
||||||
pha
|
pha
|
||||||
|
@ -355,21 +429,28 @@ WND.Draw jsr OBJ.GetHWNDA Y,A = ZPWNDPtr
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
WND.ResetInnerW ldy #S.OBJ.W
|
WND.ResetInnerW ldy #S.OBJ.X1
|
||||||
ldx #S.WND.InnerW
|
ldx #S.WND.InnerX1
|
||||||
jsr .1
|
jsr .1
|
||||||
|
|
||||||
ldy #S.OBJ.H
|
ldy #S.OBJ.Y1
|
||||||
ldx #S.WND.InnerH
|
ldx #S.WND.InnerY1
|
||||||
jsr .1
|
|
||||||
|
|
||||||
ldy #S.OBJ.X2
|
ldy #S.OBJ.X2
|
||||||
ldx #S.WND.InnerX2
|
ldx #S.WND.InnerX2
|
||||||
jsr .1
|
jsr .1
|
||||||
|
|
||||||
ldy #S.OBJ.Y2
|
ldy #S.OBJ.Y2
|
||||||
ldx #S.WND.InnerY2
|
ldx #S.WND.InnerY2
|
||||||
|
jsr .1
|
||||||
|
|
||||||
|
ldy #S.OBJ.W
|
||||||
|
ldx #S.WND.InnerW
|
||||||
|
jsr .1
|
||||||
|
|
||||||
|
ldy #S.OBJ.H
|
||||||
|
ldx #S.WND.InnerH
|
||||||
|
|
||||||
.1 lda (ZPWNDPtr),y
|
.1 lda (ZPWNDPtr),y
|
||||||
pha
|
pha
|
||||||
iny
|
iny
|
||||||
|
@ -387,11 +468,11 @@ WND.Add2Counter clc
|
||||||
adc Counter
|
adc Counter
|
||||||
sta Counter
|
sta Counter
|
||||||
bcc .8
|
bcc .8
|
||||||
|
|
||||||
inc Counter+1
|
inc Counter+1
|
||||||
|
|
||||||
.8 ldx Counter+1
|
.8 ldx Counter+1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
WND.SetCounterAtY
|
WND.SetCounterAtY
|
||||||
lda Counter
|
lda Counter
|
||||||
|
@ -401,9 +482,13 @@ WND.SetAXAtY sta (ZPWNDPtr),y
|
||||||
iny
|
iny
|
||||||
txa
|
txa
|
||||||
sta (ZPWNDPtr),y
|
sta (ZPWNDPtr),y
|
||||||
rts
|
|
||||||
|
WND.SetAXAtY.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
WND.DrawTitleBar
|
WND.DrawTitleBar
|
||||||
|
jsr CB.GetBuf
|
||||||
|
bcs WND.SetAXAtY.9
|
||||||
|
|
||||||
lda #S.CB.CMD.FILLRECT
|
lda #S.CB.CMD.FILLRECT
|
||||||
sta CB.Cache+S.CB.CMD
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
|
@ -448,13 +533,10 @@ WND.DrawTitleBar
|
||||||
|
|
||||||
jsr CB.Cache2CBBuf
|
jsr CB.Cache2CBBuf
|
||||||
|
|
||||||
inc CB.Cache+S.CB.Y1
|
jsr CB.IncY1
|
||||||
bne .12
|
|
||||||
|
|
||||||
inc CB.Cache+S.CB.Y1+1
|
|
||||||
|
|
||||||
* TOP LEFT ICON
|
* TOP LEFT ICON
|
||||||
.12 ldy #S.WND.ICON+1
|
ldy #S.WND.ICON+1
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
tax
|
tax
|
||||||
dey
|
dey
|
||||||
|
@ -526,7 +608,7 @@ WND.DrawTitleBar
|
||||||
ldx #BM.ID.CLOSE
|
ldx #BM.ID.CLOSE
|
||||||
jsr DRAW.xBM
|
jsr DRAW.xBM
|
||||||
|
|
||||||
.8 clc
|
.8 jmp CB.FlushBuf
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -541,7 +623,16 @@ WND.DrawTitleBarText
|
||||||
ldx hSYSFON
|
ldx hSYSFON
|
||||||
jsr FON.GetTextSize
|
jsr FON.GetTextSize
|
||||||
|
|
||||||
ldy #S.OBJ.W
|
lda PREFS.XMargin
|
||||||
|
asl
|
||||||
|
* clc
|
||||||
|
adc CB.Cache+S.CB.SrcW
|
||||||
|
sta CB.Cache+S.CB.SrcW
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
inc CB.Cache+S.CB.SrcW+1
|
||||||
|
|
||||||
|
.1 ldy #S.OBJ.W
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
sec
|
sec
|
||||||
sbc CB.Cache+S.CB.SrcW
|
sbc CB.Cache+S.CB.SrcW
|
||||||
|
@ -558,26 +649,53 @@ WND.DrawTitleBarText
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
clc
|
clc
|
||||||
adc DX
|
adc DX
|
||||||
and PREFS.BestViewedX
|
* and PREFS.BestViewedX
|
||||||
|
and #$f8
|
||||||
sta CB.Cache+S.CB.X1
|
sta CB.Cache+S.CB.X1
|
||||||
|
tax
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
adc DX+1
|
adc DX+1
|
||||||
sta CB.Cache+S.CB.X1+1
|
sta CB.Cache+S.CB.X1+1
|
||||||
|
|
||||||
|
pha
|
||||||
|
txa
|
||||||
|
|
||||||
|
clc
|
||||||
|
adc CB.Cache+S.CB.SrcW
|
||||||
|
* ora PREFS.nBestViewedX
|
||||||
|
and #$f8
|
||||||
|
sta CB.Cache+S.CB.X2
|
||||||
|
|
||||||
|
pla
|
||||||
|
adc CB.Cache+S.CB.SrcW+1
|
||||||
|
sta CB.Cache+S.CB.X2+1
|
||||||
|
|
||||||
|
jsr CB.DecY2
|
||||||
|
|
||||||
|
lda #C.WHITE
|
||||||
|
jsr CB.FillRectMonoA
|
||||||
|
|
||||||
|
jsr CB.Cache2CBBuf
|
||||||
|
|
||||||
|
lda PREFS.XMargin
|
||||||
|
jsr CB.AddA2X1
|
||||||
|
|
||||||
ldy #S.WND.pTITLE
|
ldy #S.WND.pTITLE
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
pha
|
pha
|
||||||
iny
|
iny
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
ply
|
ply
|
||||||
|
|
||||||
ldx hSYSFON
|
ldx hSYSFON
|
||||||
clc
|
|
||||||
jmp DRAW.YAText
|
jmp DRAW.YAText
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
WND.DrawStatusBar
|
WND.DrawStatusBar
|
||||||
|
jsr CB.GetBuf
|
||||||
|
bcs .9
|
||||||
|
|
||||||
jsr CB.BorderLineH
|
jsr CB.BorderLineH
|
||||||
|
|
||||||
ldy #S.OBJ.X1
|
ldy #S.OBJ.X1
|
||||||
|
@ -594,12 +712,9 @@ WND.DrawStatusBar
|
||||||
|
|
||||||
jsr CB.Cache2CBBuf
|
jsr CB.Cache2CBBuf
|
||||||
|
|
||||||
inc CB.Cache+S.CB.Y1
|
jsr CB.IncY1
|
||||||
bne .1
|
|
||||||
|
|
||||||
inc CB.Cache+S.CB.Y1+1
|
lda PREFS.SBarColor
|
||||||
|
|
||||||
.1 lda PREFS.SBarColor
|
|
||||||
jsr CB.FillRectMonoA
|
jsr CB.FillRectMonoA
|
||||||
|
|
||||||
ldy #S.OBJ.Y2
|
ldy #S.OBJ.Y2
|
||||||
|
@ -608,6 +723,9 @@ WND.DrawStatusBar
|
||||||
|
|
||||||
jsr CB.Cache2CBBuf
|
jsr CB.Cache2CBBuf
|
||||||
|
|
||||||
|
lda #4
|
||||||
|
jsr CB.AddA2X1
|
||||||
|
|
||||||
ldy #S.WND.pSTATUS
|
ldy #S.WND.pSTATUS
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
pha
|
pha
|
||||||
|
@ -616,8 +734,11 @@ WND.DrawStatusBar
|
||||||
ply
|
ply
|
||||||
|
|
||||||
ldx hSYSFON
|
ldx hSYSFON
|
||||||
clc
|
jsr DRAW.YAText
|
||||||
jmp DRAW.YAText
|
|
||||||
|
jmp CB.FlushBuf
|
||||||
|
|
||||||
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
WND.Paint pha hWND
|
WND.Paint pha hWND
|
||||||
|
|
||||||
|
@ -634,12 +755,39 @@ WND.Paint1 ldy #S.WND.fPaint
|
||||||
|
|
||||||
jmp (ZPPtr1)
|
jmp (ZPPtr1)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
WND.fPaint.RTS rts
|
|
||||||
|
|
||||||
WND.fPaint jsr OBJ.GetHWNDA
|
WND.fPaint jsr OBJ.GetHWNDA
|
||||||
|
jsr WND.GetInnerInClip
|
||||||
|
|
||||||
jsr CB.GetBuf
|
jsr WND.fPaint.BG
|
||||||
bcs WND.fPaint.RTS
|
bcs .9
|
||||||
|
|
||||||
|
jsr WND.GetChilds
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
.1 jsr OBJ.Paint
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr OBJ.GetNext
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
WND.GetInnerInClip
|
||||||
|
ldy #S.WND.InnerX1+7
|
||||||
|
ldx #7
|
||||||
|
|
||||||
|
.1 lda (ZPWNDPtr),y
|
||||||
|
sta CLIP.Rect+S.RECT.X1,x
|
||||||
|
dey
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
WND.fPaint.BG jsr CB.GetBuf
|
||||||
|
bcs .9
|
||||||
|
|
||||||
lda #S.CB.CMD.FILLRECT
|
lda #S.CB.CMD.FILLRECT
|
||||||
sta CB.Cache+S.CB.CMD
|
sta CB.Cache+S.CB.CMD
|
||||||
|
@ -654,34 +802,13 @@ WND.fPaint jsr OBJ.GetHWNDA
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
sta CB.Cache+S.CB.COLOR
|
sta CB.Cache+S.CB.COLOR
|
||||||
|
|
||||||
ldy #S.OBJ.X1
|
ldx #7
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CB.Cache+S.CB.X1
|
|
||||||
iny
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CB.Cache+S.CB.X1+1
|
|
||||||
|
|
||||||
ldy #S.WND.InnerY1
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CB.Cache+S.CB.Y1
|
|
||||||
iny
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CB.Cache+S.CB.Y1+1
|
|
||||||
|
|
||||||
ldy #S.WND.InnerX2
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CB.Cache+S.CB.X2
|
|
||||||
iny
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CB.Cache+S.CB.X2+1
|
|
||||||
|
|
||||||
ldy #S.WND.InnerY2
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CB.Cache+S.CB.Y2
|
|
||||||
iny
|
|
||||||
lda (ZPWNDPtr),y
|
|
||||||
sta CB.Cache+S.CB.Y2+1
|
|
||||||
|
|
||||||
|
.1 lda CLIP.Rect+S.RECT.X1,x
|
||||||
|
sta CB.Cache+S.CB.X1,x
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
jsr CB.Cache2CBBuf
|
jsr CB.Cache2CBBuf
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ldy #S.WND.BGBM
|
ldy #S.WND.BGBM
|
||||||
|
@ -694,54 +821,33 @@ WND.fPaint jsr OBJ.GetHWNDA
|
||||||
lda (ZPWNDPtr),y
|
lda (ZPWNDPtr),y
|
||||||
sta CB.Cache+S.CB.SrcPtr+1
|
sta CB.Cache+S.CB.SrcPtr+1
|
||||||
|
|
||||||
stz S.CB.SrcX
|
jsr CB.ResetSrcXY
|
||||||
stz S.CB.SrcX+1
|
|
||||||
|
|
||||||
stz S.CB.SrcY
|
|
||||||
stz S.CB.SrcY+1
|
|
||||||
|
|
||||||
ldy #S.WND.InnerW+3
|
ldy #S.WND.InnerW+3
|
||||||
ldx #3
|
ldx #3
|
||||||
|
|
||||||
.1 lda (ZPWNDPtr),y
|
.2 lda (ZPWNDPtr),y
|
||||||
sta CB.Cache+S.CB.SrcW,x
|
sta CB.Cache+S.CB.SrcW,x
|
||||||
dey
|
dey
|
||||||
dex
|
dex
|
||||||
bpl .1
|
bpl .2
|
||||||
|
|
||||||
lda #S.CB.CMD.BITBLT
|
lda #S.CB.CMD.BITBLT
|
||||||
sta CB.Cache+S.CB.CMD
|
sta CB.Cache+S.CB.CMD
|
||||||
|
|
||||||
jsr CB.Cache2CBBuf
|
jsr CB.Cache2CBBuf
|
||||||
|
|
||||||
.8 >LDYA L.WND.Desktop
|
.8 jmp CB.FlushBuf
|
||||||
|
|
||||||
jmp CB.FlushBufToYA
|
|
||||||
*--------------------------------------
|
|
||||||
WND.SetMBar >PULLW ZPPtr1
|
|
||||||
|
|
||||||
jsr OBJ.PullHWND
|
|
||||||
|
|
||||||
>LDYA ZPPtr1
|
|
||||||
jsr MBAR.New
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
ldy #S.WND.pMBAR
|
|
||||||
sta (ZPWNDPtr),y
|
|
||||||
|
|
||||||
* clc
|
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
WND.ClrStatus ldy #S.OBJ.S
|
WND.GetChilds ldy #S.OBJ.pChilds
|
||||||
eor #$ff
|
lda (ZPWNDPtr),y
|
||||||
and (ZPWNDPtr),y
|
sta ZPObjPtr
|
||||||
sta (ZPWNDPtr),y
|
iny
|
||||||
rts
|
lda (ZPWNDPtr),y
|
||||||
*--------------------------------------
|
sta ZPObjPtr+1
|
||||||
WND.SetStatus ldy #S.OBJ.S
|
ora ZPObjPtr
|
||||||
ora (ZPWNDPtr),y
|
|
||||||
sta (ZPWNDPtr),y
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
|
100
LIB/LIBGUI.S.txt
100
LIB/LIBGUI.S.txt
|
@ -15,8 +15,6 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
WND.MAX .EQ 64
|
WND.MAX .EQ 64
|
||||||
MENU.MAX .EQ 4
|
MENU.MAX .EQ 4
|
||||||
MENU.LMargin .EQ 7
|
|
||||||
MENU.RMargin .EQ 8
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.MA SWAP16
|
.MA SWAP16
|
||||||
lda ]1
|
lda ]1
|
||||||
|
@ -82,12 +80,12 @@ MENU.RMargin .EQ 8
|
||||||
ZPObjPtr .BS 2
|
ZPObjPtr .BS 2
|
||||||
ZPRECTPtr .BS 2
|
ZPRECTPtr .BS 2
|
||||||
ZPWNDPtr .BS 2
|
ZPWNDPtr .BS 2
|
||||||
ZPMENUPtr .BS 2
|
|
||||||
|
|
||||||
ZPBMPtr .BS 2
|
ZPBMPtr .BS 2
|
||||||
|
|
||||||
ZPCBBufPtr .BS 2
|
ZPCBBufPtr .BS 2
|
||||||
ZPPtr1 .BS 2
|
ZPPtr1 .BS 2
|
||||||
ZPPtr2 .BS 2
|
ZPPtr2 .BS 2
|
||||||
|
TmpW .BS 2
|
||||||
|
|
||||||
DX .BS 2
|
DX .BS 2
|
||||||
DY .BS 2
|
DY .BS 2
|
||||||
|
@ -152,8 +150,8 @@ L.MouseClamp .DA MouseClamp
|
||||||
L.MSG .DA MSG
|
L.MSG .DA MSG
|
||||||
L.MSG.XY .DA MSG+S.MSG.X1
|
L.MSG.XY .DA MSG+S.MSG.X1
|
||||||
L.CB.PTR .DA CB.PTR
|
L.CB.PTR .DA CB.PTR
|
||||||
L.CLIP.Rect .DA CLIP.Rect
|
L.CB.Cache .DA CB.Cache CB.GFXWrite
|
||||||
L.CB.Cache .DA CB.Cache
|
.DA CLIP.Cache CB.GFXWrite
|
||||||
L.WND.Screen .DA WND.Screen
|
L.WND.Screen .DA WND.Screen
|
||||||
L.WND.Desktop .DA WND.Desktop
|
L.WND.Desktop .DA WND.Desktop
|
||||||
L.WND.SysBar .DA WND.SysBar
|
L.WND.SysBar .DA WND.SysBar
|
||||||
|
@ -178,6 +176,13 @@ L.BM.Up .DA BM.Up
|
||||||
L.BM.Down .DA BM.Down
|
L.BM.Down .DA BM.Down
|
||||||
L.BM.Info .DA BM.Info
|
L.BM.Info .DA BM.Info
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
L.BUT.Labels .DA BUT.L.OK
|
||||||
|
.DA BUT.L.CANCEL
|
||||||
|
.DA BUT.L.RETRY
|
||||||
|
.DA BUT.L.IGNORE
|
||||||
|
.DA BUT.L.YES
|
||||||
|
.DA BUT.L.NO
|
||||||
|
*--------------------------------------
|
||||||
L.PTR.SaveBuf .DA PTR.SaveBuf
|
L.PTR.SaveBuf .DA PTR.SaveBuf
|
||||||
L.Cursors .DA PTR.Arrow
|
L.Cursors .DA PTR.Arrow
|
||||||
.DA PTR.Move
|
.DA PTR.Move
|
||||||
|
@ -205,6 +210,30 @@ J.Clip .DA CLIP.Point SETPIXEL
|
||||||
.DA CLIP.Text GETTEXTSIZE
|
.DA CLIP.Text GETTEXTSIZE
|
||||||
.DA CLIP.Line DRAWLINE
|
.DA CLIP.Line DRAWLINE
|
||||||
.DA CLIP.BitBlt DRAWTEXT2
|
.DA CLIP.BitBlt DRAWTEXT2
|
||||||
|
*--------------------------------------
|
||||||
|
J.OBJ.Enter .DA WND.Enter
|
||||||
|
.DA MBAR.Enter
|
||||||
|
.DA MENU.Enter
|
||||||
|
.DA BUT.Enter
|
||||||
|
.DA TEXT.Enter
|
||||||
|
.DA BITMAP.Enter
|
||||||
|
.DA LABEL.Enter
|
||||||
|
*--------------------------------------
|
||||||
|
J.OBJ.Leave .DA WND.Leave
|
||||||
|
.DA MBAR.Leave
|
||||||
|
.DA MENU.Leave
|
||||||
|
.DA BUT.Leave
|
||||||
|
.DA TEXT.Leave
|
||||||
|
.DA BITMAP.Leave
|
||||||
|
.DA LABEL.Leave
|
||||||
|
*--------------------------------------
|
||||||
|
J.OBJ.fPaintX .DA WND.fPaint
|
||||||
|
.DA $FFFF MBAR
|
||||||
|
.DA $FFFF MENU
|
||||||
|
.DA BUT.fPaint
|
||||||
|
.DA TEXT.fPaint
|
||||||
|
.DA BITMAP.fPaint
|
||||||
|
.DA LABEL.fPaint
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIB.LOAD lda LibCount
|
LIB.LOAD lda LibCount
|
||||||
|
@ -219,14 +248,14 @@ LIB.LOAD lda LibCount
|
||||||
jsr FON.Init
|
jsr FON.Init
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
jsr WND.Setup
|
||||||
|
|
||||||
lda hDevMouse
|
lda hDevMouse
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
jsr MOU.Setup
|
jsr MOU.Setup
|
||||||
|
|
||||||
.1 jsr WND.Setup
|
.1 lda #PTR.T.ARROW
|
||||||
|
|
||||||
lda #PTR.T.ARROW
|
|
||||||
jsr PTR.Set
|
jsr PTR.Set
|
||||||
jsr PTR.Show
|
jsr PTR.Show
|
||||||
|
|
||||||
|
@ -273,6 +302,32 @@ SkipStrZPtr1 ldy #$ff
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
SkipAPtr2 clc
|
||||||
|
adc ZPPtr2
|
||||||
|
sta ZPPtr2
|
||||||
|
bcc .8
|
||||||
|
|
||||||
|
inc ZPPtr2+1
|
||||||
|
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
|
SkipStrZPtr2 ldy #$ff
|
||||||
|
|
||||||
|
.1 iny
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
tya
|
||||||
|
sec \0
|
||||||
|
adc ZPPtr2
|
||||||
|
sta ZPPtr2
|
||||||
|
bcc .8
|
||||||
|
|
||||||
|
inc ZPPtr1+2
|
||||||
|
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
|
.INB usr/src/lib/libgui.s.bitmap
|
||||||
.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
|
||||||
.INB usr/src/lib/libgui.s.cb
|
.INB usr/src/lib/libgui.s.cb
|
||||||
|
@ -280,13 +335,14 @@ SkipStrZPtr1 ldy #$ff
|
||||||
.INB usr/src/lib/libgui.s.cur
|
.INB usr/src/lib/libgui.s.cur
|
||||||
.INB usr/src/lib/libgui.s.draw
|
.INB usr/src/lib/libgui.s.draw
|
||||||
.INB usr/src/lib/libgui.s.fon
|
.INB usr/src/lib/libgui.s.fon
|
||||||
|
.INB usr/src/lib/libgui.s.label
|
||||||
.INB usr/src/lib/libgui.s.mbar
|
.INB usr/src/lib/libgui.s.mbar
|
||||||
.INB usr/src/lib/libgui.s.mbox
|
.INB usr/src/lib/libgui.s.mbox
|
||||||
.INB usr/src/lib/libgui.s.menu
|
.INB usr/src/lib/libgui.s.menu
|
||||||
.INB usr/src/lib/libgui.s.mou
|
.INB usr/src/lib/libgui.s.mou
|
||||||
.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.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
|
||||||
|
@ -312,7 +368,16 @@ OBJ.SizeOf .DA S.WND
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA 0
|
.DA 0
|
||||||
.DA S.BUT
|
.DA S.BUT
|
||||||
* .DA S.TEXT
|
.DA S.TEXT
|
||||||
|
.DA S.BITMAP
|
||||||
|
.DA S.LABEL
|
||||||
|
*--------------------------------------
|
||||||
|
BUT.L.OK .AZ "Ok"
|
||||||
|
BUT.L.CANCEL .AZ "Cancel"
|
||||||
|
BUT.L.RETRY .AZ "Retry"
|
||||||
|
BUT.L.IGNORE .AZ "Ignore"
|
||||||
|
BUT.L.YES .AZ "Yes"
|
||||||
|
BUT.L.NO .AZ "No"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
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
|
||||||
|
@ -336,7 +401,6 @@ PAT.Buf .BS 1 S.BM.F
|
||||||
IOCTL .BS S.IOCTL
|
IOCTL .BS S.IOCTL
|
||||||
DCB.GFX .BS S.DCB.GFX
|
DCB.GFX .BS S.DCB.GFX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MouseClamp .BS 8
|
|
||||||
MSG .BS S.MSG
|
MSG .BS S.MSG
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CB.PTR .DA #S.CB.CMD.BITBLT
|
CB.PTR .DA #S.CB.CMD.BITBLT
|
||||||
|
@ -345,8 +409,10 @@ CB.PTR .DA #S.CB.CMD.BITBLT
|
||||||
.DA #0
|
.DA #0
|
||||||
.BS S.CB-4
|
.BS S.CB-4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CLIP.Rect .BS S.RECT
|
CB.Cache .BS S.CB CB.GFXWrite:
|
||||||
CB.Cache .BS S.CB
|
CLIP.Cache .BS S.CB ,x select Cache
|
||||||
|
CLIP.Screen .BS S.RECT CLIP.BitBltX:
|
||||||
|
CLIP.Rect .BS S.RECT ,x select clipping region
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MENU.Stack.Owner .BS 1
|
MENU.Stack.Owner .BS 1
|
||||||
MENU.Stack.Idx .BS 1
|
MENU.Stack.Idx .BS 1
|
||||||
|
@ -448,11 +514,13 @@ KEYMOD.S.OA .EQ *-KEYMOD.S
|
||||||
KEYMOD.S.CA .EQ *-KEYMOD.S
|
KEYMOD.S.CA .EQ *-KEYMOD.S
|
||||||
.DA #02,#'-',#0
|
.DA #02,#'-',#0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
MouseClamp .EQ * MOU.Setup
|
||||||
TEXTBUF .BS 16 for composing HotKey strings
|
TEXTBUF .BS 16 for composing HotKey strings
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PREFS.BestViewedX .DA #$FC
|
PREFS.BestViewedX .DA #$FC
|
||||||
PREFS.MBarXMargin .DA #5
|
PREFS.nBestViewedX .DA #$03
|
||||||
PREFS.XSeparator .DA #6
|
PREFS.XMargin .DA #4
|
||||||
|
PREFS.XSeparator .DA #4
|
||||||
*
|
*
|
||||||
PREFS.MenuColor .DA #C.WHITE
|
PREFS.MenuColor .DA #C.WHITE
|
||||||
PREFS.SysBarColor .DA #C.WHITE
|
PREFS.SysBarColor .DA #C.WHITE
|
||||||
|
|
|
@ -60,6 +60,6 @@ CCLK.END .EQ * end of obj cclock_0.
|
||||||
.HS 000000 pad to page boundary
|
.HS 000000 pad to page boundary
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.CCLK
|
SAVE usr/src/prodos.203/prodos.s.cclk
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -146,6 +146,6 @@ bnkbyt2 .DA #0
|
||||||
kversion .HS 23 represents release 2.0.3
|
kversion .HS 23 represents release 2.0.3
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.GP
|
SAVE usr/src/prodos.203/prodos.s.gp
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -63,6 +63,6 @@ irqv .DA lanirq irq handler
|
||||||
* end of obj mli_3
|
* end of obj mli_3
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.IRQ
|
SAVE usr/src/prodos.203/prodos.s.irq
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -764,6 +764,6 @@ H2620 clc
|
||||||
LDR.Test128.len .EQ *-LDR.Test128
|
LDR.Test128.len .EQ *-LDR.Test128
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.LDR.A
|
SAVE usr/src/prodos.203/prodos.s.ldr.a
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -944,6 +944,6 @@ RAM_1_END .EQ * end of /RAM installer
|
||||||
|
|
||||||
|
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.LDR.B
|
SAVE usr/src/prodos.203/prodos.s.ldr.b
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -83,6 +83,6 @@ RAMDRV.END .EQ *
|
||||||
.BS $FF9B-* fill to lanirq ($FF9B see note below)
|
.BS $FF9B-* fill to lanirq ($FF9B see note below)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.RAM
|
SAVE usr/src/prodos.203/prodos.s.ram
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -317,6 +317,6 @@ ex1 sta passit+1 also used by blockwrite
|
||||||
* end of obj ram_0
|
* end of obj ram_0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.RAMX
|
SAVE usr/src/prodos.203/prodos.s.ramx
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -292,6 +292,6 @@ dsp1pfx .DA #01 1 parameter
|
||||||
* end of obj sel_0
|
* end of obj sel_0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.SEL0
|
SAVE usr/src/prodos.203/prodos.s.sel0
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -400,6 +400,6 @@ rd_refn .HS 01 reference number
|
||||||
dhdr_len .HS 00 directory header length (actually uses 2 bytes)
|
dhdr_len .HS 00 directory header length (actually uses 2 bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.SEL1
|
SAVE usr/src/prodos.203/prodos.s.sel1
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -435,6 +435,6 @@ button2 .DA #$0B
|
||||||
.AS "Cancel: Esc"
|
.AS "Cancel: Esc"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.SEL2
|
SAVE usr/src/prodos.203/prodos.s.sel2
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -89,17 +89,17 @@ tdays .DA #$00 January
|
||||||
* is the year which January 1st is Sunday, and so on backwards thru
|
* is the year which January 1st is Sunday, and so on backwards thru
|
||||||
* the days of the week.
|
* the days of the week.
|
||||||
|
|
||||||
yradj .DA #$12 Monday
|
yradj .DA #$18 Monday
|
||||||
.DA #$17 Sunday
|
.DA #$17 Sunday
|
||||||
.DA #$16 Saturday
|
.DA #$16 Saturday
|
||||||
.DA #$15 Friday
|
.DA #$1B Friday
|
||||||
.DA #$14 Thursday
|
.DA #$1A Thursday
|
||||||
.DA #$14 Wednesday
|
.DA #$19 Wednesday
|
||||||
.DA #$13 Tuesday
|
.DA #$18 Tuesday
|
||||||
|
|
||||||
TCLK.END .HS 000000 pad
|
TCLK.END .HS 000000 pad
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.TCLK
|
SAVE usr/src/prodos.203/prodos.s.tclk
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -642,6 +642,6 @@ svdevn ldy namptr index to 1st byte of this entry.
|
||||||
rts end of block file manager
|
rts end of block file manager
|
||||||
|
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.XDOS.A
|
SAVE usr/src/prodos.203/prodos.s.xdos.a
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -862,6 +862,6 @@ L3C0B tya
|
||||||
lsr
|
lsr
|
||||||
rts
|
rts
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.XDOS.B
|
SAVE usr/src/prodos.203/prodos.s.xdos.b
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -723,6 +723,6 @@ L41C1 tya calc position of next fcb.
|
||||||
|
|
||||||
|
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.XDOS.C
|
SAVE usr/src/prodos.203/prodos.s.xdos.c
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -574,6 +574,6 @@ twrprot1 sta unitnum make the device status call
|
||||||
rts carry is indeterminate.
|
rts carry is indeterminate.
|
||||||
|
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.XDOS.D
|
SAVE usr/src/prodos.203/prodos.s.xdos.d
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -602,6 +602,6 @@ L4B1A ldx #$00
|
||||||
rts
|
rts
|
||||||
|
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.XDOS.E
|
SAVE usr/src/prodos.203/prodos.s.xdos.e
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -759,6 +759,6 @@ delflag .HS 00 used by 'detree' to know if called from delete (destroy).
|
||||||
cortflag .HS 00 cortland flag. 1 = Cortland system (must stay within page boundary)
|
cortflag .HS 00 cortland flag. 1 = Cortland system (must stay within page boundary)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.XDOS.F
|
SAVE usr/src/prodos.203/prodos.s.xdos.f
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -878,6 +878,6 @@ spunit .HS 0000000000000000 ref pathbuf-$10smartport unit numbers
|
||||||
* pathname buffer starts at this page boundary (pathbuf = $D700)
|
* pathname buffer starts at this page boundary (pathbuf = $D700)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.XRW
|
SAVE usr/src/prodos.203/prodos.s.xrw
|
||||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
LOAD usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -5,11 +5,11 @@ NEW
|
||||||
.OR $2000
|
.OR $2000
|
||||||
.TF PRODOS.203TC,TSYS
|
.TF PRODOS.203TC,TSYS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB INC/ZP.I
|
.INB inc/zp.i
|
||||||
.INB INC/IO.I
|
.INB inc/io.i
|
||||||
.INB INC/MONITOR.I
|
.INB inc/monitor.i
|
||||||
.INB INC/MLI.I
|
.INB inc/mli.i
|
||||||
.INB INC/MLI.E.I
|
.INB inc/mli.e.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MMStartUp .EQ $0202
|
MMStartUp .EQ $0202
|
||||||
NewHandle .EQ $0902
|
NewHandle .EQ $0902
|
||||||
|
@ -174,58 +174,58 @@ gbuf .EQ $DC00 general purpose 512 byte block buffer
|
||||||
* $5D00 sel_1 enhanced quit code (Bird's Better Bye)
|
* $5D00 sel_1 enhanced quit code (Bird's Better Bye)
|
||||||
* $6000 sel_2 GQuit dispatcher support
|
* $6000 sel_2 GQuit dispatcher support
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.LDR.A
|
.INB usr/src/prodos.203/prodos.s.ldr.a
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.LDR.B
|
.INB usr/src/prodos.203/prodos.s.ldr.b
|
||||||
|
|
||||||
RAM .PH $FF00
|
RAM .PH $FF00
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.RAM
|
.INB usr/src/prodos.203/prodos.s.ram
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
IRQ .PH $FF9B
|
IRQ .PH $FF9B
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.IRQ
|
.INB usr/src/prodos.203/prodos.s.irq
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
GP .PH $BF00
|
GP .PH $BF00
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.GP
|
.INB usr/src/prodos.203/prodos.s.gp
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
TCLK .PH $D742
|
TCLK .PH $D742
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.TCLK
|
.INB usr/src/prodos.203/prodos.s.tclk
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
CCLK .PH $D742
|
CCLK .PH $D742
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.CCLK
|
.INB usr/src/prodos.203/prodos.s.cclk
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
XDOS .PH $DE00
|
XDOS .PH $DE00
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.XDOS.A
|
.INB usr/src/prodos.203/prodos.s.xdos.a
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.XDOS.B
|
.INB usr/src/prodos.203/prodos.s.xdos.b
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.XDOS.C
|
.INB usr/src/prodos.203/prodos.s.xdos.c
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.XDOS.D
|
.INB usr/src/prodos.203/prodos.s.xdos.d
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.XDOS.E
|
.INB usr/src/prodos.203/prodos.s.xdos.e
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.XDOS.F
|
.INB usr/src/prodos.203/prodos.s.xdos.f
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
RAMX .PH $200
|
RAMX .PH $200
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.RAMX
|
.INB usr/src/prodos.203/prodos.s.ramx
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
XRW .PH $D000
|
XRW .PH $D000
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.XRW
|
.INB usr/src/prodos.203/prodos.s.xrw
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
SEL0 .PH $1000
|
SEL0 .PH $1000
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.SEL0
|
.INB usr/src/prodos.203/prodos.s.sel0
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
SEL1 .PH $1000
|
SEL1 .PH $1000
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.SEL1
|
.INB usr/src/prodos.203/prodos.s.sel1
|
||||||
.EP
|
.EP
|
||||||
|
|
||||||
SEL2 .PH $1000
|
SEL2 .PH $1000
|
||||||
.INB USR/SRC/PRODOS.203/PRODOS.S.SEL2
|
.INB usr/src/prodos.203/prodos.s.sel2
|
||||||
.EP
|
.EP
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/PRODOS.203/PRODOS.S
|
SAVE usr/src/prodos.203/prodos.s
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -50,7 +50,10 @@ CCLK.START >SHORTMX 8 bit mode.
|
||||||
rts
|
rts
|
||||||
savestate .HS 00 state of the state register
|
savestate .HS 00 state of the state register
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
.LIST ON
|
||||||
CCLK.LEN .EQ *-CCLK.START
|
CCLK.LEN .EQ *-CCLK.START
|
||||||
|
.LIST OFF
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/prodos.fx/prodos.s.cclk
|
SAVE usr/src/prodos.fx/prodos.s.cclk
|
||||||
LOAD usr/src/prodos.fx/prodos.s
|
LOAD usr/src/prodos.fx/prodos.s
|
||||||
|
|
|
@ -101,16 +101,19 @@ tdays .DA #$00 January
|
||||||
* to the year in which January 1st falls on a Monday. The 2nd entry
|
* to the year in which January 1st falls on a Monday. The 2nd entry
|
||||||
* is the year which January 1st is Sunday, and so on backwards thru
|
* is the year which January 1st is Sunday, and so on backwards thru
|
||||||
* the days of the week.
|
* the days of the week.
|
||||||
|
* https://calormen.com/tmp/proyear.html
|
||||||
yradj .DA #$12 Monday
|
* For 2022 - 2027: $18, $17, $16, $1B, $1A, $19, $18
|
||||||
|
yradj .DA #$18 Monday
|
||||||
.DA #$17 Sunday
|
.DA #$17 Sunday
|
||||||
.DA #$16 Saturday
|
.DA #$16 Saturday
|
||||||
.DA #$15 Friday
|
.DA #$1B Friday
|
||||||
.DA #$14 Thursday
|
.DA #$1A Thursday
|
||||||
.DA #$14 Wednesday
|
.DA #$19 Wednesday
|
||||||
.DA #$13 Tuesday
|
.DA #$18 Tuesday
|
||||||
|
*--------------------------------------
|
||||||
|
.LIST ON
|
||||||
TCLK.LEN .EQ *-TCLK.START
|
TCLK.LEN .EQ *-TCLK.START
|
||||||
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/prodos.fx/prodos.s.tclk
|
SAVE usr/src/prodos.fx/prodos.s.tclk
|
||||||
|
|
|
@ -112,6 +112,11 @@ WND.Test >PUSHBI S.WND.F.RESIZE+S.WND.F.MOVE+S.WND.F.CLOSE+S.WND.F.MAX+S.WND.F.
|
||||||
* >PUSHW hLogo
|
* >PUSHW hLogo
|
||||||
* >LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
|
* >LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
|
||||||
|
|
||||||
|
>PUSHB hWND
|
||||||
|
>PUSHBI S.WND.hPTR
|
||||||
|
>PUSHWI PTR.T.WAIT
|
||||||
|
>LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
|
||||||
|
|
||||||
>PUSHB hWND
|
>PUSHB hWND
|
||||||
>PUSHBI S.WND.pTITLE
|
>PUSHBI S.WND.pTITLE
|
||||||
>PUSHW L.WND.TITLE
|
>PUSHW L.WND.TITLE
|
||||||
|
@ -201,7 +206,7 @@ WND.Test.1 >PUSHB hWND
|
||||||
>PUSHBI C.BLACK C16.D.GREEN
|
>PUSHBI C.BLACK C16.D.GREEN
|
||||||
rts
|
rts
|
||||||
|
|
||||||
WND.Test.2 >PUSHWI 250
|
WND.Test.2 >PUSHWI 240
|
||||||
>PUSHWI 60
|
>PUSHWI 60
|
||||||
>LIBCALL hLIBGUI,LIBGUI.DRAW.Line
|
>LIBCALL hLIBGUI,LIBGUI.DRAW.Line
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -11,8 +11,8 @@ int main(int argc, char *argv[])
|
||||||
20,20,200,100);
|
20,20,200,100);
|
||||||
guiSetProp(hWND, WND_P_pTITLE, "Libgui C API");
|
guiSetProp(hWND, WND_P_pTITLE, "Libgui C API");
|
||||||
guiSetProp(hWND, WND_P_pSTATUS, "Status bar");
|
guiSetProp(hWND, WND_P_pSTATUS, "Status bar");
|
||||||
guiSetProp(hWND, WND_P_BGCOLOR, pC_WHITE);
|
guiSetProp(hWND, WND_P_BGCOLOR, C_WHITE);
|
||||||
|
guiSetProp(hWND, WND_P_pPTR, PTR_T_CROSS);
|
||||||
guiShowWnd(hWND);
|
guiShowWnd(hWND);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
|
|
@ -92,9 +92,9 @@ CS.RUN >SLEEP
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.MsgBox >PUSHW L.ABOUT.T
|
CS.RUN.MsgBox >PUSHW L.ABOUT.T
|
||||||
>PUSHW L.ABOUT.M
|
>PUSHWI BM.ID.INFO
|
||||||
>PUSHWI BM.ID.INFO
|
>PUSHW L.ABOUT.M
|
||||||
>PUSHBI BUT.ID.OK
|
>PUSHBI 63 BUT.ID.OK
|
||||||
>LIBCALL hLIBGUI,LIBGUI.MBOX.MsgBox
|
>LIBCALL hLIBGUI,LIBGUI.MBOX.MsgBox
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -118,7 +118,9 @@ CS.END
|
||||||
LIBGUI .AZ "libgui"
|
LIBGUI .AZ "libgui"
|
||||||
hLIBGUI .BS 1
|
hLIBGUI .BS 1
|
||||||
ABOUT.T .AZ "About GUI"
|
ABOUT.T .AZ "About GUI"
|
||||||
ABOUT.M .AZ "MsgBox message."
|
ABOUT.M .CS "MsgBox demo with all possible buttons.\r\n"
|
||||||
|
.CS "...Line 2...\r\n"
|
||||||
|
.CZ "...Line 3.\r\n"
|
||||||
GUITEST1 .AZ "${ROOT}root/asmtest/testgui"
|
GUITEST1 .AZ "${ROOT}root/asmtest/testgui"
|
||||||
GUITEST2 .AZ "${ROOT}root/ctest/testgui"
|
GUITEST2 .AZ "${ROOT}root/ctest/testgui"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -85,12 +85,12 @@ PSTA JSR EXPR.DEFINED GET EXPR VALUE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DIR1.PS jsr GNNB
|
DIR1.PS jsr GNNB
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
sta DLIM SAVE DELIMITER
|
sta DLIM SAVE DELIMITER
|
||||||
|
|
||||||
ldx #$ff
|
ldx #$ff
|
||||||
ldy CHAR.PNTR
|
ldy CHAR.PNTR
|
||||||
|
|
||||||
.1 inx
|
.1 inx
|
||||||
lda WBUF,Y
|
lda WBUF,Y
|
||||||
and #$7F
|
and #$7F
|
||||||
|
@ -99,19 +99,19 @@ DIR1.PS jsr GNNB
|
||||||
iny
|
iny
|
||||||
cmp DLIM
|
cmp DLIM
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
txa
|
txa
|
||||||
jsr EMIT
|
jsr EMIT
|
||||||
|
|
||||||
.2 jsr GNC
|
.2 jsr GNC
|
||||||
jsr EMIT
|
jsr EMIT
|
||||||
dex
|
dex
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 jmp ERBA2
|
.9 jmp ERBA2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DIR1.EscChars .AS "abefnrtv"
|
DIR1.EscChars .AS "abefnrtv"
|
||||||
.HS 5C27223F25 \'"?%
|
.HS 5C27223F25 \'"?%
|
||||||
|
@ -132,10 +132,10 @@ DIR1.CS lda #0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PSAZ jsr PSAS
|
PSAZ jsr PSAS
|
||||||
jmp EMIT.ZERO
|
jmp EMIT.ZERO
|
||||||
|
|
||||||
PSAT lda #$80 LAST BYTE HAS OPPOSITE BIT 7
|
PSAT lda #$80 LAST BYTE HAS OPPOSITE BIT 7
|
||||||
.HS 2C ...SKIP OVER 2 BYTES
|
.HS 2C ...SKIP OVER 2 BYTES
|
||||||
|
|
||||||
PSAS lda #0 ALL BYTES GET SAME BIT 7
|
PSAS lda #0 ALL BYTES GET SAME BIT 7
|
||||||
clc
|
clc
|
||||||
|
|
||||||
|
@ -160,47 +160,47 @@ DIR1.String sta AT.HIBIT
|
||||||
|
|
||||||
.15 sta DLIM SAVE DELIMITER
|
.15 sta DLIM SAVE DELIMITER
|
||||||
jsr GNC.UC GET NEXT CHAR
|
jsr GNC.UC GET NEXT CHAR
|
||||||
.9 bcs ERBA2 END OF LINE IS BAD NEWS
|
bcs .9 END OF LINE IS BAD NEWS
|
||||||
|
|
||||||
cmp DLIM CHK IF DELIMITER
|
cmp DLIM CHK IF DELIMITER
|
||||||
beq .4 YES, NO STRING IN BETWEEN
|
beq .4 YES, NO STRING IN BETWEEN
|
||||||
|
|
||||||
.2 jsr GNC.UC GET NEXT CHAR
|
.2 jsr GNC.UC GET NEXT CHAR
|
||||||
bcs ERBA2 END OF LINE IS BAD NEWS
|
bcs .9 END OF LINE IS BAD NEWS
|
||||||
|
|
||||||
cmp DLIM CHK IF DELIMITER
|
cmp DLIM CHK IF DELIMITER
|
||||||
beq .3 YES, FINISH UP AND RETURN
|
beq .3 YES, FINISH UP AND RETURN
|
||||||
|
|
||||||
lda WBUF-2,Y ...NO, GET PREVIOUS CHAR
|
lda WBUF-2,Y ...NO, GET PREVIOUS CHAR
|
||||||
bit BYTE
|
bit BYTE
|
||||||
bpl .27
|
bpl .27
|
||||||
|
|
||||||
cmp #'\' "\?" ?
|
cmp #'\' "\?" ?
|
||||||
bne .27
|
bne .27
|
||||||
|
|
||||||
jsr GNC.UC GET NEXT CHAR
|
jsr GNC.UC GET NEXT CHAR
|
||||||
bcs ERBA2 END OF LINE IS BAD NEWS
|
bcs .9 END OF LINE IS BAD NEWS
|
||||||
|
|
||||||
lda WBUF-2,Y get "?"
|
lda WBUF-2,Y get "?"
|
||||||
ldx #DIR1.EscChars.L-1
|
ldx #DIR1.EscChars.L-1
|
||||||
|
|
||||||
.20 cmp DIR1.EscChars,x
|
.20 cmp DIR1.EscChars,x
|
||||||
beq .21
|
beq .21
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bpl .20
|
bpl .20
|
||||||
bmi ERBA2
|
bmi .9
|
||||||
|
|
||||||
.21 lda DIR1.EscCodes,x
|
.21 lda DIR1.EscCodes,x
|
||||||
|
|
||||||
ldx WBUF-1,Y
|
ldx WBUF-1,Y
|
||||||
cpx DLIM
|
cpx DLIM
|
||||||
beq .30
|
beq .30
|
||||||
|
|
||||||
.27 ora AS.HIBIT MERGE WITH TOP BIT
|
.27 ora AS.HIBIT MERGE WITH TOP BIT
|
||||||
jsr EMIT
|
jsr EMIT
|
||||||
jmp .2 GO FOR ANOTHER ONE
|
jmp .2 GO FOR ANOTHER ONE
|
||||||
|
|
||||||
.3 lda WBUF-2,Y GET PREVIOUS CHAR
|
.3 lda WBUF-2,Y GET PREVIOUS CHAR
|
||||||
|
|
||||||
.30 ora AS.HIBIT MERGE WITH SELECTED BIT 7
|
.30 ora AS.HIBIT MERGE WITH SELECTED BIT 7
|
||||||
|
@ -214,37 +214,102 @@ DIR1.String sta AT.HIBIT
|
||||||
beq .1
|
beq .1
|
||||||
|
|
||||||
.5 rts
|
.5 rts
|
||||||
|
|
||||||
|
.9 jmp ERBA2
|
||||||
|
*---------------------------------
|
||||||
|
* .HX -- HEX DIGIT STRING
|
||||||
|
*---------------------------------
|
||||||
|
PSHX jsr GNNB GET NEXT NON-BLANK CHAR
|
||||||
|
bcs ERBA2 END OF LINE
|
||||||
|
|
||||||
|
jsr BACKUP.CHAR.PNTR
|
||||||
|
|
||||||
|
.1 jsr PSHX.GetNibble
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
.2 sta SYM.VALUE
|
||||||
|
|
||||||
|
jsr PSHX.GetNibble
|
||||||
|
bcs .7
|
||||||
|
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
ora SYM.VALUE
|
||||||
|
jsr EMIT
|
||||||
|
jsr PSHX.GetNibble
|
||||||
|
bcc .2
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.7 lda SYM.VALUE
|
||||||
|
jsr EMIT
|
||||||
|
|
||||||
|
.8 rts
|
||||||
|
*---------------------------------
|
||||||
|
PSHX.GetNibble
|
||||||
|
.1 jsr GNC.UC IGNORE CASE
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
cmp #'.' ALLOW PERIODS
|
||||||
|
beq .1 ...BUT IGNORE THEM
|
||||||
|
|
||||||
|
eor #$30
|
||||||
|
cmp #$0A
|
||||||
|
bcc .3 ...0-9, TEXT VALIDITY
|
||||||
|
|
||||||
|
adc #$88 ...MIGHT BE A...F
|
||||||
|
|
||||||
|
.2 cmp #$FA
|
||||||
|
bcc .3 NOT A-F EITHER, RETURN CARRY CLEAR
|
||||||
|
|
||||||
|
and #$0F TRIM HEX A...F
|
||||||
|
|
||||||
|
.3 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 sec
|
||||||
|
rts
|
||||||
*---------------------------------
|
*---------------------------------
|
||||||
* .HS -- HEX STRING
|
* .HS -- HEX STRING
|
||||||
*---------------------------------
|
*---------------------------------
|
||||||
PSHS JSR GNNB GET NEXT NON-BLANK CHAR
|
PSHS jsr GNNB GET NEXT NON-BLANK CHAR
|
||||||
BCS ERBA2 END OF LINE
|
bcs ERBA2 END OF LINE
|
||||||
JSR BACKUP.CHAR.PNTR
|
|
||||||
JSR TRY.HEX.STRING
|
jsr BACKUP.CHAR.PNTR
|
||||||
BNE ERBA2 ...ERROR, BAD ADDRESS
|
jsr TRY.HEX.STRING
|
||||||
RTS
|
bne ERBA2 ...ERROR, BAD ADDRESS
|
||||||
|
|
||||||
|
rts
|
||||||
*--------------------------------
|
*--------------------------------
|
||||||
THX1 JSR HEX.DIGIT GET NEXT HEX DIGIT
|
THX1 jsr HEX.DIGIT GET NEXT HEX DIGIT
|
||||||
BCC ERBA2 ERROR, ODD DIGITS
|
bcc ERBA2 ERROR, ODD DIGITS
|
||||||
LDA SYM.VALUE GET CONVERTED VALUE
|
|
||||||
JSR EMIT
|
lda SYM.VALUE GET CONVERTED VALUE
|
||||||
TRY.HEX.STRING
|
jsr EMIT
|
||||||
.1 JSR HEX.DIGIT
|
|
||||||
BCS THX1
|
|
||||||
LDA CURRENT.CHAR
|
|
||||||
BEQ .2 ...END OF LINE
|
|
||||||
CMP #',' IF COMMA, GO GET MORE BYTES
|
|
||||||
BEQ .1 ...OKAY
|
|
||||||
CMP #' ' IF BLANK, VALID END OF STRING
|
|
||||||
.2 RTS
|
|
||||||
*--------------------------------
|
*--------------------------------
|
||||||
ERBA2 JMP ERBA ERROR: BAD ADDRESS
|
TRY.HEX.STRING jsr HEX.DIGIT
|
||||||
GT255ERR LDY #QER8 VALUE > 255 ERROR
|
bcs THX1
|
||||||
.HS 2C LONG "BIT" TO SKIP NEXT TWO BYTES
|
|
||||||
NOLBLERR LDY #QER1 "NO LABEL"
|
lda CURRENT.CHAR
|
||||||
.HS 2C LONG "BIT" TO SKIP NEXT TWO BYTES
|
beq .2 ...END OF LINE
|
||||||
UNDF LDY #QER6 "UNDEF"
|
|
||||||
JMP SOFT.ERROR
|
cmp #',' IF COMMA, GO GET MORE BYTES
|
||||||
|
beq TRY.HEX.STRING ...OKAY
|
||||||
|
|
||||||
|
cmp #' ' IF BLANK, VALID END OF STRING
|
||||||
|
|
||||||
|
.2 rts
|
||||||
|
*--------------------------------
|
||||||
|
ERBA2 jmp ERBA ERROR: BAD ADDRESS
|
||||||
|
GT255ERR ldy #QER8 VALUE > 255 ERROR
|
||||||
|
.HS 2C LONG "BIT" TO SKIP NEXT TWO BYTES
|
||||||
|
NOLBLERR ldy #QER1 "NO LABEL"
|
||||||
|
.HS 2C LONG "BIT" TO SKIP NEXT TWO BYTES
|
||||||
|
UNDF ldy #QER6 "UNDEF"
|
||||||
|
jmp SOFT.ERROR
|
||||||
*---------------------------------
|
*---------------------------------
|
||||||
* .EQ -- EQUATE
|
* .EQ -- EQUATE
|
||||||
*---------------------------------
|
*---------------------------------
|
||||||
|
|
|
@ -22,13 +22,14 @@ OPTBL.DIR >DIR A,C,DIR.AC ASCII STRING COMPRESSED
|
||||||
>DIR D,A,PSDA DATA
|
>DIR D,A,PSDA DATA
|
||||||
>DIR D,O,PSDO DO
|
>DIR D,O,PSDO DO
|
||||||
>DIR D,U,D.DUMMY DUMMY
|
>DIR D,U,D.DUMMY DUMMY
|
||||||
>DIR E,D,D.END.DUMMY
|
>DIR E,D,D.END.DUMMY
|
||||||
>DIR E,L,PSEL ELSE
|
>DIR E,L,PSEL ELSE
|
||||||
>DIR E,N,PSEN END OF SOURCE
|
>DIR E,N,PSEN END OF SOURCE
|
||||||
>DIR E,P,D.END.PHASE
|
>DIR E,P,D.END.PHASE
|
||||||
>DIR E,Q,PSEQ EQUATE
|
>DIR E,Q,PSEQ EQUATE
|
||||||
>DIR F,I,PSFI FIN
|
>DIR F,I,PSFI FIN
|
||||||
>DIR H,S,PSHS HEX STRING
|
>DIR H,S,PSHS HEX STRING
|
||||||
|
>DIR H,X,PSHX HEX DIGIT STRING
|
||||||
>DIR I,N,PSIN INCLUDE
|
>DIR I,N,PSIN INCLUDE
|
||||||
>DIR L,I,PSLI LIST ON,/ OFF
|
>DIR L,I,PSLI LIST ON,/ OFF
|
||||||
>DIR M,A,PSMA MACRO
|
>DIR M,A,PSMA MACRO
|
||||||
|
|
Loading…
Reference in New Issue