mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-14 02:29:33 +00:00
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 | | |
|
||||
| .FIN | conditional end| S-C, A2osX | Working | | |
|
||||
| .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 |
|
||||
| .LI,.LIST | | S-C, A2osX | Working | `.LIST ON/OFF CON/COFF MON/MOFF XON/XOFF` | |
|
||||
| .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, middle"></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="Keywords3">$
%
/
#
&
^</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
|
||||
rts
|
||||
*---------------------------------------
|
||||
DIR.HS jsr SRC.GetNextCharNB
|
||||
DIR.HS clc
|
||||
.HS B0 BCS
|
||||
|
||||
DIR.HX sec
|
||||
ror DIR.Word
|
||||
|
||||
jsr SRC.GetNextCharNB
|
||||
bcs .99
|
||||
|
||||
jsr SRC.IsDigit16
|
||||
|
@ -503,18 +509,24 @@ DIR.HS jsr SRC.GetNextCharNB
|
|||
jsr OUT.EmitByte
|
||||
bcc .5
|
||||
rts
|
||||
*---------------------------------------
|
||||
.3 bit DIR.Word
|
||||
bmi .30
|
||||
|
||||
.3 pha
|
||||
lda DIR.Byte
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
sta DIR.Byte
|
||||
pla
|
||||
ora DIR.Byte
|
||||
asl DIR.Byte
|
||||
asl DIR.Byte
|
||||
asl DIR.Byte
|
||||
asl DIR.Byte
|
||||
|
||||
.4 jsr OUT.EmitByte
|
||||
bra .4
|
||||
|
||||
.30 asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
|
||||
.4 ora DIR.Byte
|
||||
jsr OUT.EmitByte
|
||||
bcs .9
|
||||
|
||||
jsr SRC.GetNextChar
|
||||
|
|
|
@ -172,6 +172,7 @@ DIR.EL.ID .EQ *-J.DIRECTIVES
|
|||
DIR.FI.ID .EQ *-J.DIRECTIVES
|
||||
.DA DIR.FI
|
||||
.DA DIR.HS
|
||||
.DA DIR.HX
|
||||
.DA DIR.IN
|
||||
.DA DIR.IN
|
||||
.DA DIR.IN
|
||||
|
@ -488,6 +489,7 @@ T.DIRECTIVES .PS "AC"
|
|||
.PS "EQ"
|
||||
.PS "FIN"
|
||||
.PS "HS"
|
||||
.PS "HX"
|
||||
.PS "IN"
|
||||
.PS "INB"
|
||||
.PS "INB1"
|
||||
|
|
|
@ -12,15 +12,13 @@ CODE.Init stz ZPCCConst
|
|||
>LDYAI 20 char *ARGV[10]
|
||||
>STYA ZPCCData
|
||||
|
||||
lda #'_'
|
||||
>STA.G CC.CPSPFX+1
|
||||
|
||||
lda #'A'
|
||||
>STA.G CC.CPSID
|
||||
|
||||
iny CC.CPSID+1
|
||||
>STZ.G CC.ScopeID
|
||||
iny
|
||||
sta (pData),y
|
||||
|
||||
lda #'_'
|
||||
>STA.G CC.Label
|
||||
|
||||
clc
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -17,7 +17,9 @@ CORE.Init lda #SL._
|
|||
>SYSCALL SListNew
|
||||
bcs .9
|
||||
|
||||
>STA.G CC.hScopes
|
||||
>STA.G CC.hSyms
|
||||
|
||||
ldy #CC.ScopeIDs
|
||||
sty ScopeIdx
|
||||
|
||||
>LDYAI 256
|
||||
|
@ -46,21 +48,11 @@ CORE.Init lda #SL._
|
|||
CORE.Quit jsr FIO.FClose
|
||||
bne CORE.Quit
|
||||
|
||||
ldy ScopeIdx
|
||||
>LDA.G CC.hSyms
|
||||
beq .1
|
||||
|
||||
.10 lda (pData),y
|
||||
|
||||
>SYSCALL SListFree
|
||||
|
||||
ldy ScopeIdx
|
||||
cpy #CC.hScopes
|
||||
beq .1
|
||||
|
||||
dec ScopeIdx
|
||||
dey
|
||||
bra .10
|
||||
|
||||
.1 >LDA.G CC.hTags
|
||||
beq .2
|
||||
|
||||
|
|
|
@ -105,15 +105,12 @@ DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
|
|||
bcs .98
|
||||
|
||||
cmp #';'
|
||||
beq .28
|
||||
beq .8
|
||||
|
||||
cmp #'{'
|
||||
bne .26
|
||||
|
||||
jsr CORE.GetNCharNB skip '{'
|
||||
bcs .98
|
||||
|
||||
jmp SYM.StoreF
|
||||
jmp CORE.GetNCharNBNL Skip '{'
|
||||
*--------------------------------------
|
||||
* Initializer
|
||||
*--------------------------------------
|
||||
|
@ -141,7 +138,7 @@ DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual
|
|||
cmp #';'
|
||||
bne .98
|
||||
|
||||
clc
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.98 lda #E.CSYN
|
||||
|
|
|
@ -1,19 +1,37 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
F.Decl stz LocalPtr
|
||||
F.Decl ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
ora #SYM.Q.FUNC
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
jsr CC.PushTQ push T/Q for RETURN
|
||||
and #$FC
|
||||
sta ZPPtr2+1
|
||||
|
||||
lda (ZPSymBufPtr) #SYM.T
|
||||
sta ZPPtr2 T/Q for _RETURN_
|
||||
|
||||
stz LocalPtr
|
||||
|
||||
jsr SYM.Store Store this f() with no prototype...
|
||||
bcs .99
|
||||
|
||||
ldx #$80 CPStmt.fDef state
|
||||
jsr STMT.CPStmt.NEW
|
||||
jsr SCOPE.New
|
||||
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
|
||||
|
||||
jsr CORE.GetNCharNBNL Skip (
|
||||
.11 jsr CORE.GetNCharNBNL Skip (
|
||||
bcs .9
|
||||
|
||||
cmp #')' func()
|
||||
|
@ -61,12 +79,10 @@ F.Decl stz LocalPtr
|
|||
cmp #';'
|
||||
bne .7
|
||||
|
||||
jsr SYM.FreeScope discard local scope
|
||||
jsr SYM.Update
|
||||
bcs .99
|
||||
|
||||
lda CStackPtr
|
||||
clc
|
||||
adc #CPS
|
||||
sta CStackPtr discard this CPStmt + T/Q
|
||||
jsr SCOPE.Close discard local scope
|
||||
|
||||
stz LocalPtr reset for DEBUG Message
|
||||
|
||||
|
@ -75,8 +91,8 @@ F.Decl stz LocalPtr
|
|||
*--------------------------------------
|
||||
.7 cmp #'{'
|
||||
bne .9
|
||||
|
||||
bit bInitCode
|
||||
*--------------------------------------
|
||||
F.Def bit bInitCode
|
||||
bmi .8
|
||||
|
||||
dec bInitCode
|
||||
|
@ -89,12 +105,17 @@ F.Decl stz LocalPtr
|
|||
.8 >LDYA ZPCCCode f() Code starts HERE
|
||||
jsr SYM.SetAddrYA
|
||||
|
||||
jsr SYM.Update
|
||||
bcs .99
|
||||
|
||||
lda LocalPtr
|
||||
jsr CODE.LDAI A = f() ARGS size
|
||||
bcs .99
|
||||
|
||||
>LDYA L.PCC.ENTER
|
||||
jmp CODE.EmitPCC Store f() Declaration / Start Definition
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
F.DeclGetTQ lda (ZPLineBufPtr)
|
||||
cmp #'.'
|
||||
|
@ -142,6 +163,23 @@ F.DeclGetTQ lda (ZPLineBufPtr)
|
|||
sec
|
||||
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
|
||||
>STYA.G CC.SymIDSave
|
||||
|
||||
|
@ -151,10 +189,11 @@ F.NewArg >LDYA.G CC.SymID
|
|||
>LDYA ZPPtr2
|
||||
ldx #SYM.SC.AUTO
|
||||
sec Reset Buffer
|
||||
* >DEBUG
|
||||
jsr SYM.New
|
||||
bcs .9
|
||||
|
||||
jsr SYM.StoreL Store f() Args in Local scope
|
||||
jsr SYM.Store
|
||||
bcs .9
|
||||
|
||||
>LDA.G CC.hSymBuf
|
||||
|
@ -170,10 +209,10 @@ F.Def.END >LDYA L.PCC.LEAVE
|
|||
jsr CODE.EmitPCC
|
||||
bcs .9
|
||||
|
||||
jsr SYM.FreeScope
|
||||
jsr SCOPE.Close
|
||||
|
||||
stz LocalPtr back to global
|
||||
|
||||
>DEBUG
|
||||
clv pop context
|
||||
clc
|
||||
.9 rts
|
||||
|
|
|
@ -21,7 +21,7 @@ KW.IF jsr STMT.NewCPS00
|
|||
jsr KW.TestZero Y,A=T/Q
|
||||
|
||||
lda #'E'
|
||||
jsr SYM.LookupA
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .99
|
||||
|
||||
lda #$4C emit JMP else
|
||||
|
@ -51,14 +51,14 @@ KW.IF.END jsr CORE.GetCharNBNL
|
|||
bcc .2
|
||||
|
||||
.1 lda #'E' define ELSE Label
|
||||
jsr STMT.NewLabelA
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
clv pop context
|
||||
rts
|
||||
*--------------------------------------
|
||||
.2 lda #'X'
|
||||
jsr SYM.LookupA
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .99
|
||||
|
||||
lda #$4C emit JMP exit
|
||||
|
@ -66,7 +66,7 @@ KW.IF.END jsr CORE.GetCharNBNL
|
|||
bcs .99
|
||||
|
||||
lda #'E' define ELSE Label
|
||||
jsr STMT.NewLabelA
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
lda #KW.ELSE.ID replace IF by ELSE keyword
|
||||
|
@ -88,7 +88,7 @@ KW.ELSE lda #E.CSYN illegal
|
|||
rts
|
||||
*--------------------------------------
|
||||
KW.ELSE.END lda #'X' define EXIT Label
|
||||
jsr STMT.NewLabelA
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
clv pop context
|
||||
|
@ -98,7 +98,7 @@ KW.WHILE jsr STMT.NewCPS00
|
|||
bcs .99
|
||||
|
||||
lda #'C' define CONT Label
|
||||
jsr SYM.NewA
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetCharNB
|
||||
|
@ -116,7 +116,7 @@ KW.WHILE jsr STMT.NewCPS00
|
|||
jsr KW.TestZero
|
||||
|
||||
lda #'B'
|
||||
jsr SYM.LookupA
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .99
|
||||
|
||||
lda #$4C emit JMP break:
|
||||
|
@ -140,7 +140,7 @@ KW.WHILE.END >LDYA L.PCC.SLEEP
|
|||
bcs .99
|
||||
|
||||
lda #'C'
|
||||
jsr STMT.GetLabelA
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .99
|
||||
|
||||
lda #$4C
|
||||
|
@ -148,7 +148,7 @@ KW.WHILE.END >LDYA L.PCC.SLEEP
|
|||
bcs .99
|
||||
|
||||
lda #'B' define BREAK Label
|
||||
jsr STMT.NewLabelA
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
clv pop context
|
||||
|
@ -159,7 +159,7 @@ KW.DO jsr STMT.NewCPS00
|
|||
bcs .99
|
||||
|
||||
lda #'C' define CONT Label
|
||||
jsr SYM.NewA
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
jmp STMT.SetCPSType
|
||||
|
@ -185,7 +185,7 @@ KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO....
|
|||
jsr KW.TestnZero
|
||||
|
||||
lda #'C'
|
||||
jsr STMT.GetLabelA
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .99
|
||||
|
||||
lda #$4C emit JMP cont
|
||||
|
@ -193,7 +193,7 @@ KW.DO.END >LDYA L.CC.KW2.DO Check allowed KW for DO....
|
|||
bcs .99
|
||||
|
||||
lda #'B' define BREAK Label
|
||||
jsr STMT.NewLabelA
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetCharNB
|
||||
|
@ -265,7 +265,7 @@ KW.FOR jsr CC.GetCharNB
|
|||
bcs .9
|
||||
*--------------------------------------
|
||||
lda #'L' LOOP Label
|
||||
jsr SYM.NewA
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
jsr EXP.Eval00 get e2
|
||||
|
@ -275,14 +275,14 @@ KW.FOR jsr CC.GetCharNB
|
|||
bcs .99
|
||||
|
||||
lda #'B'
|
||||
jsr SYM.LookupA
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .99
|
||||
|
||||
lda #$4C emit JMP break:
|
||||
jsr CODE.TOABSYX
|
||||
|
||||
lda #'S'
|
||||
jsr SYM.LookupA
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .99
|
||||
|
||||
lda #$20 emit JSR s:
|
||||
|
@ -298,7 +298,7 @@ KW.FOR jsr CC.GetCharNB
|
|||
bcs .9
|
||||
*--------------------------------------
|
||||
lda #'C' CONT Label
|
||||
jsr SYM.NewA
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
jsr STMT.Get get s3
|
||||
|
@ -313,14 +313,14 @@ KW.FOR jsr CC.GetCharNB
|
|||
bne .9
|
||||
|
||||
lda #'L'
|
||||
jsr SYM.LookupA
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .99
|
||||
|
||||
lda #$4C
|
||||
jsr CODE.TOABSYX emit JMP loop
|
||||
|
||||
lda #'S' S Label
|
||||
jsr SYM.NewA
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
jmp STMT.SetCPSType
|
||||
|
@ -335,7 +335,7 @@ KW.FOR.END lda #$60
|
|||
bcs .99
|
||||
|
||||
lda #'B' define BREAK Label
|
||||
jsr STMT.NewLabelA
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
clv pop context
|
||||
|
@ -390,7 +390,7 @@ KW.SWITCH jsr CC.GetCharNB
|
|||
bne .98
|
||||
|
||||
lda #'J'
|
||||
jsr STMT.LookupLabelA
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .99
|
||||
|
||||
lda #$4C emit JMP JmpTable
|
||||
|
@ -409,7 +409,7 @@ KW.SWITCH jsr CC.GetCharNB
|
|||
KW.SWITCH.RTS rts
|
||||
*--------------------------------------
|
||||
KW.SWITCH.END lda #'J' define JMP Label
|
||||
jsr STMT.NewLabelA
|
||||
jsr SYM.NewLabelA
|
||||
bcs KW.SWITCH.RTS
|
||||
|
||||
lda CStackPtr
|
||||
|
@ -470,7 +470,7 @@ KW.SWITCH.END lda #'J' define JMP Label
|
|||
bcs .99
|
||||
|
||||
lda #'D'
|
||||
jsr STMT.LookupLabelA
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .3
|
||||
|
||||
lda #$4C emit JMP Default
|
||||
|
@ -478,7 +478,7 @@ KW.SWITCH.END lda #'J' define JMP Label
|
|||
bcs .99
|
||||
|
||||
.3 lda #'B' define BREAK Label
|
||||
jsr STMT.NewLabelA
|
||||
jsr SYM.NewLabelA
|
||||
bcs .99
|
||||
|
||||
lda CStackPtr
|
||||
|
@ -579,7 +579,7 @@ KW.DEFAULT ldy CStackPtr
|
|||
jsr CORE.GetNCharNB skip ':'
|
||||
|
||||
lda #'D' define DEFAULT Label
|
||||
jmp STMT.NewLabelA
|
||||
jmp SYM.NewLabelA
|
||||
|
||||
.9 lda #E.CSYN
|
||||
sec
|
||||
|
@ -587,7 +587,7 @@ KW.DEFAULT ldy CStackPtr
|
|||
*--------------------------------------
|
||||
KW.BREAK lda #'B'
|
||||
|
||||
jsr STMT.LookupLabelA
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .9
|
||||
|
||||
lda #$4C emit JMP break
|
||||
|
@ -599,7 +599,7 @@ KW.BREAK lda #'B'
|
|||
*--------------------------------------
|
||||
KW.CONTINUE lda #'C'
|
||||
|
||||
jsr STMT.LookupLabelA
|
||||
jsr SYM.LookupLabelA
|
||||
bcs .9
|
||||
|
||||
lda #$4C emit JMP cont
|
||||
|
@ -609,34 +609,29 @@ KW.CONTINUE lda #'C'
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
KW.RETURN ldy CStackPtr
|
||||
beq .9
|
||||
KW.RETURN ldx ZPLineBufPtr
|
||||
phx
|
||||
ldx ZPLineBufPtr+1
|
||||
phx
|
||||
|
||||
.1 lda (ZPCCStack),y CPS.KW
|
||||
bmi .7 f()
|
||||
>LDYA L.CC._RETURN_
|
||||
>STYA ZPLineBufPtr
|
||||
|
||||
tya
|
||||
clc
|
||||
adc #CPS skip CPStmt (6 bytes)
|
||||
tay
|
||||
bcc .1
|
||||
jsr SYM.Lookup
|
||||
|
||||
.9 lda #E.STACKERROR
|
||||
sec
|
||||
.99 rts
|
||||
plx
|
||||
stx ZPLineBufPtr+1
|
||||
plx
|
||||
stx ZPLineBufPtr
|
||||
|
||||
.7 tya
|
||||
clc
|
||||
adc #CPS.T
|
||||
tay
|
||||
lda (ZPCCStack),y
|
||||
bcs .99
|
||||
|
||||
ldy #SYM.Q
|
||||
lda (ZPLookupSymPtr),y
|
||||
pha
|
||||
|
||||
iny get CPS.Q
|
||||
lda (ZPCCStack),y
|
||||
|
||||
ply T
|
||||
lda (ZPLookupSymPtr) SYM.T
|
||||
tay
|
||||
pla
|
||||
|
||||
jsr EXP.Eval
|
||||
bcs .99
|
||||
|
@ -648,6 +643,8 @@ KW.RETURN ldy CStackPtr
|
|||
|
||||
>LDYA L.PCC.LEAVE
|
||||
jmp CODE.EmitPCC
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
KW.SIZEOF
|
||||
lda #E.CSYN
|
||||
|
|
|
@ -8,8 +8,8 @@ CC.Link >LDYA L.MSG.LINKING
|
|||
lda #1
|
||||
|
||||
.1 >STYA ZPPtr1 SymID
|
||||
|
||||
>PUSHB.G CC.hScopes
|
||||
* >DEBUG
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHW ZPPtr1 SymID
|
||||
>PUSHW pData
|
||||
|
||||
|
@ -18,7 +18,7 @@ CC.Link >LDYA L.MSG.LINKING
|
|||
|
||||
>STYA ZPPtr2 NextID
|
||||
|
||||
>PUSHB.G CC.hScopes
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHW ZPPtr1 SymID
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHWI $ffff All
|
||||
|
@ -26,16 +26,21 @@ CC.Link >LDYA L.MSG.LINKING
|
|||
>SYSCALL SListGetData
|
||||
bcs .99
|
||||
|
||||
ldy #SYM.SC
|
||||
>LDA.G bTrace
|
||||
bpl .2
|
||||
|
||||
jsr CC.Link.Dump
|
||||
|
||||
.2 ldy #SYM.SC
|
||||
lda (ZPSymBufPtr),y
|
||||
cmp #SYM.SC.TYPEDEF
|
||||
bcs .6
|
||||
bcs .7
|
||||
|
||||
ldy #SYM.Addr+1
|
||||
lda (ZPSymBufPtr),y
|
||||
dey
|
||||
ora (ZPSymBufPtr),y
|
||||
bne .6
|
||||
bne .7
|
||||
|
||||
jsr CC.Link.Lookup
|
||||
bcs .9
|
||||
|
@ -43,20 +48,18 @@ CC.Link >LDYA L.MSG.LINKING
|
|||
jsr CC.Link.Update
|
||||
bcs .99
|
||||
|
||||
.6 >LDA.G bTrace
|
||||
bpl .7
|
||||
|
||||
jsr CC.Link.Dump
|
||||
bcs .99
|
||||
|
||||
.7 >LDYA ZPPtr2
|
||||
jmp .1
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 jsr CC.Link.Dump
|
||||
lda #E.FUNDEF
|
||||
.9 >LDA.G bTrace
|
||||
bmi .2
|
||||
|
||||
jsr CC.Link.Dump
|
||||
|
||||
.90 lda #E.FUNDEF
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
|
@ -156,7 +159,7 @@ CC.Link.Update ldy #SYM.Addr
|
|||
txa
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
>PUSHB.G CC.hScopes
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHW ZPPtr1 SymID
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHBI 0
|
||||
|
@ -212,7 +215,7 @@ CC.Link.Dump ldy #$ff
|
|||
rts
|
||||
*--------------------------------------
|
||||
CC.Link.CheckMain
|
||||
>PUSHB.G CC.hScopes
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHW L.CC.MAIN
|
||||
>PUSHWI 0 ScopeID
|
||||
>SYSCALL SListLookup
|
||||
|
@ -220,7 +223,7 @@ CC.Link.CheckMain
|
|||
|
||||
>STYA ZPPtr1 SymID
|
||||
|
||||
>PUSHB.G CC.hScopes
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHW ZPPtr1 SymID
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHWI 65535 all
|
||||
|
|
58
BIN/CC.S.SCOPE.txt
Normal file
58
BIN/CC.S.SCOPE.txt
Normal file
|
@ -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
|
||||
*--------------------------------------
|
||||
STMT.CPStmt.NEW >LDA.G CC.CPSID+1
|
||||
jsr CC.Push
|
||||
bcs .99
|
||||
|
||||
>LDA.G CC.CPSID
|
||||
jsr CC.Push
|
||||
bcs .99
|
||||
|
||||
lda LocalPtr Locals
|
||||
STMT.CPStmt.NEW lda LocalPtr Locals
|
||||
jsr CC.Push
|
||||
bcs .99
|
||||
|
||||
|
@ -216,24 +208,7 @@ STMT.NewCPS00 lda #0
|
|||
jsr CC.Push
|
||||
bcs STMT.NewCPS.RTS
|
||||
|
||||
STMT.NewCPS jsr STMT.NewCPSID
|
||||
bcs .99
|
||||
|
||||
lda #'*'
|
||||
>SYSCALL putchar
|
||||
>LEA.G CC.CPSPFX+2
|
||||
>SYSCALL puts
|
||||
* >DEBUG
|
||||
|
||||
>LDA.G CC.CPSPFX+3
|
||||
jsr CC.Push
|
||||
bcs .99
|
||||
|
||||
>LDA.G CC.CPSPFX+2
|
||||
jsr CC.Push
|
||||
bcs .99
|
||||
|
||||
lda LocalPtr Locals
|
||||
STMT.NewCPS lda LocalPtr Locals
|
||||
jsr CC.Push
|
||||
bcs .99
|
||||
|
||||
|
@ -276,121 +251,6 @@ STMT.SetCPSType jsr CORE.GetNCharNBNL
|
|||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
STMT.NewLabelA pha
|
||||
|
||||
lda CStackPtr
|
||||
jsr STMT.GetCPSIDA
|
||||
|
||||
* lda #'+'
|
||||
* >SYSCALL putchar
|
||||
* pla
|
||||
* pha
|
||||
* >SYSCALL putchar
|
||||
* >LEA.G CC.CPSPFX+1
|
||||
* >SYSCALL puts
|
||||
* >DEBUG
|
||||
|
||||
pla
|
||||
jmp SYM.NewA
|
||||
*--------------------------------------
|
||||
STMT.GetLabelA pha
|
||||
|
||||
lda CStackPtr
|
||||
jsr STMT.GetCPSIDA
|
||||
|
||||
* lda #'?'
|
||||
* >SYSCALL putchar
|
||||
* pla
|
||||
* pha
|
||||
* >SYSCALL putchar
|
||||
* >LEA.G CC.CPSPFX+1
|
||||
* >SYSCALL puts
|
||||
* >DEBUG
|
||||
|
||||
pla
|
||||
jmp SYM.LookupA
|
||||
*--------------------------------------
|
||||
STMT.LookupLabelA
|
||||
pha
|
||||
|
||||
ldy CStackPtr
|
||||
sty ArgIndex
|
||||
|
||||
lda ArgIndex
|
||||
beq .9
|
||||
|
||||
.1 jsr STMT.GetCPSIDA
|
||||
|
||||
* lda #'!'
|
||||
* >SYSCALL putchar
|
||||
* pla
|
||||
* pha
|
||||
* >SYSCALL putchar
|
||||
* >LEA.G CC.CPSPFX+1
|
||||
* >SYSCALL puts
|
||||
* >DEBUG
|
||||
|
||||
pla
|
||||
pha
|
||||
jsr SYM.LookupA
|
||||
bcc .8
|
||||
|
||||
lda ArgIndex
|
||||
clc
|
||||
adc #CPS
|
||||
sta ArgIndex
|
||||
bne .1
|
||||
|
||||
.9 lda #E.NOKEY
|
||||
|
||||
plx
|
||||
* sec
|
||||
rts
|
||||
|
||||
.8 pla
|
||||
* clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
STMT.GetCPSIDA clc
|
||||
adc #CPS.CPSID
|
||||
tay
|
||||
|
||||
lda (ZPCCStack),y
|
||||
pha
|
||||
iny
|
||||
lda (ZPCCStack),y
|
||||
ply
|
||||
>STYA.G CC.CPSPFX+2
|
||||
rts
|
||||
*--------------------------------------
|
||||
STMT.NewCPSID >LDYA.G CC.CPSID
|
||||
>STYA.G CC.CPSPFX+2
|
||||
|
||||
>LDA.G CC.CPSID+1
|
||||
inc
|
||||
cmp #'Z'+1
|
||||
bne .1
|
||||
|
||||
dey CC.CPSID
|
||||
lda (pData),y
|
||||
inc
|
||||
cmp #'Z'+1
|
||||
beq .9
|
||||
|
||||
sta (pData),y
|
||||
|
||||
lda #'A'
|
||||
iny CC.CPSID+1
|
||||
|
||||
.1 sta (pData),y
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.OOH
|
||||
* sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/cc.s.stmt
|
||||
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
|
||||
bpl SYM.New.1
|
||||
|
||||
bit bLocalScope
|
||||
bmi SYM.New.1
|
||||
|
||||
>PUSHB.G CC.hScopes Global Scope
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHW ZPLineBufPtr
|
||||
>PUSHWI 0 ScopeID
|
||||
jsr SCOPE.Push
|
||||
>SYSCALL SListLookup
|
||||
bcs SYM.New.9
|
||||
|
||||
|
@ -25,7 +22,7 @@ SYM.New >STYA ZPPtr2 T/Q
|
|||
|
||||
jsr CC.SkipX X = KeyLen
|
||||
|
||||
>PUSHB.G CC.hScopes
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHW.G CC.SymID
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHWI 65535 all
|
||||
|
@ -33,18 +30,22 @@ SYM.New >STYA ZPPtr2 T/Q
|
|||
>SYSCALL SListGetData
|
||||
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
|
||||
|
||||
ldy ScopeIdx
|
||||
lda (pData),y
|
||||
jsr SYM.NewKey
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHW ZPLineBufPtr
|
||||
jsr SCOPE.Push
|
||||
>SYSCALL SListNewKey
|
||||
bcs SYM.New.9
|
||||
|
||||
>STYA.G CC.SymID Y,A = KeyID
|
||||
|
||||
jsr CC.SkipX X = KeyLen
|
||||
.DO DBG_SYM=1
|
||||
jsr SYM.DEBUG0
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
SYM.New.2 jsr CC.GetCharNB
|
||||
bcs .98
|
||||
|
@ -62,11 +63,6 @@ SYM.New.2 jsr CC.GetCharNB
|
|||
.1 cmp #'('
|
||||
bne SYM.NewV
|
||||
|
||||
ldy #SYM.Q
|
||||
lda #SYM.Q.FUNC
|
||||
ora (ZPSymBufPtr),y
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
jmp F.Decl
|
||||
|
||||
.98 lda #E.CSYN
|
||||
|
@ -362,11 +358,7 @@ SYM.NewKey >PUSHA
|
|||
>PUSHW ZPLineBufPtr
|
||||
>PUSHWI 0 ScopeID
|
||||
>SYSCALL SListNewKey
|
||||
bcs .9
|
||||
|
||||
|
||||
|
||||
.9 rts Y,A = KeyID, X = KeyLen
|
||||
rts Y,A = KeyID, X = KeyLen
|
||||
*--------------------------------------
|
||||
SYM.Add0000 >LDYAI 0
|
||||
*--------------------------------------
|
||||
|
@ -461,14 +453,14 @@ SYM.AddByte pha
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
SYM.NewA bit bPass2
|
||||
SYM.NewLabelA bit bPass2
|
||||
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
|
||||
>PUSHEA.G CC.CPSPFX
|
||||
>PUSHWI 0 ScopeID
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHEA.G CC.Label
|
||||
jsr SCOPE.Push
|
||||
>SYSCALL SListNewKey
|
||||
bcs .99
|
||||
|
||||
|
@ -498,104 +490,114 @@ SYM.NewA bit bPass2
|
|||
|
||||
>LDYA ZPCCCode
|
||||
jsr SYM.SetAddrYA
|
||||
|
||||
>LDA.G CC.hScopes Global Scope
|
||||
jmp SYM.Store.1
|
||||
.DO DBG_SYM=1
|
||||
jsr SYM.DEBUG0
|
||||
.FIN
|
||||
jmp SYM.Store
|
||||
|
||||
.8 clc
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
SYM.StoreF >LDA.G CC.hScopes
|
||||
|
||||
bit bPass2
|
||||
bpl SYM.Store.1
|
||||
|
||||
clc
|
||||
rts
|
||||
SYM.Update sec
|
||||
.HS 90 BCC
|
||||
*--------------------------------------
|
||||
SYM.Store bit bPass2
|
||||
bpl SYM.StoreL Store Global & Local at Pass 1
|
||||
SYM.Store clc
|
||||
bit bPass2
|
||||
bmi .8
|
||||
|
||||
bit bLocalScope Store Local at Pass 2
|
||||
bmi SYM.StoreL
|
||||
|
||||
clc
|
||||
rts
|
||||
php
|
||||
.DO DBG_SYM=1
|
||||
bcc .10
|
||||
|
||||
SYM.StoreL ldy ScopeIdx
|
||||
lda (pData),y
|
||||
jsr SYM.DEBUG1
|
||||
|
||||
SYM.Store.1 >PUSHA
|
||||
bra .11
|
||||
|
||||
.10
|
||||
jsr SYM.DEBUG2
|
||||
|
||||
.11 .FIN
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHW.G CC.SymID
|
||||
>PUSHW ZPSymBufPtr
|
||||
>PUSHBI 0
|
||||
|
||||
ldy #SYM.Q
|
||||
lda (ZPSymBufPtr),y
|
||||
and #SYM.Q.FUNC
|
||||
bne .1
|
||||
|
||||
ldy #SYM.DefSize
|
||||
lda (ZPSymBufPtr),y
|
||||
>PUSHA
|
||||
bra .2
|
||||
|
||||
.1 lda #SYM.F.MAX
|
||||
|
||||
.2 >PUSHA
|
||||
|
||||
plp
|
||||
bcs .3
|
||||
|
||||
>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
|
||||
|
||||
.9 lda #E.OOH
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
SYM.FreeScope ldy ScopeIdx
|
||||
cpy #CC.hScopes
|
||||
beq *
|
||||
|
||||
lda (pData),y
|
||||
>SYSCALL SListFree
|
||||
|
||||
dec ScopeIdx
|
||||
inc bLocalScope
|
||||
.3 >SYSCALL SListSetData
|
||||
rts
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
SYM.Lookup >LDA.G CC.LookupIdx
|
||||
|
||||
cmp #CC.LookupIdx+LOOKUP.MAX
|
||||
beq .99
|
||||
|
||||
>PUSHB ScopeIdx
|
||||
>PUSHB.G CC.hSyms ...for SListGetData
|
||||
|
||||
.1 tay
|
||||
lda (pData),y
|
||||
jsr CC.SListLookup
|
||||
lda ScopeIdx
|
||||
|
||||
.1 pha
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHW ZPLineBufPtr
|
||||
ply
|
||||
phy
|
||||
jsr SCOPE.PushY
|
||||
>SYSCALL SListLookup
|
||||
bcc .8
|
||||
|
||||
lda (pstack)
|
||||
cmp #CC.hScopes
|
||||
pla
|
||||
cmp #CC.ScopeIDs
|
||||
beq .9
|
||||
|
||||
dec
|
||||
sta (pstack)
|
||||
dec
|
||||
bra .1
|
||||
|
||||
.9 inc pStack
|
||||
|
||||
.99 lda #E.OOH
|
||||
* sec
|
||||
rts
|
||||
|
||||
.9 inc pStack discard CC.hSyms
|
||||
|
||||
lda #E.NOKEY
|
||||
sec
|
||||
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
|
||||
|
||||
|
@ -610,12 +612,9 @@ SYM.Lookup >LDA.G CC.LookupIdx
|
|||
|
||||
* clc
|
||||
rts
|
||||
|
||||
.99 lda #E.OOH
|
||||
* sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
SYM.LookupA bit bPass2
|
||||
SYM.LookupLabelA
|
||||
bit bPass2
|
||||
bmi .1
|
||||
|
||||
ldx #0
|
||||
|
@ -623,18 +622,39 @@ SYM.LookupA bit bPass2
|
|||
clc
|
||||
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
|
||||
>PUSHEA.G CC.CPSPFX
|
||||
>PUSHWI 0 ScopeID
|
||||
>PUSHB.G CC.hSyms ...for SListGetData
|
||||
|
||||
lda ScopeIdx
|
||||
|
||||
.2 pha
|
||||
>PUSHB.G CC.hSyms
|
||||
>PUSHEA.G CC.Label
|
||||
ply
|
||||
phy
|
||||
jsr SCOPE.PushY
|
||||
>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
|
||||
>PUSHWI 65535 all
|
||||
>PUSHWZ From Start
|
||||
|
@ -850,6 +870,32 @@ SYM.SetAddrYA phy
|
|||
sta (ZPSymBufPtr),y
|
||||
|
||||
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
|
||||
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.e.i
|
||||
*--------------------------------------
|
||||
DBG_SYM .EQ 0
|
||||
*--------------------------------------
|
||||
FILES.MAX .EQ 4
|
||||
LIBS.MAX .EQ 4
|
||||
SCOPE.MAX .EQ 16
|
||||
|
@ -46,15 +48,17 @@ SYM.SC.EXTERN .EQ 6
|
|||
SYM.SC.TYPEDEF .EQ 8
|
||||
SYM.SC.DEFINE .EQ 10
|
||||
SYM.SC.TAG .EQ 12
|
||||
SYM.hSym .EQ 3
|
||||
* .EQ 3
|
||||
SYM.SizeOf .EQ 4
|
||||
SYM.Addr .EQ 6
|
||||
SYM.BitO .EQ 8
|
||||
SYM.BitW .EQ 9
|
||||
SYM.DefSize .EQ 10
|
||||
SYM.Def .EQ 11 Funtions : fTQ,a1TQ,a2TQ....
|
||||
*
|
||||
SYM.Def .EQ 12 Funtions : fTQ,a1TQ,a2TQ....
|
||||
*
|
||||
SYM .EQ 14
|
||||
SYM.F.MAX .EQ 64
|
||||
*--------------------------------------
|
||||
SU.F.T .EQ 0
|
||||
SU.F.Q .EQ 1
|
||||
|
@ -63,19 +67,20 @@ SU.F.BitO .EQ 4
|
|||
SU.F.BitW .EQ 5
|
||||
SU.F.Name .EQ 6
|
||||
*--------------------------------------
|
||||
CPS.hMEM .EQ 7 switch/case
|
||||
CPS.Ptr .EQ 6
|
||||
CPS.hMEM .EQ 5 switch/case
|
||||
CPS.Ptr .EQ 4
|
||||
|
||||
CPS.Q .EQ 7 f
|
||||
CPS.T .EQ 6
|
||||
CPS.Q .EQ 5 f
|
||||
CPS.T .EQ 4
|
||||
|
||||
CPS.CPSID .EQ 4
|
||||
CPS.LOCAL .EQ 3
|
||||
CPS.STATE .EQ 2
|
||||
CPS.TERM .EQ 1
|
||||
CPS.KW .EQ 0
|
||||
*
|
||||
CPS .EQ 8
|
||||
CPS .EQ 6
|
||||
*--------------------------------------
|
||||
|
||||
*--------------------------------------
|
||||
* 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.GENERATING .DA MSG.GENERATING
|
||||
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.RTSTK .DA MSG.RTSTK
|
||||
L.MSG.ERROR .DA MSG.ERROR
|
||||
|
@ -233,6 +243,7 @@ J.CC.STYPES .DA TYPE.SCHAR
|
|||
.DA TYPE.SLONG
|
||||
*--------------------------------------
|
||||
L.CC.MAIN .DA CC.MAIN
|
||||
L.CC._RETURN_ .DA CC._RETURN_
|
||||
L.CC.SYSCALL .DA CC.SYSCALL
|
||||
L.CC.FPUCALL .DA CC.FPUCALL
|
||||
*--------------------------------------
|
||||
|
@ -364,11 +375,11 @@ CS.RUN.CLOOP jsr CORE.CompileFile
|
|||
|
||||
cmp #MLI.E.EOF
|
||||
bne .9
|
||||
|
||||
* bne .1
|
||||
jsr FIO.FClose
|
||||
bne CS.RUN.CLOOP
|
||||
*--------------------------------------
|
||||
jsr PrintSummary
|
||||
.1 jsr PrintSummary
|
||||
bcs .99
|
||||
|
||||
jsr CC.Link
|
||||
|
@ -570,7 +581,8 @@ PrintDebugMsg >PUSHW L.MSG.DEBUG
|
|||
|
||||
lda ScopeIdx
|
||||
sec
|
||||
sbc #CC.hScopes
|
||||
sbc #CC.ScopeIDs
|
||||
lsr
|
||||
>PUSHA
|
||||
|
||||
>PUSHBI 15
|
||||
|
@ -637,16 +649,17 @@ PrintSummary >PUSHW L.MSG.SUMMARY
|
|||
*--------------------------------------
|
||||
.INB usr/src/bin/cc.s.code
|
||||
.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.stmt
|
||||
.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.dir
|
||||
.INB usr/src/bin/cc.s.exp
|
||||
.INB usr/src/bin/cc.s.sym
|
||||
.INB usr/src/bin/cc.s.link
|
||||
.INB usr/src/bin/cc.s.f
|
||||
.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
|
||||
*--------------------------------------
|
||||
|
@ -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.DEBUG .CS "*** pCode=%H, pConst=%H, pData=%H, pStack=%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.RTSTK .CZ "<pBase=%H, pVar=%H, (pVar)=%H, pStack=%H>\r\n"
|
||||
MSG.ERROR .CZ " %s^\r\n"
|
||||
|
@ -808,6 +826,7 @@ CC.TYPESIGN .HS 0000FF00FF00FFFF
|
|||
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.LEN .EQ *-CC.MAIN.DEF
|
||||
CC._RETURN_ .AZ "_RETURN_;"
|
||||
*--------------------------------------
|
||||
CC.SYSCALL .PS "chtyp"
|
||||
.DA #SYS.ChTyp
|
||||
|
@ -1125,10 +1144,12 @@ CC.SaveDefine .BS 2
|
|||
CC.hTags .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.CPSPFX .BS 5 X_id\0
|
||||
CC.ScopeID .BS 2
|
||||
CC.ScopeIDs .BS 2+SCOPE.MAX*2 2 bytes Global+ MAX locals
|
||||
|
||||
CC.Label .BS 3 _X\0
|
||||
*--------------------------------------
|
||||
CC.hSymBuf .BS 1
|
||||
CC.SymID .BS 2
|
||||
|
|
430
BIN/FORMAT.S.txt
430
BIN/FORMAT.S.txt
|
@ -32,19 +32,17 @@ BlkCnt .BS 2
|
|||
TrkCnt .BS 1
|
||||
Stepping .BS 1
|
||||
VolNum .BS 1
|
||||
AltBB .BS 1
|
||||
bAltBB .BS 1
|
||||
HeadCnt .BS 1
|
||||
|
||||
TimeOut .BS 1
|
||||
|
||||
CatSize .BS 1
|
||||
CatBlkCnt .BS 1
|
||||
bLL .BS 1
|
||||
bCustomBlkSize .BS 1
|
||||
bHighDensity .BS 1
|
||||
bExtraTrack .BS 1
|
||||
bDS .BS 1
|
||||
bVerify .BS 1
|
||||
bCustomBlkSize .BS 1
|
||||
|
||||
TimeOut .BS 1
|
||||
|
||||
ZS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
|
@ -81,11 +79,19 @@ L.MSG.LLDISK2 .DA MSG.LLDISK2
|
|||
L.MSG.VERIFY .DA MSG.VERIFY
|
||||
L.MSG.WRITECAT .DA MSG.WRITECAT
|
||||
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
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBBLKDEV
|
||||
>SYSCALL LoadLib
|
||||
bcs .9
|
||||
|
||||
sta hLIBBLKDEV
|
||||
|
||||
.9 rts
|
||||
|
@ -94,14 +100,17 @@ CS.RUN ldy #S.PS.ARGC
|
|||
lda (pPS),y
|
||||
beq .99
|
||||
|
||||
.1 inc ArgIndex
|
||||
lda ArgIndex
|
||||
>SYSCALL ArgV
|
||||
bcc .11
|
||||
ldx #6
|
||||
|
||||
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)
|
||||
cmp #'-'
|
||||
bne .4
|
||||
|
@ -112,72 +121,53 @@ CS.RUN ldy #S.PS.ARGC
|
|||
|
||||
cmp #'0'
|
||||
bcc .2
|
||||
|
||||
cmp #'9'+1
|
||||
bcs .2
|
||||
|
||||
and #$0F
|
||||
sta CatSize
|
||||
.10 bra .1
|
||||
bra .1
|
||||
|
||||
.2 jsr CS.RUN.CheckOpt
|
||||
bcs .99
|
||||
|
||||
cpy #bCustomBlkSize
|
||||
bne .1
|
||||
|
||||
inc ArgIndex
|
||||
lda ArgIndex
|
||||
>SYSCALL ArgV
|
||||
bcs .99
|
||||
|
||||
>SYSCALL AToI
|
||||
>STYA BlkCnt
|
||||
bra .1
|
||||
|
||||
.99 >LDYA L.MSG.USAGE1
|
||||
>SYSCALL PutS
|
||||
>LDYA L.MSG.USAGE2
|
||||
>SYSCALL Puts
|
||||
lda #E.SYN
|
||||
sec
|
||||
.9 rts
|
||||
|
||||
.4 lda hDevID
|
||||
bne .5 Already have a dev...go get VolName
|
||||
|
||||
>LDYA ZPPtr1
|
||||
>SYSCALL GetDevByName
|
||||
bcs .9
|
||||
jsr CS.RUN.GetDev
|
||||
bcc .1
|
||||
|
||||
stx hDevID
|
||||
>STYA ZPPtrFD
|
||||
rts
|
||||
|
||||
>LDYA ZPPtr1
|
||||
>STYA ZPPtrDevName
|
||||
bra .10
|
||||
.5 jsr CS.RUN.GetVolName
|
||||
bcc .1
|
||||
|
||||
.5 ldy #$ff
|
||||
rts
|
||||
|
||||
.6 iny
|
||||
lda (ZPPtr1),y
|
||||
sta (pData),y VolName
|
||||
beq .10
|
||||
.99 >LDYA L.MSG.USAGE1
|
||||
>SYSCALL PutS
|
||||
>LDYA L.MSG.USAGE2
|
||||
>SYSCALL PutS
|
||||
|
||||
cpy #16
|
||||
bcc .6
|
||||
bra .99 VolName too long
|
||||
lda #E.SYN
|
||||
sec
|
||||
.9 rts
|
||||
|
||||
.8 lda hDevID
|
||||
beq .99
|
||||
*--------------------------------------
|
||||
CS.RUN.Format jsr CS.RUN.GetDevDIB
|
||||
bcs .99
|
||||
bcs .9
|
||||
|
||||
>PUSHW L.MSG.INIT
|
||||
>PUSHW ZPPtrDevName
|
||||
>PUSHEA.G VolName
|
||||
>PUSHW pData >PUSHEA.G VolName
|
||||
>PUSHBI 4
|
||||
>SYSCALL PrintF
|
||||
bcs .99
|
||||
bcs .9
|
||||
|
||||
jsr CS.RUN.GET.DSSS0000
|
||||
|
||||
|
@ -194,8 +184,7 @@ CS.RUN.Format jsr CS.RUN.GetDevDIB
|
|||
bcs .9
|
||||
|
||||
jsr CS.RUN.WriteCat
|
||||
|
||||
.99 bcs .9
|
||||
bcs .9
|
||||
|
||||
>LDYA L.MSG.OK
|
||||
>SYSCALL PutS
|
||||
|
@ -221,10 +210,158 @@ CS.RUN.Format jsr CS.RUN.GetDevDIB
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.GetDevDIB
|
||||
lda bCustomBlkSize
|
||||
bmi .8
|
||||
CS.RUN.CheckOpt ldy #1
|
||||
lda (ZPPtr1),y
|
||||
|
||||
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
|
||||
>STYA.G IOCTL+S.IOCTL.BUFPTR
|
||||
|
||||
|
@ -237,6 +374,9 @@ CS.RUN.GetDevDIB
|
|||
>SYSCALL IOCTL
|
||||
bcs .9
|
||||
|
||||
lda bCustomBlkSize
|
||||
bmi .8
|
||||
|
||||
>LDA.G DIB+S.DIB.SIZE
|
||||
tax
|
||||
iny
|
||||
|
@ -277,37 +417,7 @@ CS.RUN.GET.DSSS0000
|
|||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.LL >LDA.G DIB+S.DIB.T
|
||||
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
|
||||
CS.RUN.LL >PUSHW L.MSG.LL
|
||||
>PUSHW BlkCnt
|
||||
>PUSHBI 2
|
||||
>SYSCALL PrintF
|
||||
|
@ -596,10 +706,10 @@ CS.RUN.InitCat lda CatSize
|
|||
lda #4
|
||||
sta CatSize
|
||||
|
||||
.1 >LDA.G VolName
|
||||
.1 lda (pData) >LDA.G VolName
|
||||
bne .8 Volume name ok
|
||||
|
||||
>PUSHEA.G VolName
|
||||
>PUSHW pData >PUSHEA.G VolName
|
||||
>PUSHW L.FMT.BLANK
|
||||
>PUSHW A2osX.TIMER16
|
||||
>PUSHW A2osX.RANDOM16
|
||||
|
@ -642,18 +752,20 @@ CS.RUN.BuildCat jsr .7
|
|||
|
||||
jsr .7
|
||||
|
||||
>PUSHEA.G VolName
|
||||
>PUSHW pData >PUSHEA.G VolName
|
||||
>PUSHW.G IOCTL+S.IOCTL.BUFPTR
|
||||
>LIBCALL hLIBBLKDEV,LIBBLKDEV.BuildProDOSCat
|
||||
.9 rts
|
||||
|
||||
.7 >PUSHW BlkCnt
|
||||
>PUSHB CatSize
|
||||
>PUSHB AltBB
|
||||
>PUSHB bAltBB
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.WriteCat >LDYA L.MSG.WRITECAT
|
||||
>SYSCALL PutS
|
||||
CS.RUN.WriteCat >PUSHW L.MSG.WRITECAT
|
||||
>PUSHBI 0
|
||||
>SYSCALL PrintF
|
||||
bcs .9
|
||||
|
||||
>STZ.G IOCTL+S.IOCTL.BLKNUM
|
||||
iny
|
||||
|
@ -709,26 +821,6 @@ CS.QUIT lda hCatBuf
|
|||
.8 clc
|
||||
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
|
||||
|
||||
.1 jsr CS.RUN.CheckCtrlC
|
||||
|
@ -764,6 +856,36 @@ CS.RUN.CheckCtrlC
|
|||
plx
|
||||
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
|
||||
*--------------------------------------
|
||||
LIBBLKDEV .AZ "libblkdev"
|
||||
|
@ -771,15 +893,15 @@ hLIBBLKDEV .BS 1
|
|||
*--------------------------------------
|
||||
MSG.USAGE1 .CS "Usage : FORMAT <BLOCKDEV> [VOL.NAME]\r\n"
|
||||
.CS " -L : Low-Level Format\r\n"
|
||||
.CS "-L -V : Verify After LLF\r\n"
|
||||
.CS " -B xxxx : Smrtprt, Override Device block size\r\n"
|
||||
.CZ " -1-9 : Catalog Size (Blocks)\r\n"
|
||||
.CS " -V : Verify After LLF\r\n"
|
||||
.CS " -B xxxx : Volume size (blocks)\r\n"
|
||||
.CZ " -1-9 : Catalog Size (blocks)"
|
||||
MSG.USAGE2 .CS "------- ProDOS.FX only ------\r\n"
|
||||
.CS " -H : 35trk drives, High Density: 48 tracks, 384 Blocks\r\n"
|
||||
.CS " -X : 40trk drives, 320 Blocks\r\n"
|
||||
.CS "-H -X : 40trk drives, 432 Blocks\r\n"
|
||||
.CS " -D : Rana Elite II 640 Blocks, 2 Sides\r\n"
|
||||
.CZ "-H -D : Rana Elite III 1280 Blocks, 2 Sides\r\n"
|
||||
.CS " -A : Alternate boot block\r\n"
|
||||
.CS " -D : Dual sided\r\n"
|
||||
.CS " -S x : Quarter track stepping\r\n"
|
||||
.CZ " -T xxx : Track count\r\n"
|
||||
*--------------------------------------
|
||||
MSG.OK .CZ "[OK]"
|
||||
MSG.ERR .CS "[%h]"
|
||||
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..."
|
||||
FMT.BLANK .CZ "BLANK%H%H"
|
||||
*--------------------------------------
|
||||
OptionList .AS "LlBbHhXxDdVv"
|
||||
OptionVars .DA #bLL,#bLL,#bCustomBlkSize,#bCustomBlkSize
|
||||
.DA #bHighDensity,#bHighDensity,#bExtraTrack,#bExtraTrack
|
||||
.DA #bDS,#bDS
|
||||
.DA #bVerify,#bVerify
|
||||
OptionList .AS "AaBbDdLlSsTtVv"
|
||||
OptionList.cnt .EQ *-OptionList
|
||||
*--------------------------------------
|
||||
Disk2.Default .DA 280 BlkCnt
|
||||
.DA #35 TrkCnt
|
||||
.DA #4 Stepping
|
||||
.DA #$00 VolNum
|
||||
.DA #0 AltBB
|
||||
.DA #0 bAltBB
|
||||
.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
|
||||
.OR 0
|
||||
|
|
|
@ -196,9 +196,10 @@ CS.RUN.DIR lda (ZPFileName)
|
|||
>SYSCALL PrintF
|
||||
bcs .9
|
||||
|
||||
>PUSHW ZPFullPath
|
||||
jsr CS.RUN.GetNewPath
|
||||
>PUSHYA
|
||||
|
||||
>PUSHW ZPFullPath
|
||||
>PUSHW ZPNewPath
|
||||
>SYSCALL Rename
|
||||
jsr CS.RUN.CheckErr
|
||||
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
|
||||
|
||||
lda #$C0+C..
|
||||
jmp CORE.StkPush
|
||||
jmp STK.Push
|
||||
|
||||
CMD...9 jmp CMD.E.CSYN
|
||||
*--------------------------------------
|
||||
|
@ -189,6 +189,7 @@ CMD.CD.YA >PUSHYA
|
|||
beq .11
|
||||
|
||||
lda #MLI.E.INVPATH
|
||||
|
||||
.19 pha
|
||||
lda ZPTmpW
|
||||
>SYSCALL FreeMem
|
||||
|
@ -607,7 +608,7 @@ CMD.REN lda (ZPArgVBufPtr)
|
|||
*--------------------------------------
|
||||
CMD.FUNCTION lda (ZPArgVBufPtr)
|
||||
beq .9
|
||||
jsr CORE.StkGetCtx
|
||||
jsr STK.GetCtx
|
||||
bcc .9 No context allowed
|
||||
|
||||
>LDA.G hFunctions
|
||||
|
@ -713,7 +714,7 @@ CMD.CALL jsr CMD.CALL.GETFUNC
|
|||
bcs CMD.CALL.RTS
|
||||
|
||||
lda #$C0+C.CALL
|
||||
jmp CORE.StkPush
|
||||
jmp STK.Push
|
||||
*--------------------------------------
|
||||
CMD.CALL.GETFUNC
|
||||
>LDA.G hFunctions
|
||||
|
@ -738,7 +739,7 @@ CMD.EXIT lda (ZPArgVBufPtr)
|
|||
.1 ldy #S.PS.RC
|
||||
sta (pPS),y
|
||||
|
||||
.2 jsr CORE.StkPull Pull everything until CALL . CL...
|
||||
.2 jsr STK.Pull Pull everything until CALL . CL...
|
||||
bcs .9
|
||||
|
||||
cmp #$C0+C.. in CALL, "." or CL context ?
|
||||
|
@ -750,7 +751,7 @@ CMD.EXIT lda (ZPArgVBufPtr)
|
|||
cmp #$C0+C.CLEXEC
|
||||
beq .8
|
||||
|
||||
jsr CORE.StkPopCtxA
|
||||
jsr STK.PopCtxA
|
||||
bcc .2
|
||||
rts
|
||||
|
||||
|
@ -761,25 +762,25 @@ CMD.EXIT lda (ZPArgVBufPtr)
|
|||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CMD.EXIT.FILE jsr CORE.StkPullFree Code buffer
|
||||
CMD.EXIT.FILE jsr STK.PullFree Code buffer
|
||||
|
||||
ldy #S.PS.hARGV
|
||||
lda (pPS),y
|
||||
>SYSCALL FreeMem ArgV buffer
|
||||
|
||||
jsr CORE.StkPull
|
||||
jsr STK.Pull
|
||||
ldy #S.PS.hARGV
|
||||
sta (pPS),y
|
||||
|
||||
jsr CORE.StkPull
|
||||
jsr STK.Pull
|
||||
ldy #S.PS.ARGC
|
||||
sta (pPS),y
|
||||
|
||||
jsr CORE.StkPullInputBufPtr
|
||||
jsr STK.PullInputBufPtr
|
||||
|
||||
jsr CORE.StkPull
|
||||
jsr STK.Pull
|
||||
sta ZPInputBuf
|
||||
jsr CORE.StkPull
|
||||
jsr STK.Pull
|
||||
sta ZPInputBuf+1
|
||||
|
||||
ldy #S.PS.RC
|
||||
|
@ -788,19 +789,44 @@ CMD.EXIT.FILE jsr CORE.StkPullFree Code buffer
|
|||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.BREAK jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||
CMD.BREAK jsr STK.GetCtx Get context in CORE.TestResult
|
||||
bcs .9
|
||||
|
||||
tax
|
||||
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
|
||||
rts
|
||||
|
||||
|
@ -809,41 +835,51 @@ CMD.BREAK jsr CORE.StkGetCtx Get context in CORE.TestResult
|
|||
* stack-1 hVALUE
|
||||
* stack SWITCH TOKEN
|
||||
*--------------------------------------
|
||||
CMD.SWITCH jsr CORE.StkGetCtx
|
||||
CMD.SWITCH jsr STK.GetCtx
|
||||
|
||||
lda #2
|
||||
jsr CORE.StkCheck
|
||||
jsr STK.Check
|
||||
bcs .9
|
||||
|
||||
jsr EXP.GET
|
||||
bcs .9
|
||||
|
||||
>SYSCALL StrDup
|
||||
bcs .9
|
||||
|
||||
txa
|
||||
jsr CORE.StkPush Push EXP hVALUE
|
||||
jsr STK.Push Push EXP hVALUE
|
||||
|
||||
lda CORE.TestResult
|
||||
beq .1
|
||||
|
||||
ora #$80
|
||||
|
||||
.1 ora #C.SWITCH
|
||||
jmp CORE.StkPush
|
||||
jmp STK.Push
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CMD.CASE jsr CORE.StkGetCtx Get context in CORE.TestResult
|
||||
|
||||
CMD.CASE jsr STK.GetCtx Get context in CORE.TestResult
|
||||
bcs .9
|
||||
|
||||
tax
|
||||
and #$3F
|
||||
cmp #C.SWITCH
|
||||
beq .1
|
||||
|
||||
cmp #C.CASE
|
||||
bne .9
|
||||
|
||||
txa previous case was true ?
|
||||
bpl .10
|
||||
|
||||
jsr EXP.GET skip expression
|
||||
bcs .9
|
||||
|
||||
rts keep existing context
|
||||
.10 jsr CORE.StkPull remove previous C.CASE
|
||||
|
||||
.10 jsr STK.Pull remove previous C.CASE
|
||||
bra CMD.CASE
|
||||
|
||||
.1 jsr EXP.GET
|
||||
|
@ -862,13 +898,13 @@ CMD.CASE jsr CORE.StkGetCtx Get context in CORE.TestResult
|
|||
eor #$80
|
||||
ora CORE.TestResult
|
||||
ora #C.CASE
|
||||
jmp CORE.StkPush
|
||||
jmp STK.Push
|
||||
.9
|
||||
CMD.E.CSYN lda #E.CSYN
|
||||
sec
|
||||
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
|
||||
|
||||
and #$3F
|
||||
|
@ -879,14 +915,14 @@ CMD.DEFAULT jsr CORE.StkGetCtx Get context in CORE.TestResult
|
|||
cmp #C.CASE
|
||||
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
|
||||
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
|
||||
|
||||
and #$3F
|
||||
|
@ -900,9 +936,9 @@ CMD.END jsr CORE.StkGetCtx Get context in CORE.TestResult
|
|||
cmp #C.DEFAULT
|
||||
bne CMD.E.CSYN
|
||||
|
||||
.8 jmp CORE.StkPopCtx
|
||||
.8 jmp STK.PopCtx
|
||||
*--------------------------------------
|
||||
CMD.FOR jsr CORE.StkGetCtx
|
||||
CMD.FOR jsr STK.GetCtx
|
||||
|
||||
lda (ZPArgVBufPtr)
|
||||
beq CMD.E.CSYN
|
||||
|
@ -922,7 +958,7 @@ CMD.FOR jsr CORE.StkGetCtx
|
|||
beq CMD.E.CSYN
|
||||
|
||||
lda #8 Make sure 8 bytes free on stack
|
||||
jsr CORE.StkCheck
|
||||
jsr STK.Check
|
||||
bcs FOR.FILE.9
|
||||
|
||||
lda (ZPArgVBufPtr)
|
||||
|
@ -939,19 +975,19 @@ CMD.FOR.LIST >LDYA ZPArgVBufPtr
|
|||
phy
|
||||
pha
|
||||
|
||||
jsr CORE.StkPushInputBufPtr Push CmdPtr AFTER FOR
|
||||
jsr STK.PushInputBufPtr Push CmdPtr AFTER FOR
|
||||
|
||||
pla
|
||||
ply
|
||||
|
||||
jsr CORE.StkPushYAX Push listPtr,hList
|
||||
jsr STK.PushYAX Push listPtr,hList
|
||||
|
||||
jsr CORE.PushVarName Push hVARNAME
|
||||
|
||||
lda #C.FOR.LIST
|
||||
jsr CORE.StkPush
|
||||
jsr STK.Push
|
||||
lda #C.FOR
|
||||
jsr CORE.StkPush
|
||||
jsr STK.Push
|
||||
|
||||
jsr CMD.NEXT.LIST.TOKEN
|
||||
bcc CMD.FOR.LOOP
|
||||
|
@ -981,18 +1017,18 @@ CMD.FOR.EXEC jsr CORE.ArgV.NextChar skip "`"
|
|||
|
||||
CMD.FOR.PUSH pha save hFILE/hPIPE
|
||||
|
||||
jsr CORE.StkPushInputBufPtr Push CmdPtr AFTER FOR
|
||||
jsr STK.PushInputBufPtr Push CmdPtr AFTER FOR
|
||||
|
||||
pla
|
||||
|
||||
jsr CORE.StkPush push hPIPE for read
|
||||
jsr STK.Push push hPIPE for read
|
||||
jsr CORE.PushVarName Push hVARNAME
|
||||
* bcs FOR.FILE.9
|
||||
|
||||
lda #C.FOR.FILEEXEC
|
||||
jsr CORE.StkPush
|
||||
jsr STK.Push
|
||||
lda #C.FOR
|
||||
jsr CORE.StkPush
|
||||
jsr STK.Push
|
||||
|
||||
jsr CMD.NEXT.LINE
|
||||
bcs FOR.FILE.9
|
||||
|
@ -1008,7 +1044,7 @@ CMD.FOR.LOOP ora CORE.TestResult
|
|||
* clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.NEXT jsr CORE.StkGet Y = StkPtr
|
||||
CMD.NEXT jsr STK.Get Y = StkPtr
|
||||
bcs .9
|
||||
|
||||
and #$3F
|
||||
|
@ -1204,7 +1240,7 @@ CMD.NEXT.GetVarNamePtr
|
|||
rts
|
||||
*--------------------------------------
|
||||
CMD.WHILE
|
||||
CMD.IF jsr CORE.StkGetCtx
|
||||
CMD.IF jsr STK.GetCtx
|
||||
|
||||
bit #$40 Parent is true ?
|
||||
beq .3
|
||||
|
@ -1217,35 +1253,36 @@ CMD.IF jsr CORE.StkGetCtx
|
|||
bne .8
|
||||
|
||||
lda #3
|
||||
jsr CORE.StkCheck
|
||||
jsr STK.Check
|
||||
bcs CMD.NEXT.LINE.RTS
|
||||
|
||||
>LDYA ZPInputCmdPtr
|
||||
jsr CORE.StkPushYA Push BEFORE WHILE/IF
|
||||
jsr STK.PushYA Push BEFORE WHILE/IF
|
||||
|
||||
.8 lda CORE.TestResult
|
||||
ora CORE.IntCmd
|
||||
jmp CORE.StkPush
|
||||
jmp STK.Push
|
||||
*--------------------------------------
|
||||
CMD.LOOP jsr CORE.StkPull
|
||||
CMD.LOOP jsr STK.Pull
|
||||
bcs .9
|
||||
|
||||
tax
|
||||
and #$3F
|
||||
cmp #C.WHILE
|
||||
bne .9
|
||||
|
||||
txa
|
||||
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
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.ELSE jsr CORE.StkGet
|
||||
CMD.ELSE jsr STK.Get
|
||||
bcs .9
|
||||
|
||||
bit #$40 parent is true ?
|
||||
|
@ -1255,9 +1292,11 @@ CMD.ELSE jsr CORE.StkGet
|
|||
and #$3F
|
||||
cmp #C.IF
|
||||
bne .9
|
||||
|
||||
txa
|
||||
eor #$80 toggle and store at stack ptr
|
||||
sta (pData),y
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
.9
|
||||
|
@ -1265,7 +1304,7 @@ CMD.ELSE.NOIF lda #E.NOIF
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.FI jsr CORE.StkPull
|
||||
CMD.FI jsr STK.Pull
|
||||
bcs CMD.ELSE.NOIF
|
||||
|
||||
and #$3F
|
||||
|
|
|
@ -35,21 +35,21 @@ CORE.Load.YAX stx LOAD.hCode X = Code to Execute
|
|||
sta LOAD.ArgCnt A = ARGC
|
||||
|
||||
lda #8
|
||||
jsr CORE.StkCheck
|
||||
jsr STK.Check
|
||||
bcs .9
|
||||
|
||||
>LDYA ZPInputBuf
|
||||
jsr CORE.StkPushYA
|
||||
jsr STK.PushYA
|
||||
|
||||
jsr CORE.StkPushInputBufPtr
|
||||
jsr STK.PushInputBufPtr
|
||||
|
||||
ldy #S.PS.ARGC
|
||||
lda (pPS),y
|
||||
jsr CORE.StkPush old ARGC
|
||||
jsr STK.Push old ARGC
|
||||
|
||||
ldy #S.PS.hARGV
|
||||
lda (pPS),y
|
||||
jsr CORE.StkPush old hARGV
|
||||
jsr STK.Push old hARGV
|
||||
|
||||
ldy #S.PS.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
|
||||
|
||||
lda LOAD.hCode new code
|
||||
jsr CORE.StkPush
|
||||
jsr STK.Push
|
||||
* lda LOAD.hCode
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPInputBuf
|
||||
|
@ -95,7 +95,7 @@ CORE.Load.YAX stx LOAD.hCode X = Code to Execute
|
|||
* set hStdIn = hStdOut
|
||||
* set hStdOut = Std
|
||||
*--------------------------------------
|
||||
CORE.Run.EOF jsr CORE.StkPull
|
||||
CORE.Run.EOF jsr STK.Pull
|
||||
bcs *
|
||||
cmp #$C0+C.. check CALL . CL context
|
||||
beq .1
|
||||
|
@ -198,7 +198,7 @@ CORE.Run.4 >LDYA L.CMD internal command ?
|
|||
.41 stx CORE.IntCmd
|
||||
jsr CORE.SkipCharsA
|
||||
|
||||
.42 jsr CORE.StkGet
|
||||
.42 jsr STK.Get
|
||||
bcs CORE.Run.5 no particular context, exec...
|
||||
|
||||
tax
|
||||
|
@ -794,191 +794,6 @@ CORE.SListGetData
|
|||
>SYSCALL SListGetData X = hMem
|
||||
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
|
||||
SAVE usr/src/bin/sh.s.core
|
||||
LOAD usr/src/bin/sh.s
|
||||
|
|
188
BIN/SH.S.STK.txt
Normal file
188
BIN/SH.S.STK.txt
Normal file
|
@ -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
|
||||
jsr CORE.Init
|
||||
|
||||
lda #0
|
||||
jsr GetArgV
|
||||
>STYA.G SH
|
||||
* lda #0
|
||||
* jsr GetArgV
|
||||
* >STYA.G SH
|
||||
|
||||
ldy #S.PS.ARGC
|
||||
lda (pPS),y
|
||||
|
@ -397,7 +397,7 @@ CS.RUN.CMDLINE >SYSCALL StrDup
|
|||
bcs CS.RUN.CMDLINE.9
|
||||
|
||||
lda #$C0+C.CLEXEC
|
||||
jsr CORE.StkPush
|
||||
jsr STK.Push
|
||||
|
||||
bra CS.RUN.LOOP.RUN
|
||||
|
||||
|
@ -439,7 +439,7 @@ CS.RUN.LOOP.END ldy #S.PS.RC
|
|||
and #bState.SET.E
|
||||
bne CS.RUN.LOOP.80
|
||||
|
||||
.1 jsr CORE.StkGet
|
||||
.1 jsr STK.Get
|
||||
cmp #$C0+C.CLEXEC
|
||||
beq .8
|
||||
|
||||
|
@ -449,13 +449,13 @@ CS.RUN.LOOP.END ldy #S.PS.RC
|
|||
cmp #$C0+C.CALL in CALL ?
|
||||
beq .7
|
||||
|
||||
jsr CORE.StkPopCtx
|
||||
jsr STK.PopCtx
|
||||
bcc .1
|
||||
|
||||
.7 jsr IO.PrintBatchErrMsg
|
||||
bcs CS.RUN.LOOP.RTS
|
||||
|
||||
jsr CORE.StkPull
|
||||
jsr STK.Pull
|
||||
jsr CMD.EXIT.FILE
|
||||
|
||||
.8 jsr IO.PrintErrMsg
|
||||
|
@ -601,11 +601,12 @@ PrintYANoCR >PUSHYA
|
|||
rts
|
||||
*--------------------------------------
|
||||
.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.core
|
||||
.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
|
||||
*--------------------------------------
|
||||
|
@ -737,7 +738,7 @@ CORE.STACK .BS CORE.STACK.MAX+1 pData (0 = Stack Ptr)
|
|||
PUSHD.STACK .BS PUSHD.STACK.MAX+1
|
||||
CODE.STACK .BS CODE.STACK.MAX*7+1
|
||||
|
||||
SH .BS 2
|
||||
*SH .BS 2
|
||||
|
||||
hAliases .BS 1
|
||||
hFunctions .BS 1
|
||||
|
|
|
@ -199,9 +199,10 @@ CS.RUN.DIR lda (ZPFileName)
|
|||
>SYSCALL PrintF
|
||||
bcs .9
|
||||
|
||||
>PUSHW ZPFullPath
|
||||
jsr CS.RUN.GetNewPath
|
||||
>PUSHYA
|
||||
|
||||
>PUSHW ZPFullPath
|
||||
>PUSHW ZPNewPath
|
||||
>SYSCALL Rename
|
||||
jsr CS.RUN.CheckErr
|
||||
bcs .9
|
||||
|
|
|
@ -14,7 +14,7 @@ LBUF.SetBounds1YA
|
|||
LBUF.SetBounds2YA
|
||||
jsr DIVMOD7YA A=DIV, X=MOD
|
||||
sta LBUF.C2
|
||||
cmp LBUF.C1 C1=C2, go combine in C1
|
||||
cmp LBUF.C1
|
||||
beq .1
|
||||
|
||||
lda C2.MASK,x
|
||||
|
@ -23,12 +23,10 @@ LBUF.SetBounds2YA
|
|||
sta LBUF.C2.DATA
|
||||
rts
|
||||
|
||||
.1 lda C1.MASK,x
|
||||
ora C2.MASK,x
|
||||
sta LBUF.C1.MASK
|
||||
lda C1.DATA,x
|
||||
ora C2.DATA,x
|
||||
sta LBUF.C1.DATA
|
||||
.1 lda C2.MASK,x C1=C2, go combine in C1
|
||||
tsb LBUF.C1.MASK
|
||||
lda C2.DATA,x
|
||||
tsb LBUF.C1.DATA
|
||||
rts
|
||||
*--------------------------------------
|
||||
LBUF.DrawAtY lda BASEL,y setup line Base Ptr
|
||||
|
@ -92,22 +90,18 @@ LBUF.DrawAtY.AND.XOR
|
|||
LBUF.DrawAtY.ORA
|
||||
lda #$11 ORA (Indirect),Y
|
||||
LBUF.DrawAtY.XXX
|
||||
sta .10+1
|
||||
sta .20+1
|
||||
sta .30+1
|
||||
sta .10
|
||||
sta .20
|
||||
sta .30
|
||||
|
||||
ldx LBUF.C1 x C1->C2
|
||||
|
||||
>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
|
||||
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
|
||||
inx
|
||||
cpx LBUF.C2
|
||||
|
@ -118,7 +112,7 @@ LBUF.DrawAtY.XXX
|
|||
.1 >X2PageY
|
||||
|
||||
lda LBUF.DATA,x set all bytes between C1+1 & C2-1
|
||||
.20 ora (ZPBasePtr),y
|
||||
.20 eor (ZPBasePtr),y
|
||||
sta (ZPBasePtr),y
|
||||
|
||||
inx
|
||||
|
@ -127,14 +121,10 @@ LBUF.DrawAtY.XXX
|
|||
|
||||
.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
|
||||
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
|
||||
|
||||
.8 rts
|
||||
|
@ -146,43 +136,33 @@ LBUF.DrawAtY.AND.ORA
|
|||
|
||||
lda LBUF.MASK,x get MASK bits
|
||||
ora LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
|
||||
|
||||
cpx LBUF.C2
|
||||
bne .1
|
||||
|
||||
ora LBUF.C2.MASK special case : C1=C2
|
||||
and (ZPBasePtr),y
|
||||
sta ZPTmpByte
|
||||
|
||||
lda LBUF.DATA,x
|
||||
and LBUF.C1.DATA
|
||||
and LBUF.C2.DATA
|
||||
ora ZPTmpByte
|
||||
sta (ZPBasePtr),y update screen
|
||||
rts
|
||||
|
||||
.1 and (ZPBasePtr),y Clear screen at C1
|
||||
sta ZPTmpByte
|
||||
inx
|
||||
cpx LBUF.C2
|
||||
beq .2 C1=C2, go setup C2
|
||||
|
||||
lda LBUF.DATA,x get DATA bits
|
||||
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
|
||||
ora ZPTmpByte ora with screen bits
|
||||
bcs .8 C1+1 > C2, we are done...
|
||||
|
||||
bra .3
|
||||
|
||||
.2 >X2PageY
|
||||
.1 >X2PageY
|
||||
|
||||
lda (ZPBasePtr),y
|
||||
and LBUF.MASK,x
|
||||
ora LBUF.DATA,x set all bytes between C1+1 & C2-1
|
||||
|
||||
.3 sta (ZPBasePtr),y update screen
|
||||
sta (ZPBasePtr),y update screen
|
||||
|
||||
inx
|
||||
cpx LBUF.C2
|
||||
bne .2
|
||||
bne .1
|
||||
|
||||
>X2PageY
|
||||
.2 >X2PageY
|
||||
|
||||
lda LBUF.MASK,x get MASK bits
|
||||
ora LBUF.C2.MASK
|
||||
|
|
|
@ -478,11 +478,14 @@ OSD.BM.Create lda DstBM.Cache+S.BM.W
|
|||
ldx DstBM.Cache+S.BM.W+1
|
||||
bit #7
|
||||
beq .1
|
||||
|
||||
and #$F8
|
||||
clc
|
||||
adc #8
|
||||
bcc .1
|
||||
|
||||
inx
|
||||
|
||||
.1 sta DstBM.Cache+S.BM.RowBytes
|
||||
txa
|
||||
|
||||
|
@ -509,12 +512,16 @@ OSD.BM.Create lda DstBM.Cache+S.BM.W
|
|||
adc /S.BM
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPDstBMPtr
|
||||
|
||||
ldy #S.BM-1
|
||||
|
||||
.2 lda DstBM.Cache,y
|
||||
sta (ZPDstBMPtr),y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
lda ZPDstBMPtr
|
||||
* clc
|
||||
adc #S.BM
|
||||
|
@ -524,6 +531,7 @@ OSD.BM.Create lda DstBM.Cache+S.BM.W
|
|||
adc /S.BM
|
||||
sta ZPDstBMPtr+1
|
||||
sta .4+2
|
||||
|
||||
ldy #0
|
||||
|
||||
lda CBX.Cache+S.CB.OP
|
||||
|
@ -531,16 +539,22 @@ OSD.BM.Create lda DstBM.Cache+S.BM.W
|
|||
beq .3
|
||||
|
||||
lda #$ff
|
||||
|
||||
.3 inc ZPTmpPtr
|
||||
bne .4
|
||||
|
||||
inc ZPTmpPtr+1
|
||||
beq .8
|
||||
|
||||
.4 sta $ffff,y
|
||||
iny
|
||||
bne .3
|
||||
|
||||
inc .4+2
|
||||
bra .3
|
||||
|
||||
.8 txa hBM
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -121,6 +121,7 @@ FD.DEV.NAME .AZ "mou1"
|
|||
*--------------------------------------
|
||||
ZPIOCTL .EQ ZPDRV
|
||||
ZPBufPtr .EQ ZPDRV+2
|
||||
ZPState .EQ ZPDRV+4
|
||||
*--------------------------------------
|
||||
DRV.CS.START cld
|
||||
jmp (.1,x)
|
||||
|
@ -225,7 +226,7 @@ EXIT1 jsr GOMOUSE
|
|||
*--------------------------------------
|
||||
READ >STYA ZPBufPtr NON STANDARD
|
||||
|
||||
stz READ.S+1 Reset Flags
|
||||
stz ZPState Reset Flags
|
||||
|
||||
php
|
||||
sei
|
||||
|
@ -255,7 +256,8 @@ READ >STYA ZPBufPtr NON STANDARD
|
|||
sta (ZPBufPtr),y
|
||||
|
||||
lda #S.XY.S.MOVE
|
||||
tsb READ.S+1
|
||||
tsb ZPState
|
||||
|
||||
stz bDblClick Reset DblClick flag
|
||||
|
||||
.1 lda MOUSESTSx,x
|
||||
|
@ -263,32 +265,41 @@ READ >STYA ZPBufPtr NON STANDARD
|
|||
beq .8 no button state change:up & previously up
|
||||
|
||||
cmp #MOUSESTSx.DOWN+MOUSESTSx.LDOWN
|
||||
beq .8 no button state change:down & previously down
|
||||
bne .10
|
||||
|
||||
asl if CS, down & previously up
|
||||
bcc .2
|
||||
lda ZPState no button state change:down & previously down
|
||||
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 MOUSEXHIx,x
|
||||
sta SrcDrag+1
|
||||
lda MOUSEYLOx,x
|
||||
sta SrcDrag+2
|
||||
lda MOUSEYHIx,x
|
||||
sta SrcDrag+3
|
||||
lda #S.XY.S.DRAGSTART
|
||||
tsb ZPState
|
||||
bra .8
|
||||
|
||||
.2 lda READ.S+1
|
||||
pha save move state
|
||||
ora #S.XY.S.UP
|
||||
sta READ.S+1
|
||||
pla get back move state
|
||||
bne .4 no move...click!
|
||||
.10 asl
|
||||
bcc .2 if CC, up & previously down
|
||||
|
||||
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
|
||||
bpl .3
|
||||
|
||||
|
@ -299,11 +310,11 @@ READ >STYA ZPBufPtr NON STANDARD
|
|||
|
||||
.3 dec bDblClick
|
||||
|
||||
tsb READ.S+1
|
||||
tsb ZPState
|
||||
bra .8
|
||||
|
||||
.4 lda #S.XY.S.DRAGSTART
|
||||
tsb READ.S+1
|
||||
*--------------------------------------
|
||||
.4 lda #S.XY.S.DRAGEND
|
||||
tsb ZPState
|
||||
|
||||
ldy #S.XY.X2+3
|
||||
|
||||
|
@ -312,9 +323,11 @@ READ >STYA ZPBufPtr NON STANDARD
|
|||
dey
|
||||
bpl .5
|
||||
|
||||
stz bDrag
|
||||
*--------------------------------------
|
||||
.8 plp
|
||||
|
||||
READ.S lda #$ff SELF MODIFIED
|
||||
lda ZPState
|
||||
beq .9
|
||||
|
||||
ldy #S.XY.S
|
||||
|
@ -356,6 +369,7 @@ GOMOUSE.JMP jmp $C100 SELF MODIFIED
|
|||
DRV.CS.END
|
||||
DEVSLOT0n .BS 1
|
||||
bDblClick .BS 1
|
||||
bDrag .BS 1
|
||||
SrcDrag .BS 4
|
||||
*--------------------------------------
|
||||
DIB .DA #0
|
||||
|
|
|
@ -46,6 +46,9 @@ BM.ID.RIGHT .EQ 12
|
|||
BM.ID.UP .EQ 14
|
||||
BM.ID.DOWN .EQ 16
|
||||
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.CANCEL .EQ 2
|
||||
|
@ -86,14 +89,6 @@ S.MSG.Y1 .EQ 8
|
|||
S.MSG.X2 .EQ 10
|
||||
S.MSG.Y2 .EQ 12
|
||||
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
|
||||
*--------------------------------------
|
||||
|
@ -115,9 +110,12 @@ S.OBJ.T.MBAR .EQ 2
|
|||
S.OBJ.T.MENU .EQ 4
|
||||
S.OBJ.T.BUT .EQ 6
|
||||
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.BORDER .EQ %10000000
|
||||
|
||||
S.OBJ.S .EQ 2
|
||||
S.OBJ.S.VISIBLE .EQ %10000000
|
||||
|
||||
|
@ -131,8 +129,8 @@ S.OBJ.X2 .EQ 12
|
|||
S.OBJ.Y2 .EQ 14
|
||||
S.OBJ.W .EQ 16
|
||||
S.OBJ.H .EQ 18
|
||||
S.OBJ.pNEXT .EQ 20
|
||||
*
|
||||
S.OBJ.pChilds .EQ 20
|
||||
S.OBJ.pNext .EQ 22
|
||||
*
|
||||
S.OBJ .EQ 24
|
||||
*--------------------------------------
|
||||
|
@ -149,7 +147,7 @@ S.WND.S.HASMBAR .EQ %00000010
|
|||
S.WND.S.HASSBAR .EQ %00000100
|
||||
S.WND.S.MAXIMIZED .EQ %00001000
|
||||
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.MinH .EQ S.OBJ+2
|
||||
|
@ -163,24 +161,24 @@ S.WND.hPTR .EQ S.OBJ+16
|
|||
*
|
||||
* private
|
||||
*
|
||||
S.WND.TitleX1 .EQ S.OBJ+18
|
||||
S.WND.TitleX2 .EQ S.OBJ+20
|
||||
* S.WND.TBarY1 .EQ S.OBJ.X1
|
||||
S.WND.TBarY2 .EQ S.OBJ+22
|
||||
S.WND.MBarY1 .EQ S.OBJ+24
|
||||
S.WND.MBarY2 .EQ S.OBJ+26
|
||||
S.WND.InnerY1 .EQ S.OBJ+28
|
||||
S.WND.InnerY2 .EQ S.OBJ+30
|
||||
S.WND.SBarY1 .EQ S.OBJ+32
|
||||
S.WND.InnerX2 .EQ S.OBJ+34
|
||||
S.WND.TBarY2 .EQ S.OBJ+20
|
||||
S.WND.MBarY1 .EQ S.OBJ+22
|
||||
S.WND.MBarY2 .EQ S.OBJ+24
|
||||
S.WND.SBarY1 .EQ S.OBJ+26
|
||||
*
|
||||
S.WND.InnerX1 .EQ S.OBJ+28
|
||||
S.WND.InnerY1 .EQ S.OBJ+30
|
||||
S.WND.InnerX2 .EQ S.OBJ+32
|
||||
S.WND.InnerY2 .EQ S.OBJ+34
|
||||
S.WND.InnerW .EQ S.OBJ+36
|
||||
S.WND.InnerH .EQ S.OBJ+38
|
||||
*
|
||||
S.WND.DocW .EQ S.OBJ+40
|
||||
S.WND.DocH .EQ S.OBJ+42
|
||||
S.WND.DocX .EQ S.OBJ+44
|
||||
S.WND.DocY .EQ S.OBJ+46
|
||||
S.WND.fPaint .EQ S.OBJ+48
|
||||
S.WND.pChilds .EQ S.OBJ+50
|
||||
*
|
||||
*
|
||||
S.WND .EQ S.OBJ+52
|
||||
*--------------------------------------
|
||||
|
@ -221,10 +219,11 @@ S.MITEM.ID .EQ 10
|
|||
*
|
||||
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.S.PUSHED .EQ %10000000
|
||||
S.BUT.S.SELECTED .EQ %10000000
|
||||
*
|
||||
S.BUT.pICON .EQ S.OBJ
|
||||
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.LABEL.pTEXT .EQ S.OBJ
|
||||
*
|
||||
S.LABEL .EQ S.OBJ+2
|
||||
*--------------------------------------
|
||||
S.TEXT.F.DISABLED .EQ %10000000
|
||||
*
|
||||
S.TEXT.hBM .EQ S.OBJ
|
||||
S.TEXT.TEXTX .EQ S.OBJ+2
|
||||
S.TEXT.TEXTY .EQ S.OBJ+4
|
||||
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
|
||||
SAVE inc/libgui.i
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
|
||||
#define C_BLACK 0
|
||||
#define C_WHITE 255
|
||||
#define pC_WHITE ((void *)255)
|
||||
#define C_BLACK ((void *)0)
|
||||
#define C_WHITE ((void *)255)
|
||||
|
||||
#define PTR_T_ARROW 0
|
||||
#define PTR_T_MOVE 2
|
||||
|
@ -11,7 +10,7 @@ NEW
|
|||
#define PTR_T_RESIZEY 6
|
||||
#define PTR_T_RESIZEXY1 8
|
||||
#define PTR_T_RESIZEXY2 10
|
||||
#define PTR_T_CROSS 12
|
||||
#define PTR_T_CROSS ((void *)12)
|
||||
#define PTR_T_TEXT 14
|
||||
#define PTR_T_WAIT 16
|
||||
|
||||
|
|
|
@ -177,41 +177,63 @@ BM.Down.AND .DA #%1111111
|
|||
.DA #%1110111
|
||||
.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
|
||||
.DA #4 RowBytes
|
||||
.DA 28 W
|
||||
.DA 32 W
|
||||
.DA 14 H
|
||||
.DA BM.INFO.AND-BM.INFO
|
||||
.DA BM.Info.AND-BM.Info
|
||||
|
||||
.HS 00000000
|
||||
.HS 00000000
|
||||
.HS 00000000
|
||||
.HS 00000000
|
||||
.HS 0BBBBB00
|
||||
.HS 0BBBBB00
|
||||
.HS 0BBBBB00
|
||||
.HS 0BBBBB00
|
||||
.HS 0BBBBB00
|
||||
.HS 0BBBBB00
|
||||
.HS 00000000
|
||||
.HS 00000000
|
||||
.HS 00000000
|
||||
.HS 00000000
|
||||
.HX 00000000
|
||||
.HX 00022000
|
||||
.HX 00222200
|
||||
.HX 002FF200
|
||||
.HX 022FF220
|
||||
.HX 02222220
|
||||
.HX 02FFFF20
|
||||
.HX 022FF220
|
||||
.HX 022FF220
|
||||
.HX 02FFFF20
|
||||
.HX 00222200
|
||||
.HX 00222200
|
||||
.HX 00022000
|
||||
.HX 00000000
|
||||
|
||||
BM.Info.AND .HS FFF0FFF0
|
||||
.HS FF000FF0
|
||||
.HS FF000FF0
|
||||
.HS F00000F0
|
||||
.HS F00000F0
|
||||
.HS 00000000
|
||||
.HS 00000000
|
||||
.HS 00000000
|
||||
.HS 00000000
|
||||
.HS F00000F0
|
||||
.HS F00000F0
|
||||
.HS FF0000F0
|
||||
.HS FF000FF0
|
||||
.HS FFF0FFF0
|
||||
BM.Info.AND .HX FFF00FFF
|
||||
.HX FF0000FF
|
||||
.HX F000000F
|
||||
.HX F000000F
|
||||
.HX 00000000
|
||||
.HX 00000000
|
||||
.HX 00000000
|
||||
.HX 00000000
|
||||
.HX 00000000
|
||||
.HX 00000000
|
||||
.HX F000000F
|
||||
.HX F000000F
|
||||
.HX FF0000FF
|
||||
.HX FFF00FFF
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libgui.g.bm
|
||||
|
|
|
@ -3,7 +3,6 @@ NEW
|
|||
*--------------------------------------
|
||||
hSYSFON .BS 1
|
||||
hSYSFONB .BS 1
|
||||
SYSFON.Hm1 .BS 1
|
||||
SYSFON.H .BS 1
|
||||
SYSFON.Hp1 .BS 1
|
||||
SYSFON.Hp2 .BS 1
|
||||
|
|
|
@ -4,6 +4,9 @@ NEW
|
|||
PTR.T .BS 1
|
||||
PTR.bVisible .BS 1
|
||||
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
|
||||
.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.Wait6
|
||||
*--------------------------------------
|
||||
PTR.SaveBuf .BS 64 16*4
|
||||
*--------------------------------------
|
||||
PTR.Arrow .DA #S.BM.F.BBP1
|
||||
.DA #2 RowBytes
|
||||
.DA 11 W
|
||||
|
@ -56,32 +57,32 @@ PTR.Arrow.MASK .DA %111.11111100
|
|||
*--------------------------------------
|
||||
PTR.Move .DA #S.BM.F.BBP1
|
||||
.DA #2 RowBytes
|
||||
.DA 11 W
|
||||
.DA 12 W
|
||||
.DA 11 H
|
||||
.DA PTR.Move.MASK-PTR.Move
|
||||
.DA %000.00100000
|
||||
.DA %000.01010000
|
||||
.DA %000.10001000
|
||||
.DA %001.00000100
|
||||
.DA %010.00000010
|
||||
.DA %100.00000001
|
||||
.DA %010.00000010
|
||||
.DA %001.00000100
|
||||
.DA %000.10001000
|
||||
.DA %000.01010000
|
||||
.DA %000.00100000
|
||||
.DA %0000.001000000
|
||||
.DA %0000.010100000
|
||||
.DA %0000.100010000
|
||||
.DA %0001.111111000
|
||||
.DA %0010.100010100
|
||||
.DA %0100.100010010
|
||||
.DA %0010.100010100
|
||||
.DA %0001.111111000
|
||||
.DA %0000.100010000
|
||||
.DA %0000.010100000
|
||||
.DA %0000.001000000
|
||||
PTR.Move.MASK
|
||||
.DA %111.11111111
|
||||
.DA %111.11111111
|
||||
.DA %111.11111111
|
||||
.DA %111.11111111
|
||||
.DA %111.11111111
|
||||
.DA %111.11111111
|
||||
.DA %111.11111111
|
||||
.DA %111.11111111
|
||||
.DA %111.11111111
|
||||
.DA %111.11111111
|
||||
.DA %111.11111111
|
||||
.DA %1111.100011111
|
||||
.DA %1111.000001111
|
||||
.DA %1110.000000111
|
||||
.DA %1100.000000011
|
||||
.DA %1000.000000001
|
||||
.DA %0000.000000000
|
||||
.DA %1000.000000001
|
||||
.DA %1100.000000011
|
||||
.DA %1110.000000111
|
||||
.DA %1111.000001111
|
||||
.DA %1111.100011111
|
||||
*--------------------------------------
|
||||
PTR.ResizeX .DA #S.BM.F.BBP1
|
||||
.DA #2 RowBytes
|
||||
|
|
52
LIB/LIBGUI.S.BITMAP.txt
Normal file
52
LIB/LIBGUI.S.BITMAP.txt
Normal file
|
@ -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
|
||||
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
|
||||
SAVE usr/src/lib/libgui.s.bm
|
||||
|
|
|
@ -5,9 +5,9 @@ NEW
|
|||
*--------------------------------------
|
||||
BUT.New lda #S.OBJ.T.BUT
|
||||
jsr OBJ.New
|
||||
bcs .9
|
||||
* bcs .9
|
||||
|
||||
* >STYA ZPObjPtr
|
||||
phx hOBJ
|
||||
|
||||
ldy #S.OBJ.Y1
|
||||
jsr OBJ.PullWordAtY
|
||||
|
@ -15,6 +15,9 @@ BUT.New lda #S.OBJ.T.BUT
|
|||
ldy #S.OBJ.X1
|
||||
jsr OBJ.PullWordAtY
|
||||
|
||||
ldy #S.BUT.ID
|
||||
jsr OBJ.PullWordAtY
|
||||
|
||||
ldy #S.BUT.KEYMOD
|
||||
jsr OBJ.PullWordAtY
|
||||
|
||||
|
@ -74,7 +77,7 @@ BUT.New lda #S.OBJ.T.BUT
|
|||
adc DX+1
|
||||
sta DX+1
|
||||
|
||||
.3 lda #PREFS.XSeparator
|
||||
.3 lda PREFS.XSeparator
|
||||
asl
|
||||
* clc
|
||||
adc DX
|
||||
|
@ -85,26 +88,95 @@ BUT.New lda #S.OBJ.T.BUT
|
|||
iny
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
.5
|
||||
.5 lda SYSFON.Hp2
|
||||
ldy #S.OBJ.H
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
>LDYA ZPObjPtr
|
||||
jsr OBJ.SetX2Y2
|
||||
|
||||
|
||||
|
||||
.8 jsr WND.AddChild.I
|
||||
|
||||
pla hOBJ
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 >POP 16
|
||||
rts
|
||||
*--------------------------------------
|
||||
BUT.Enter ldy #S.OBJ.S
|
||||
lda (ZPObjPtr),y
|
||||
bpl BUT.Paint
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
BUT.Leave ldy #S.OBJ.S
|
||||
lda (ZPObjPtr),y
|
||||
bpl .8
|
||||
|
||||
.9 >POP 14
|
||||
bit #S.BUT.F.NOLEAVE
|
||||
beq BUT.Paint
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
BUT.Enter
|
||||
*--------------------------------------
|
||||
BUT.Draw
|
||||
|
||||
*--------------------------------------
|
||||
BUT.Close
|
||||
|
||||
clc
|
||||
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
|
||||
SAVE usr/src/lib/libgui.s.but
|
||||
LOAD usr/src/lib/libgui.s
|
||||
|
|
|
@ -1,27 +1,6 @@
|
|||
NEW
|
||||
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
|
||||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache,x
|
||||
|
@ -30,6 +9,32 @@ CB.GetWndYCacheX
|
|||
sta CB.Cache+1,x
|
||||
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
|
||||
sta CB.Cache+S.CB.CMD
|
||||
lda #S.CB.OP.SET
|
||||
|
@ -53,12 +58,115 @@ CB.FillRectMonoA
|
|||
sta CB.Cache+S.CB.M
|
||||
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
|
||||
|
||||
ldx hCBBuf
|
||||
bne .9
|
||||
|
||||
>LDYAI 512
|
||||
>LDYAI 1024
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
|
||||
|
@ -67,82 +175,86 @@ CB.GetBuf clc
|
|||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CB.Cache2CBBuf
|
||||
lda CB.Cache
|
||||
CB.Cache2CBBufG jsr CB.ToGlobal
|
||||
*--------------------------------------
|
||||
CB.Cache2CBBuf lda CB.Cache
|
||||
lsr
|
||||
tax
|
||||
ldy CB.CmdLen-1,x
|
||||
|
||||
ldx #0
|
||||
|
||||
.1 lda CB.Cache,x
|
||||
sta (ZPCBBufPtr)
|
||||
inc ZPCBBufPtr
|
||||
bne .2
|
||||
.1 lda CB.Cache,y
|
||||
sta (ZPCBBufPtr),y
|
||||
dey
|
||||
bpl .1
|
||||
*--------------------------------------
|
||||
CB.BufNext lda (ZPCBBufPtr) Get Cmd
|
||||
lsr
|
||||
tax
|
||||
lda CB.CmdLen-1,x
|
||||
sec +1
|
||||
adc ZPCBBufPtr
|
||||
sta ZPCBBufPtr
|
||||
bcc .1
|
||||
|
||||
inc ZPCBBufPtr+1
|
||||
|
||||
.2 inx
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
rts
|
||||
.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
|
||||
|
||||
lda hCBBuf
|
||||
CB.FlushBuf ldx hCBBuf
|
||||
beq .8
|
||||
|
||||
jsr PTR.Disable
|
||||
|
||||
lda #0
|
||||
sta (ZPCBBufPtr)
|
||||
|
||||
lda hCBBuf
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPCBBufPtr
|
||||
|
||||
jsr PTR.Disable
|
||||
*--------------------------------------
|
||||
.2 lda (ZPCBBufPtr)
|
||||
.1 lda (ZPCBBufPtr) Get Cmd
|
||||
beq .7
|
||||
|
||||
>LDYA ZPCBBufPtr
|
||||
jsr CB.GetInCache A = CB.CMD
|
||||
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
|
||||
jsr CB.GFXWrite
|
||||
ldx #0 Select CB.Cache
|
||||
jsr CB.GFXWriteX Direct Write (no clip)
|
||||
bcs .9
|
||||
|
||||
jsr CLIP.CB.Cache
|
||||
bcs .3
|
||||
jsr CB.GFXWriteClip
|
||||
|
||||
jsr CB.GFXWrite
|
||||
|
||||
.3 lda CB.Cache+S.CB.SrcPtr
|
||||
lda CB.Cache+S.CB.SrcPtr
|
||||
>SYSCALL2 FreeStkObj
|
||||
bra .5
|
||||
*--------------------------------------
|
||||
.4 jsr CB.GFXWriteClip
|
||||
|
||||
.4 jsr CLIP.CB.Cache
|
||||
bcs .5
|
||||
|
||||
jsr CB.GFXWrite
|
||||
|
||||
.5 lda (ZPCBBufPtr) Get Cmd
|
||||
lsr
|
||||
tax
|
||||
lda CB.CmdLen-1,x
|
||||
sec +1
|
||||
adc ZPCBBufPtr
|
||||
sta ZPCBBufPtr
|
||||
bcc .2
|
||||
|
||||
inc ZPCBBufPtr+1
|
||||
bra .2
|
||||
.5 jsr CB.BufNext
|
||||
bra .1
|
||||
|
||||
.7 lda hCBBuf
|
||||
stz hCBBuf
|
||||
|
@ -153,55 +265,13 @@ CB.FlushBufToYA jsr CLIP.GetRect
|
|||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CB.GFXWritePtr jsr PTR.Disable
|
||||
jsr CB.GFXWrite
|
||||
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
|
||||
CB.ToGlobal lda ZPWNDPtr
|
||||
ldx ZPWNDPtr+1
|
||||
|
||||
lda CB.Cache+S.CB.SrcW+1
|
||||
adc CB.Cache+S.CB.X1+1
|
||||
tax
|
||||
pla
|
||||
bne .2
|
||||
.1 sta ZPPtr1
|
||||
stx ZPPtr1+1
|
||||
|
||||
dex
|
||||
|
||||
.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
|
||||
ldy #S.WND.InnerX1
|
||||
ldx #S.CB.X1
|
||||
jsr CB.AddPtr1YtoCBX
|
||||
|
||||
|
@ -209,7 +279,7 @@ CB.ToGlobal >STYA ZPPtr1
|
|||
ldx #S.CB.Y1
|
||||
jsr CB.AddPtr1YtoCBX
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
ldy #S.WND.InnerX1
|
||||
ldx #S.CB.X2
|
||||
jsr CB.AddPtr1YtoCBX
|
||||
|
||||
|
@ -224,9 +294,6 @@ CB.ToGlobal >STYA ZPPtr1
|
|||
tax
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
|
||||
sta ZPPtr1
|
||||
stx ZPPtr1+1
|
||||
bra .1
|
||||
|
||||
.8 clc
|
||||
|
@ -243,6 +310,21 @@ CB.AddPtr1YtoCBX
|
|||
sta CB.Cache+1,x
|
||||
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
|
||||
SAVE usr/src/lib/libgui.s.cb
|
||||
LOAD usr/src/lib/libgui.s
|
||||
|
|
|
@ -1,15 +1,36 @@
|
|||
NEW
|
||||
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:
|
||||
* In:
|
||||
* Target Clipping Region in CLIP.Rect
|
||||
* YA = Control Block
|
||||
* Out:
|
||||
* CC : CB.Cache clipped & visible
|
||||
* CS : CB.Cache invisible
|
||||
* CC : CLIP.Cache clipped & visible
|
||||
* 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
|
||||
tax
|
||||
jmp (J.CLIP-2,x)
|
||||
|
@ -18,19 +39,19 @@ CLIP.Point
|
|||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CLIP.HLine >LDYA CB.Cache+S.CB.Y1
|
||||
CLIP.HLine >LDYA CLIP.Cache+S.CB.Y1
|
||||
>SCMPYA CLIP.Rect+S.RECT.Y2
|
||||
bpl .9
|
||||
|
||||
>LDYA CB.Cache+S.CB.Y1
|
||||
>LDYA CLIP.Cache+S.CB.Y1
|
||||
>SCMPYA CLIP.Rect+S.RECT.Y1
|
||||
bmi .9
|
||||
|
||||
>LDYA CLIP.Rect+S.RECT.X1
|
||||
>STYAIFGTR CB.Cache+S.CB.X1
|
||||
>STYAIFGTR CLIP.Cache+S.CB.X1
|
||||
|
||||
>LDYA CLIP.Rect+S.RECT.X2
|
||||
>STYAIFLWR CB.Cache+S.CB.X2
|
||||
>STYAIFLWR CLIP.Cache+S.CB.X2
|
||||
|
||||
clc
|
||||
rts
|
||||
|
@ -38,46 +59,48 @@ CLIP.HLine >LDYA CB.Cache+S.CB.Y1
|
|||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CLIP.VLine >LDYA CB.Cache+S.CB.X1
|
||||
CLIP.VLine >LDYA CLIP.Cache+S.CB.X1
|
||||
>SCMPYA CLIP.Rect+S.RECT.X2
|
||||
bpl .9
|
||||
|
||||
>LDYA CB.Cache+S.CB.X1
|
||||
>LDYA CLIP.Cache+S.CB.X1
|
||||
>SCMPYA CLIP.Rect+S.RECT.X1
|
||||
bmi .9
|
||||
|
||||
>LDYA CLIP.Rect+S.RECT.Y1
|
||||
>STYAIFGTR CB.Cache+S.CB.Y1
|
||||
bpl CLIP.Y1Y2
|
||||
|
||||
>LDYA CLIP.Rect+S.RECT.Y2
|
||||
>STYAIFLWR CB.Cache+S.CB.Y2
|
||||
* bmi .9
|
||||
|
||||
clc
|
||||
rts
|
||||
* >LDYA CLIP.Rect+S.RECT.Y1
|
||||
* >STYAIFGTR CLIP.Cache+S.CB.Y1
|
||||
|
||||
* >LDYA CLIP.Rect+S.RECT.Y2
|
||||
* >STYAIFLWR CLIP.Cache+S.CB.Y2
|
||||
|
||||
* clc
|
||||
* rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CLIP.Rectangle jsr CLIP.Rect.Overlap
|
||||
bcs .9
|
||||
bcs CLIP.Text.RTS
|
||||
|
||||
>LDYA CLIP.Rect+S.RECT.X1
|
||||
>STYAIFGTR CB.Cache+S.CB.X1
|
||||
>STYAIFGTR CLIP.Cache+S.CB.X1
|
||||
|
||||
>LDYA CLIP.Rect+S.RECT.X2
|
||||
>STYAIFLWR CB.Cache+S.CB.X2
|
||||
>STYAIFLWR CLIP.Cache+S.CB.X2
|
||||
|
||||
>LDYA CLIP.Rect+S.RECT.Y1
|
||||
>STYAIFGTR CB.Cache+S.CB.Y1
|
||||
CLIP.Y1Y2 >LDYA CLIP.Rect+S.RECT.Y1
|
||||
>STYAIFGTR CLIP.Cache+S.CB.Y1
|
||||
|
||||
>LDYA CLIP.Rect+S.RECT.Y2
|
||||
>STYAIFLWR CB.Cache+S.CB.Y2
|
||||
>STYAIFLWR CLIP.Cache+S.CB.Y2
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
* clc
|
||||
* rts
|
||||
*--------------------------------------
|
||||
CLIP.Text
|
||||
clc
|
||||
CLIP.Text clc
|
||||
rts
|
||||
|
||||
CLIP.Text.9 sec
|
||||
|
@ -85,137 +108,146 @@ CLIP.Text.RTS rts
|
|||
*--------------------------------------
|
||||
* BitBlt :
|
||||
*--------------------------------------
|
||||
CLIP.BitBlt jsr CB.SetX2Y2 set X2=X1+W-1 Y2=X1+H-1
|
||||
|
||||
CLIP.BitBlt jsr CLIP.SetX2Y2
|
||||
jsr CLIP.Rect.Overlap
|
||||
bcs CLIP.Text.RTS
|
||||
|
||||
lda CLIP.Rect+S.RECT.X1
|
||||
sec
|
||||
sbc CB.Cache+S.CB.X1
|
||||
sta DX
|
||||
ldx #S.RECT select CLIP.Rect
|
||||
|
||||
lda CLIP.Rect+S.RECT.X1+1
|
||||
sbc CB.Cache+S.CB.X1+1
|
||||
sta DX+1
|
||||
CLIP.BitBltX lda CLIP.Screen+S.RECT.X1,x
|
||||
sec
|
||||
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
|
||||
|
||||
eor #$80
|
||||
|
||||
.1 bmi .2
|
||||
|
||||
lda CB.Cache+S.CB.X1
|
||||
lda CLIP.Cache+S.CB.X1
|
||||
clc
|
||||
adc DX
|
||||
sta CB.Cache+S.CB.X1
|
||||
adc TmpW
|
||||
sta CLIP.Cache+S.CB.X1
|
||||
|
||||
lda CB.Cache+S.CB.X1+1
|
||||
adc DX+1
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
lda CLIP.Cache+S.CB.X1+1
|
||||
adc TmpW+1
|
||||
sta CLIP.Cache+S.CB.X1+1
|
||||
|
||||
lda CB.Cache+S.CB.SrcX
|
||||
lda CLIP.Cache+S.CB.SrcX
|
||||
clc
|
||||
adc DX
|
||||
sta CB.Cache+S.CB.SrcX
|
||||
adc TmpW
|
||||
sta CLIP.Cache+S.CB.SrcX
|
||||
|
||||
lda CB.Cache+S.CB.SrcX+1
|
||||
adc DX+1
|
||||
sta CB.Cache+S.CB.SrcX+1
|
||||
lda CLIP.Cache+S.CB.SrcX+1
|
||||
adc TmpW+1
|
||||
sta CLIP.Cache+S.CB.SrcX+1
|
||||
|
||||
lda CB.Cache+S.CB.SrcW
|
||||
lda CLIP.Cache+S.CB.SrcW
|
||||
sec
|
||||
sbc DX
|
||||
sta CB.Cache+S.CB.SrcW
|
||||
sbc TmpW
|
||||
sta CLIP.Cache+S.CB.SrcW
|
||||
|
||||
lda CB.Cache+S.CB.SrcW+1
|
||||
sbc DX+1
|
||||
sta CB.Cache+S.CB.SrcW+1
|
||||
lda CLIP.Cache+S.CB.SrcW+1
|
||||
sbc TmpW+1
|
||||
sta CLIP.Cache+S.CB.SrcW+1
|
||||
bcc CLIP.Text.9
|
||||
|
||||
.2 lda CB.Cache+S.CB.X2
|
||||
*--------------------------------------
|
||||
.2 lda CLIP.Cache+S.CB.X2
|
||||
sec
|
||||
sbc CLIP.Rect+S.RECT.X2
|
||||
sta DX
|
||||
sbc CLIP.Screen+S.RECT.X2,x
|
||||
sta TmpW
|
||||
|
||||
lda CB.Cache+S.CB.X2+1
|
||||
sbc CLIP.Rect+S.RECT.X2+1
|
||||
sta DX+1
|
||||
lda CLIP.Cache+S.CB.X2+1
|
||||
sbc CLIP.Screen+S.RECT.X2+1,x
|
||||
sta TmpW+1
|
||||
bvc .3
|
||||
|
||||
eor #$80
|
||||
|
||||
.3 bmi .4
|
||||
|
||||
lda CB.Cache+S.CB.SrcW
|
||||
lda CLIP.Cache+S.CB.SrcW
|
||||
sec
|
||||
sbc DX
|
||||
sta CB.Cache+S.CB.SrcW
|
||||
sbc TmpW
|
||||
sta CLIP.Cache+S.CB.SrcW
|
||||
|
||||
lda CB.Cache+S.CB.SrcW+1
|
||||
sbc DX+1
|
||||
sta CB.Cache+S.CB.SrcW+1
|
||||
lda CLIP.Cache+S.CB.SrcW+1
|
||||
sbc TmpW+1
|
||||
sta CLIP.Cache+S.CB.SrcW+1
|
||||
bcc .9
|
||||
|
||||
.4 lda CLIP.Rect+S.RECT.Y1
|
||||
*--------------------------------------
|
||||
.4 lda CLIP.Screen+S.RECT.Y1,x
|
||||
sec
|
||||
sbc CB.Cache+S.CB.Y1
|
||||
sta DX
|
||||
sbc CLIP.Cache+S.CB.Y1
|
||||
sta TmpW
|
||||
|
||||
lda CLIP.Rect+S.RECT.Y1+1
|
||||
sbc CB.Cache+S.CB.Y1+1
|
||||
sta DX+1
|
||||
lda CLIP.Screen+S.RECT.Y1+1,x
|
||||
sbc CLIP.Cache+S.CB.Y1+1
|
||||
sta TmpW+1
|
||||
bvc .5
|
||||
|
||||
eor #$80
|
||||
|
||||
.5 bmi .6
|
||||
|
||||
lda CB.Cache+S.CB.Y1
|
||||
lda CLIP.Cache+S.CB.Y1
|
||||
clc
|
||||
adc DX
|
||||
sta CB.Cache+S.CB.Y1
|
||||
adc TmpW
|
||||
sta CLIP.Cache+S.CB.Y1
|
||||
|
||||
lda CB.Cache+S.CB.Y1+1
|
||||
adc DX+1
|
||||
sta CB.Cache+S.CB.Y1+1
|
||||
lda CLIP.Cache+S.CB.Y1+1
|
||||
adc TmpW+1
|
||||
sta CLIP.Cache+S.CB.Y1+1
|
||||
|
||||
lda CB.Cache+S.CB.SrcY
|
||||
lda CLIP.Cache+S.CB.SrcY
|
||||
clc
|
||||
adc DX
|
||||
sta CB.Cache+S.CB.SrcY
|
||||
adc TmpW
|
||||
sta CLIP.Cache+S.CB.SrcY
|
||||
|
||||
lda CB.Cache+S.CB.SrcY+1
|
||||
adc DX+1
|
||||
sta CB.Cache+S.CB.SrcY+1
|
||||
lda CLIP.Cache+S.CB.SrcY+1
|
||||
adc TmpW+1
|
||||
sta CLIP.Cache+S.CB.SrcY+1
|
||||
|
||||
lda CB.Cache+S.CB.SrcH
|
||||
lda CLIP.Cache+S.CB.SrcH
|
||||
sec
|
||||
sbc DX
|
||||
sta CB.Cache+S.CB.SrcH
|
||||
sbc TmpW
|
||||
sta CLIP.Cache+S.CB.SrcH
|
||||
|
||||
lda CB.Cache+S.CB.SrcH+1
|
||||
sbc DX+1
|
||||
sta CB.Cache+S.CB.SrcH+1
|
||||
lda CLIP.Cache+S.CB.SrcH+1
|
||||
sbc TmpW+1
|
||||
sta CLIP.Cache+S.CB.SrcH+1
|
||||
bcc .9
|
||||
|
||||
.6 lda CB.Cache+S.CB.Y2
|
||||
*--------------------------------------
|
||||
.6 lda CLIP.Cache+S.CB.Y2
|
||||
sec
|
||||
sbc CLIP.Rect+S.RECT.Y2
|
||||
sta DX
|
||||
sbc CLIP.Screen+S.RECT.Y2,x
|
||||
sta TmpW
|
||||
|
||||
lda CB.Cache+S.CB.Y2+1
|
||||
sbc CLIP.Rect+S.RECT.Y2+1
|
||||
sta DX+1
|
||||
lda CLIP.Cache+S.CB.Y2+1
|
||||
sbc CLIP.Screen+S.RECT.Y2+1,x
|
||||
sta TmpW+1
|
||||
bvc .7
|
||||
|
||||
eor #$80
|
||||
|
||||
.7 bmi .8
|
||||
|
||||
lda CB.Cache+S.CB.SrcH
|
||||
lda CLIP.Cache+S.CB.SrcH
|
||||
sec
|
||||
sbc DX
|
||||
sta CB.Cache+S.CB.SrcH
|
||||
sbc TmpW
|
||||
sta CLIP.Cache+S.CB.SrcH
|
||||
|
||||
lda CB.Cache+S.CB.SrcH+1
|
||||
sbc DX+1
|
||||
sta CB.Cache+S.CB.SrcH+1
|
||||
lda CLIP.Cache+S.CB.SrcH+1
|
||||
sbc TmpW+1
|
||||
sta CLIP.Cache+S.CB.SrcH+1
|
||||
bcc .9
|
||||
|
||||
.8 clc
|
||||
.99 rts
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
|
@ -309,12 +341,12 @@ CLIP.Line jsr CLIP.Line.EncodeP1
|
|||
CLIP.Line.EncodeP1
|
||||
ldy #0
|
||||
|
||||
lda CB.Cache+S.CB.X1
|
||||
ldx CB.Cache+S.CB.X1+1
|
||||
lda CLIP.Cache+S.CB.X1
|
||||
ldx CLIP.Cache+S.CB.X1+1
|
||||
jsr CLIP.Line.EncodeX.AX
|
||||
|
||||
lda CB.Cache+S.CB.Y1
|
||||
ldx CB.Cache+S.CB.Y1+1
|
||||
lda CLIP.Cache+S.CB.Y1
|
||||
ldx CLIP.Cache+S.CB.Y1+1
|
||||
jsr CLIP.Line.EncodeY.AX
|
||||
|
||||
sty CLIP.Line.P1
|
||||
|
@ -323,12 +355,12 @@ CLIP.Line.EncodeP1
|
|||
CLIP.Line.EncodeP2
|
||||
ldy #0
|
||||
|
||||
lda CB.Cache+S.CB.X2
|
||||
ldx CB.Cache+S.CB.X2+1
|
||||
lda CLIP.Cache+S.CB.X2
|
||||
ldx CLIP.Cache+S.CB.X2+1
|
||||
jsr CLIP.Line.EncodeX.AX
|
||||
|
||||
lda CB.Cache+S.CB.Y2
|
||||
ldx CB.Cache+S.CB.Y2+1
|
||||
lda CLIP.Cache+S.CB.Y2
|
||||
ldx CLIP.Cache+S.CB.Y2+1
|
||||
jsr CLIP.Line.EncodeY.AX
|
||||
|
||||
sty CLIP.Line.P2
|
||||
|
@ -379,20 +411,52 @@ CLIP.Line.EncodeY.AX
|
|||
|
||||
.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
|
||||
>LDYA CB.Cache+S.CB.X1
|
||||
>LDYA CLIP.Cache+S.CB.X1
|
||||
>SCMPYA CLIP.Rect+S.RECT.X2
|
||||
bpl .9
|
||||
|
||||
>LDYA CB.Cache+S.CB.X2
|
||||
>LDYA CLIP.Cache+S.CB.X2
|
||||
>SCMPYA CLIP.Rect+S.RECT.X1
|
||||
bmi .9
|
||||
|
||||
>LDYA CB.Cache+S.CB.Y1
|
||||
>LDYA CLIP.Cache+S.CB.Y1
|
||||
>SCMPYA CLIP.Rect+S.RECT.Y2
|
||||
bpl .9
|
||||
|
||||
>LDYA CB.Cache+S.CB.Y2
|
||||
>LDYA CLIP.Cache+S.CB.Y2
|
||||
>SCMPYA CLIP.Rect+S.RECT.Y1
|
||||
bmi .9
|
||||
|
||||
|
@ -402,19 +466,6 @@ CLIP.Rect.Overlap
|
|||
.9 sec
|
||||
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
|
||||
SAVE usr/src/lib/libgui.s.clip
|
||||
LOAD usr/src/lib/libgui.s
|
||||
|
|
|
@ -3,12 +3,15 @@ NEW
|
|||
*--------------------------------------
|
||||
* 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.OP
|
||||
|
||||
jsr DRAW.PullInnerWND
|
||||
jsr OBJ.PullHWND get dest window at ZPWNDPtr
|
||||
jsr WND.GetInnerInClip
|
||||
|
||||
jsr CB.ToGlobal
|
||||
|
||||
lda CB.Cache+S.CB.X2
|
||||
sec
|
||||
|
@ -23,7 +26,15 @@ DRAW.Line jsr DRAW.PullY2X2Y1X1
|
|||
ora DX
|
||||
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
|
||||
*--------------------------------------
|
||||
.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
|
||||
|
||||
jsr CLIP.CB.Cache
|
||||
bcs .8
|
||||
|
||||
jmp CB.GFXWrite
|
||||
jmp CB.Write
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
@ -71,7 +79,8 @@ DRAW.Line jsr DRAW.PullY2X2Y1X1
|
|||
|
||||
lda #S.CB.CMD.SETPIXEL
|
||||
sta CB.Cache+S.CB.CMD
|
||||
jsr CB.GFXWrite
|
||||
ldx #0 Select CB.Cache
|
||||
jsr CB.GFXWriteX
|
||||
lda DX
|
||||
sec
|
||||
sbc DY
|
||||
|
@ -107,7 +116,8 @@ DRAW.Line.IncXY lda DX DX=DY
|
|||
clc
|
||||
adc IY
|
||||
sta CB.Cache+S.CB.Y1
|
||||
jsr CB.GFXWrite
|
||||
ldx #0 Select CB.Cache
|
||||
jsr CB.GFXWriteX
|
||||
bra .1
|
||||
|
||||
.8 jmp PTR.Enable
|
||||
|
@ -183,7 +193,8 @@ DRAW.Line.IncY lda DY
|
|||
clc
|
||||
adc IY
|
||||
sta CB.Cache+S.CB.Y1
|
||||
jsr CB.GFXWrite
|
||||
ldx #0 Select CB.Cache
|
||||
jsr CB.GFXWriteX
|
||||
bra .1
|
||||
|
||||
.8 jmp PTR.Enable
|
||||
|
@ -261,112 +272,138 @@ DRAW.Line.IncX lda DX
|
|||
|
||||
inc CB.Cache+S.CB.X1+1
|
||||
|
||||
.6 jsr CB.GFXWrite
|
||||
.6 ldx #0 Select CB.Cache
|
||||
jsr CB.GFXWriteX
|
||||
bra .1
|
||||
|
||||
.8 jmp PTR.Enable
|
||||
*--------------------------------------
|
||||
* 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.OP
|
||||
|
||||
jsr DRAW.PullInnerWND
|
||||
jsr OBJ.PullHWND get dest window at ZPWNDPtr
|
||||
jsr WND.GetInnerInClip
|
||||
|
||||
jsr CB.ToGlobal
|
||||
|
||||
lda #S.CB.CMD.FILLRECT
|
||||
sta CB.Cache+S.CB.CMD
|
||||
|
||||
jsr CLIP.CB.Cache
|
||||
bcs .8
|
||||
|
||||
jmp CB.GFXWritePtr
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
jmp CB.Write
|
||||
*--------------------------------------
|
||||
* 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
|
||||
jsr CB.InitCacheA
|
||||
|
||||
jsr DRAW.PullY1X1
|
||||
DRAW.BitMap jsr CB.PullY1X1
|
||||
|
||||
>PULLW CB.Cache+S.CB.SrcPtr
|
||||
|
||||
>PULLB CB.Cache+S.CB.M
|
||||
>PULLB CB.Cache+S.CB.OP
|
||||
|
||||
jsr DRAW.PullInnerWND
|
||||
jsr OBJ.PullHWND get dest window at ZPWNDPtr
|
||||
jsr WND.GetInnerInClip
|
||||
|
||||
jsr CLIP.CB.Cache
|
||||
bcs .8
|
||||
jsr CB.ToGlobal
|
||||
|
||||
jmp CB.GFXWritePtr
|
||||
lda #S.CB.CMD.BITBLT
|
||||
sta CB.Cache+S.CB.CMD
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
jsr CB.ResetSrcXY
|
||||
|
||||
jmp CB.Write
|
||||
*--------------------------------------
|
||||
* drawtext (short int hWND, short int OP, short int hFONT, int X1, int Y1, char *str)
|
||||
*--------------------------------------
|
||||
DRAW.Text lda #S.CB.CMD.DRAWTEXT2
|
||||
jsr CB.InitCacheA
|
||||
DRAW.Text >PULLW CB.Cache+S.CB.TxtPtr
|
||||
|
||||
>PULLW CB.Cache+S.CB.TxtPtr
|
||||
|
||||
jsr DRAW.PullY1X1
|
||||
jsr CB.PullY1X1
|
||||
|
||||
>PULLB CB.Cache+S.CB.hFont
|
||||
>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 WND.GetInnerInClip
|
||||
|
||||
jsr DRAW.GetInnerWND get inners in CLIP.Rect
|
||||
jsr CB.ToGlobal
|
||||
|
||||
>LDYA ZPWNDPtr
|
||||
jmp CB.ToGlobal set CB.Cache to global coord.
|
||||
lda #S.CB.CMD.DRAWTEXT2
|
||||
sta CB.Cache+S.CB.CMD
|
||||
|
||||
jmp CB.Write
|
||||
*--------------------------------------
|
||||
* private
|
||||
*--------------------------------------
|
||||
DRAW.xBM >LDYA L.BMs,x
|
||||
DRAW.yaBM >STYA ZPBMPtr
|
||||
DRAW.BordersAtX stx IY
|
||||
|
||||
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
|
||||
|
||||
lda #S.CB.OP.MASK+S.CB.OP.ORA+S.CB.OP.COLOR
|
||||
sta CB.Cache+S.CB.OP
|
||||
jsr CB.SwapY1Y2
|
||||
|
||||
lda #S.CB.M.C16
|
||||
sta CB.Cache+S.CB.M
|
||||
jsr CB.Cache2CBBuf left Y1,Y2 at X1
|
||||
|
||||
ldx #3
|
||||
jsr CB.SwapX1X2
|
||||
|
||||
ldy #S.BM.W+3
|
||||
|
||||
.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 right X2,Y1,X2,Y2
|
||||
*--------------------------------------
|
||||
DRAW.xBM >LDYA L.BMs,x
|
||||
DRAW.yaBM jsr BM.YA2CB.cache
|
||||
|
||||
jmp CB.Cache2CBBuf
|
||||
*--------------------------------------
|
||||
|
@ -376,68 +413,16 @@ DRAW.YAText >STYA CB.Cache+S.CB.TxtPtr
|
|||
lda #S.CB.CMD.DRAWTEXT2
|
||||
sta CB.Cache+S.CB.CMD
|
||||
|
||||
lda #0
|
||||
ror CS = inverse
|
||||
eor #S.CB.OP.INVERSE
|
||||
ora #S.CB.OP.SET
|
||||
|
||||
* lda #S.CB.OP.XOR
|
||||
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
|
||||
|
||||
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
|
||||
SAVE usr/src/lib/libgui.s.draw
|
||||
LOAD usr/src/lib/libgui.s
|
||||
|
|
|
@ -15,10 +15,8 @@ FON.Init >LDYA L.SYSX7
|
|||
|
||||
* ldy #S.FON.PixH
|
||||
* >SYSCALL2 GetStkObjProp
|
||||
|
||||
lda #7
|
||||
dec
|
||||
sta SYSFON.Hm1
|
||||
inc
|
||||
sta SYSFON.H
|
||||
inc
|
||||
sta SYSFON.Hp1
|
||||
|
@ -34,12 +32,152 @@ FON.Init >LDYA L.SYSX7
|
|||
>SYSCALL LoadStkObj
|
||||
rts
|
||||
*--------------------------------------
|
||||
FON.GetTextSize >STYA CB.CACHE+S.CB.TxtPtr
|
||||
stx CB.CACHE+S.CB.hFont
|
||||
FON.GetTextSize >STYA CB.Cache+S.CB.TxtPtr
|
||||
stx CB.Cache+S.CB.hFont
|
||||
|
||||
lda #S.CB.CMD.GETTEXTSIZE+S.CB.CMD.OSD
|
||||
sta CB.CACHE+S.CB.CMD
|
||||
jmp CB.GFXWrite
|
||||
sta CB.Cache+S.CB.CMD
|
||||
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
|
||||
SAVE usr/src/lib/libgui.s.fon
|
||||
|
|
80
LIB/LIBGUI.S.LABEL.txt
Normal file
80
LIB/LIBGUI.S.LABEL.txt
Normal file
|
@ -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
|
||||
*--------------------------------------
|
||||
MBAR.New >STYA ZPPtr1 MBAR definition
|
||||
>STYA ZPObjPtr for pass #2
|
||||
>STYA ZPPtr2 for pass #2
|
||||
|
||||
jsr MBAR.GetSize
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPMENUPtr
|
||||
>STYA ZPObjPtr
|
||||
|
||||
phx hMBAR
|
||||
|
||||
lda #S.OBJ.T.MBAR
|
||||
sta (ZPMENUPtr) S.OBJ.T
|
||||
sta (ZPObjPtr) S.OBJ.T
|
||||
|
||||
lda #0
|
||||
|
||||
ldy #S.MBAR.Items-1
|
||||
|
||||
.1 sta (ZPMENUPtr),y
|
||||
.1 sta (ZPObjPtr),y
|
||||
dey
|
||||
bne .1
|
||||
|
||||
>LDYA ZPObjPtr
|
||||
>STYA ZPPtr1 MENU definition
|
||||
|
||||
jsr MBAR.GetData
|
||||
|
||||
pla hMBAR
|
||||
|
@ -69,18 +66,13 @@ MBAR.GetSize lda #S.MBAR.Items+1 Ending\0
|
|||
.8 >LDYA Counter
|
||||
rts
|
||||
*--------------------------------------
|
||||
* ZPPtr1 = defintion
|
||||
* ZPMENUPtr = DstBuf
|
||||
* ZPPtr2 = defintion
|
||||
* ZPObjPtr = DstMBar
|
||||
* ZPPtr1 = DstMBItem
|
||||
*--------------------------------------
|
||||
MBAR.GetData lda ZPMENUPtr
|
||||
clc
|
||||
adc #S.MBAR.Items
|
||||
sta ZPMENUPtr
|
||||
bcc .1
|
||||
MBAR.GetData jsr MBAR.GetMBItems
|
||||
|
||||
inc ZPMENUPtr+1
|
||||
|
||||
.1 lda (ZPPtr1)
|
||||
.1 lda (ZPPtr2)
|
||||
beq .8
|
||||
|
||||
lda #S.MBITEM.T.SUBMENU
|
||||
|
@ -89,11 +81,11 @@ MBAR.GetData lda ZPMENUPtr
|
|||
lda #0 S.MBITEM.S
|
||||
jsr MBAR.AddByte
|
||||
|
||||
>LDYA ZPPtr1 pTEXT
|
||||
>LDYA ZPPtr2 pTEXT
|
||||
ldx hSYSFON
|
||||
jsr FON.GetTextSize
|
||||
|
||||
lda PREFS.MBarXMargin
|
||||
lda PREFS.XMargin
|
||||
asl x2
|
||||
clc
|
||||
adc CB.CACHE+S.CB.SrcW
|
||||
|
@ -103,23 +95,23 @@ MBAR.GetData lda ZPMENUPtr
|
|||
adc CB.CACHE+S.CB.SrcW+1
|
||||
jsr MBAR.AddWord S.MBITEM.W
|
||||
|
||||
>LDYA ZPPtr1 pTEXT
|
||||
>LDYA ZPPtr2 pTEXT
|
||||
jsr MBAR.AddWord
|
||||
|
||||
jsr SkipStrZPtr1 skip "TEXT\0"
|
||||
jsr SkipStrZPtr2 skip "TEXT\0"
|
||||
|
||||
lda (ZPPtr1)
|
||||
lda (ZPPtr2)
|
||||
jsr MBAR.AddByte pMENU
|
||||
|
||||
ldy #1
|
||||
lda (ZPPtr1),y
|
||||
lda (ZPPtr2),y
|
||||
jsr MBAR.AddByte pMENU+1
|
||||
|
||||
lda #2
|
||||
jsr SkipAPtr1 stkip pMENU
|
||||
jsr SkipAPtr2 stkip pMENU
|
||||
bra .1
|
||||
|
||||
.8 sta (ZPMENUPtr)
|
||||
.8 sta (ZPPtr1)
|
||||
rts
|
||||
*--------------------------------------
|
||||
MBAR.AddWord pha
|
||||
|
@ -128,11 +120,11 @@ MBAR.AddWord pha
|
|||
jsr MBAR.AddByte
|
||||
pla
|
||||
|
||||
MBAR.AddByte sta (ZPMENUPtr)
|
||||
inc ZPMENUPtr
|
||||
MBAR.AddByte sta (ZPPtr1)
|
||||
inc ZPPtr1
|
||||
bne .8
|
||||
|
||||
inc ZPMENUPtr+1
|
||||
inc ZPPtr1+1
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
|
@ -142,7 +134,7 @@ MBAR.AddByte sta (ZPMENUPtr)
|
|||
MBAR.Enter ldy #S.WND.pMBAR
|
||||
lda (ZPWNDPtr),y
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPMENUPtr pMBAR
|
||||
>STYA ZPObjPtr pMBAR
|
||||
|
||||
stz ZPPtr2
|
||||
stz ZPPtr2+1
|
||||
|
@ -156,7 +148,7 @@ MBAR.Enter ldy #S.WND.pMBAR
|
|||
.1 lda (ZPPtr1)
|
||||
beq .3
|
||||
|
||||
jsr MBAR.SetX2
|
||||
jsr MBAR.SetX2 set X2 = X1 + W - 1
|
||||
|
||||
lda MSG+S.MSG.X1
|
||||
cmp CB.Cache+S.CB.X1
|
||||
|
@ -187,7 +179,11 @@ MBAR.Enter ldy #S.WND.pMBAR
|
|||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* ZPMENUPtr = MBAR
|
||||
MBAR.Leave clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* ZPWNDPtr parent WND
|
||||
* ZPObjPtr = MBAR
|
||||
* ZPPtr2 = Item to activate
|
||||
*--------------------------------------
|
||||
MBAR.Reset stz ZPPtr2
|
||||
|
@ -207,7 +203,7 @@ MBAR.Set jsr MENU.DestroyAll
|
|||
.4 lda (ZPPtr1)
|
||||
beq .7
|
||||
|
||||
jsr MBAR.SetX2 set X2 = X1 + W
|
||||
jsr MBAR.SetX2 set X2 = X1 + W - 1
|
||||
|
||||
ldy #S.MBITEM.S
|
||||
lda (ZPPtr1),y
|
||||
|
@ -235,8 +231,7 @@ MBAR.Set jsr MENU.DestroyAll
|
|||
.6 jsr MBAR.NextMBItem set X1 = X2
|
||||
bra .4
|
||||
|
||||
.7 >LDYA L.WND.Screen
|
||||
jsr CB.FlushBufToYA
|
||||
.7 jsr CB.FlushBuf
|
||||
bcs .9
|
||||
|
||||
>LDYA Counter
|
||||
|
@ -266,18 +261,21 @@ MBAR.Set jsr MENU.DestroyAll
|
|||
* ZPWNDPtr = parent WND
|
||||
*--------------------------------------
|
||||
MBAR.Draw >SYSCALL2 GetMemPtr
|
||||
>STYA ZPMENUPtr pMBAR
|
||||
>STYA ZPObjPtr pMBAR
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
ldx #S.CB.X1
|
||||
jsr CB.GetWndYCacheX
|
||||
|
||||
jsr CB.GetBuf
|
||||
bcs .9
|
||||
|
||||
jsr MBAR.GetMBItems
|
||||
|
||||
.1 lda (ZPPtr1)
|
||||
beq .8
|
||||
|
||||
jsr MBAR.SetX2 set X2 = X1 + W
|
||||
jsr MBAR.SetX2 set X2 = X1 + W - 1
|
||||
|
||||
jsr MBAR.DrawMBItem
|
||||
bcs .9
|
||||
|
@ -285,10 +283,7 @@ MBAR.Draw >SYSCALL2 GetMemPtr
|
|||
jsr MBAR.NextMBItem
|
||||
bra .1
|
||||
|
||||
.8 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
|
||||
.8 jsr CB.X2ToX1
|
||||
|
||||
ldy #S.OBJ.X2
|
||||
ldx #S.CB.X2
|
||||
|
@ -299,7 +294,9 @@ MBAR.Draw >SYSCALL2 GetMemPtr
|
|||
lda PREFS.MBarColor
|
||||
jsr CB.FillRectMonoA
|
||||
|
||||
jmp CB.Cache2CBBuf
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
jmp CB.FlushBuf
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
@ -318,22 +315,10 @@ MBAR.DrawMBItem ldy #S.MBITEM.S
|
|||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
lda PREFS.MBarXMargin
|
||||
clc
|
||||
adc CB.Cache+S.CB.X1
|
||||
sta CB.Cache+S.CB.X1
|
||||
bcc .10
|
||||
lda PREFS.XMargin
|
||||
jsr CB.AddA2X1
|
||||
|
||||
inc CB.Cache+S.CB.X1+1
|
||||
|
||||
.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
|
||||
jsr CB.IncY1
|
||||
|
||||
ldy #S.MBITEM.pTEXT
|
||||
lda (ZPPtr1),y
|
||||
|
@ -342,56 +327,52 @@ MBAR.DrawMBItem ldy #S.MBITEM.S
|
|||
lda (ZPPtr1),y
|
||||
ply
|
||||
ldx hSYSFON
|
||||
jsr DRAW.YAText
|
||||
|
||||
jmp CB.Cache2CBBuf
|
||||
jmp DRAW.YAText
|
||||
*--------------------------------------
|
||||
MBAR.GetMBItems lda ZPMENUPtr
|
||||
MBAR.GetMBItems lda ZPObjPtr
|
||||
clc
|
||||
adc #S.MBAR.Items
|
||||
sta ZPPtr1
|
||||
|
||||
lda ZPMENUPtr+1
|
||||
lda ZPObjPtr+1
|
||||
adc /S.MBAR.Items
|
||||
sta ZPPtr1+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
MBAR.NextMBItem 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
|
||||
MBAR.NextMBItem jsr CB.X2ToX1
|
||||
|
||||
lda #S.MBITEM
|
||||
jmp SkipAPtr1
|
||||
*--------------------------------------
|
||||
MBAR.SetX2 lda CB.Cache+S.CB.X1
|
||||
MBAR.SetX2 ldy #S.MBITEM.W
|
||||
lda (ZPPtr1),y
|
||||
clc
|
||||
ldy #S.MBITEM.W
|
||||
adc (ZPPtr1),y
|
||||
sta CB.Cache+S.CB.X2
|
||||
adc CB.Cache+S.CB.X1
|
||||
pha
|
||||
|
||||
lda CB.Cache+S.CB.X1+1
|
||||
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
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
MBAR.SetY1Y2 ldy #S.WND.MBarY1
|
||||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache+S.CB.Y1
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache+S.CB.Y1+1
|
||||
ldx #S.CB.Y1
|
||||
jsr CB.GetWndYCacheX
|
||||
|
||||
ldy #S.WND.MBarY2
|
||||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache+S.CB.Y2
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache+S.CB.Y2+1
|
||||
|
||||
rts
|
||||
ldx #S.CB.Y2
|
||||
jmp CB.GetWndYCacheX
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libgui.s.mbar
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
* idButton MsgBox(pTITLE, pTEXT, pBM, idButtons)
|
||||
|
||||
* guiNewWnd(sFlags, iX1, iY1, iW, iH)
|
||||
* MsgBox(pTITLE, pBM, pTEXT, idButtons)
|
||||
*--------------------------------------
|
||||
MBOX.MsgBox >LDYAI 360
|
||||
>STYA IE
|
||||
|
||||
>LDYAI 80
|
||||
>LDYAI 70
|
||||
>STYA INE
|
||||
|
||||
lda WND.Desktop+S.OBJ.W
|
||||
sec
|
||||
sbc IE
|
||||
and #$F8
|
||||
sta DX
|
||||
|
||||
lda WND.Desktop+S.OBJ.W+1
|
||||
sbc IE+1
|
||||
lsr
|
||||
|
@ -39,7 +39,8 @@ MBOX.MsgBox >LDYAI 360
|
|||
jsr WND.New
|
||||
bcs .9
|
||||
|
||||
pha
|
||||
sta WND.hWND
|
||||
jsr OBJ.GetHWNDA for childs later....
|
||||
|
||||
ldy #S.WND.BGCOLOR
|
||||
lda #C.WHITE
|
||||
|
@ -53,50 +54,92 @@ MBOX.MsgBox >LDYAI 360
|
|||
ldy #S.WND.pTITLE
|
||||
jsr OBJ.SetAXAtY
|
||||
|
||||
pla
|
||||
|
||||
jsr WND.Show
|
||||
bcs .9
|
||||
|
||||
ldy #2 pBM
|
||||
ldy #4 pBM
|
||||
lda (pStack),y
|
||||
tax
|
||||
sta ZPBMPtr+1
|
||||
dey
|
||||
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
|
||||
rts
|
||||
*--------------------------------------
|
||||
MBOX.DrawBM cpx #0
|
||||
bne .1
|
||||
MBOX.AddButtons lda #360-5-60
|
||||
sta D
|
||||
lda /360-5-60
|
||||
sta D+1
|
||||
|
||||
tax
|
||||
>LDYA L.BMs,x
|
||||
stz IY
|
||||
|
||||
.1 >STYA ZPBMPtr
|
||||
.1 lda (pStack)
|
||||
beq .8
|
||||
|
||||
jsr CB.GetBuf
|
||||
lsr
|
||||
sta (pStack)
|
||||
bcc .7
|
||||
|
||||
jsr MBOX.AddButton
|
||||
bcs .9
|
||||
|
||||
lda #28
|
||||
sta CB.Cache+S.CB.X1
|
||||
stz CB.Cache+S.CB.X1+1
|
||||
sta CB.Cache+S.CB.Y1
|
||||
stz CB.Cache+S.CB.Y1+1
|
||||
lda D
|
||||
sec
|
||||
sbc #55
|
||||
sta D
|
||||
bcs .7
|
||||
|
||||
jsr DRAW.BM
|
||||
* >DEBUG
|
||||
* >LDYA ZPWNDPtr
|
||||
>LDYA L.WND.Desktop
|
||||
jmp CB.FlushBufToYA
|
||||
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
|
||||
SAVE usr/src/lib/libgui.s.mbox
|
||||
|
|
|
@ -8,7 +8,7 @@ MENU.New >PULLW DY
|
|||
>PULLYA
|
||||
|
||||
MENU.New.I >STYA ZPPtr1 MENU definition
|
||||
>STYA ZPObjPtr for pass #2
|
||||
>STYA ZPPtr2 for pass #2
|
||||
|
||||
ldx MENU.Stack.Cnt
|
||||
cpx #MENU.MAX
|
||||
|
@ -18,42 +18,31 @@ MENU.New.I >STYA ZPPtr1 MENU definition
|
|||
>SYSCALL2 GetMem
|
||||
bcs .99
|
||||
|
||||
>STYA ZPMENUPtr
|
||||
>STYA ZPObjPtr
|
||||
txa hMenu
|
||||
|
||||
ldx MENU.Stack.Cnt
|
||||
sta MENU.Stack,x
|
||||
|
||||
lda #S.OBJ.T.MENU
|
||||
sta (ZPMENUPtr) S.OBJ.T
|
||||
sta (ZPObjPtr) S.OBJ.T
|
||||
|
||||
lda #0
|
||||
|
||||
ldy #S.MENU.Items-1
|
||||
|
||||
.1 sta (ZPMENUPtr),y
|
||||
.1 sta (ZPObjPtr),y
|
||||
dey
|
||||
bne .1
|
||||
|
||||
ldx #3
|
||||
ldy #S.OBJ.X1+3
|
||||
lda #S.OBJ.F.BORDER
|
||||
ldy #S.OBJ.F
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
.2 lda DX,x
|
||||
sta (ZPMENUPtr),y
|
||||
dey
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
>LDYA ZPObjPtr
|
||||
>STYA ZPPtr1 MENU definition
|
||||
jsr OBJ.SetDXDYX1Y1
|
||||
|
||||
jsr MENU.GetData
|
||||
|
||||
ldx MENU.Stack.Cnt
|
||||
lda MENU.Stack,x
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPMENUPtr
|
||||
|
||||
jsr MENU.SetMenuSizePos
|
||||
|
||||
ldx MENU.Stack.Cnt
|
||||
|
@ -111,99 +100,88 @@ MENU.GetSize lda #S.MENU.Items+1 Ending\0
|
|||
.8 >LDYA Counter
|
||||
rts
|
||||
*--------------------------------------
|
||||
* ZPPtr1 = defintion
|
||||
* ZPMENUPtr = DstBuf
|
||||
* ZPPtr2 = defintion
|
||||
* ZPObjPtr = DstMenu
|
||||
* ZPPtr1 = DstMItem
|
||||
*--------------------------------------
|
||||
MENU.GetData lda ZPMENUPtr
|
||||
clc
|
||||
adc #S.MENU.Items
|
||||
sta ZPMENUPtr
|
||||
bcc .1
|
||||
MENU.GetData jsr MENU.GetMItems
|
||||
|
||||
inc ZPMENUPtr+1
|
||||
|
||||
.1 lda (ZPPtr1)
|
||||
sta (ZPMENUPtr)
|
||||
.1 lda (ZPPtr2)
|
||||
sta (ZPPtr1)
|
||||
beq .8
|
||||
|
||||
cmp #S.MITEM.T.SEP
|
||||
bne .2
|
||||
|
||||
inc ZPPtr1 skip 1 byte
|
||||
inc ZPPtr2 skip 1 byte
|
||||
bne .5
|
||||
|
||||
inc ZPPtr1+1
|
||||
inc ZPPtr2+1
|
||||
bra .5
|
||||
*--------------------------------------
|
||||
.2 cmp #S.MITEM.T.ITEM
|
||||
bne .3
|
||||
|
||||
ldy #1 T+ID+KEMOD+KEY+pICON+"text"
|
||||
lda (ZPPtr1),y
|
||||
lda (ZPPtr2),y
|
||||
ldy #S.MITEM.ID
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPPtr1),y
|
||||
|
||||
ldy #2
|
||||
lda (ZPPtr1),y
|
||||
lda (ZPPtr2),y
|
||||
tax
|
||||
iny
|
||||
lda (ZPPtr1),y
|
||||
lda (ZPPtr2),y
|
||||
|
||||
ldy #S.MITEM.KEYMOD+1
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPPtr1),y
|
||||
dey KEY
|
||||
txa
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPPtr1),y
|
||||
|
||||
lda #4
|
||||
bra .4 skip 4 bytes
|
||||
*--------------------------------------
|
||||
.3 ldy #1 skip T+pMENU+pICON+"text"
|
||||
lda (ZPPtr1),y
|
||||
lda (ZPPtr2),y
|
||||
tax
|
||||
iny
|
||||
lda (ZPPtr1),y
|
||||
lda (ZPPtr2),y
|
||||
|
||||
ldy #S.MITEM.pMENU+1
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPPtr1),y
|
||||
dey
|
||||
txa
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPPtr1),y
|
||||
lda #3 skip 3 bytes
|
||||
|
||||
.4 jsr SkipAPtr1
|
||||
.4 jsr SkipAPtr2
|
||||
|
||||
ldy #1
|
||||
lda (ZPPtr1),y
|
||||
lda (ZPPtr2),y
|
||||
ldy #S.MITEM.pICON+1
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPPtr1),y
|
||||
dey
|
||||
lda (ZPPtr1)
|
||||
sta (ZPMENUPtr),y
|
||||
lda (ZPPtr2)
|
||||
sta (ZPPtr1),y
|
||||
|
||||
lda #2 skip pICON
|
||||
jsr SkipAPtr1
|
||||
jsr SkipAPtr2
|
||||
|
||||
ldy #S.MITEM.pTEXT
|
||||
lda ZPPtr1
|
||||
sta (ZPMENUPtr),y
|
||||
lda ZPPtr2
|
||||
sta (ZPPtr1),y
|
||||
iny
|
||||
lda ZPPtr1+1
|
||||
sta (ZPMENUPtr),y
|
||||
lda ZPPtr2+1
|
||||
sta (ZPPtr1),y
|
||||
|
||||
jsr SkipStrZPtr1 skip "TEXT\0"
|
||||
jsr SkipStrZPtr2 skip "TEXT\0"
|
||||
|
||||
ldy #S.MITEM.S
|
||||
lda #0
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPPtr1),y
|
||||
|
||||
.5 lda ZPMENUPtr
|
||||
clc
|
||||
adc #S.MITEM
|
||||
sta ZPMENUPtr
|
||||
bcc .1
|
||||
|
||||
inc ZPMENUPtr+1
|
||||
.5 jsr MENU.NextMItem
|
||||
bra .1
|
||||
|
||||
.8 clc
|
||||
|
@ -234,15 +212,15 @@ MENU.SetMenuSizePos
|
|||
|
||||
.2 jsr MENU.NextMItemDY
|
||||
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
|
||||
adc IY Icon W
|
||||
sta DX
|
||||
stz DX+1
|
||||
|
||||
lda DX
|
||||
sec 1px sep
|
||||
clc
|
||||
adc IE Max Text W
|
||||
sta DX
|
||||
|
||||
|
@ -251,55 +229,56 @@ MENU.SetMenuSizePos
|
|||
sta DX+1
|
||||
|
||||
lda DX
|
||||
sec 1px sep
|
||||
clc
|
||||
adc INE Max Mod-Key W
|
||||
sta DX
|
||||
bcc .4
|
||||
|
||||
inc DX+1
|
||||
lda DX+1
|
||||
adc INE+1
|
||||
sta DX+1
|
||||
|
||||
.4 ldy #S.OBJ.W
|
||||
|
||||
sta (ZPMENUPtr),y
|
||||
ldy #S.OBJ.W
|
||||
lda DX
|
||||
sta (ZPObjPtr),y
|
||||
iny
|
||||
lda DX+1
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
iny #S.OBJ.H
|
||||
|
||||
lda DY
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPObjPtr),y
|
||||
iny
|
||||
lda DY+1
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
ldy #S.MENU.iW
|
||||
lda IY
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
ldy #S.MENU.tW
|
||||
lda IE
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPObjPtr),y
|
||||
iny
|
||||
lda IE+1
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
iny #S.MENU.kW
|
||||
ldy #S.MENU.kW
|
||||
lda INE
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPObjPtr),y
|
||||
iny
|
||||
lda INE+1
|
||||
sta (ZPMENUPtr),y
|
||||
|
||||
sta (ZPObjPtr),y
|
||||
*--------------------------------------
|
||||
ldy #S.OBJ.Y1
|
||||
lda DY
|
||||
clc
|
||||
adc (ZPMENUPtr),y
|
||||
adc (ZPObjPtr),y
|
||||
tax
|
||||
|
||||
iny
|
||||
lda DY+1
|
||||
adc (ZPMENUPtr),y
|
||||
adc (ZPObjPtr),y
|
||||
|
||||
cpx WND.Screen+S.OBJ.H
|
||||
sbc WND.Screen+S.OBJ.H+1
|
||||
|
@ -307,18 +286,18 @@ MENU.SetMenuSizePos
|
|||
|
||||
ldy #S.OBJ.Y1
|
||||
|
||||
lda (ZPMENUPtr),y
|
||||
lda (ZPObjPtr),y
|
||||
* sec
|
||||
sbc DY
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
iny
|
||||
|
||||
lda (ZPMENUPtr),y
|
||||
lda (ZPObjPtr),y
|
||||
sbc DY+1
|
||||
sta (ZPMENUPtr),y
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
.5 >LDYA ZPMENUPtr
|
||||
.5 >LDYA ZPObjPtr
|
||||
jmp OBJ.SetX2Y2
|
||||
*--------------------------------------
|
||||
MENU.GetMItemW ldy #S.MITEM.pICON
|
||||
|
@ -327,7 +306,7 @@ MENU.GetMItemW ldy #S.MITEM.pICON
|
|||
ora (ZPPtr1),y
|
||||
beq .1
|
||||
|
||||
lda #17 Reserve space for Icon W + 1px SEP
|
||||
lda #20 Reserve space for Icon W + 4px SEP
|
||||
sta IY
|
||||
|
||||
.1 jsr MENU.GetText
|
||||
|
@ -351,7 +330,7 @@ MENU.GetMItemW ldy #S.MITEM.pICON
|
|||
jsr FON.GetTextSize
|
||||
|
||||
ldx CB.Cache+S.CB.SrcW
|
||||
cmp INE
|
||||
cpx INE
|
||||
lda CB.Cache+S.CB.SrcW+1
|
||||
sbc INE+1
|
||||
bcc .8
|
||||
|
@ -362,38 +341,6 @@ MENU.GetMItemW ldy #S.MITEM.pICON
|
|||
|
||||
.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
|
||||
jsr MENU.GetMItems
|
||||
|
||||
|
@ -417,7 +364,12 @@ MENU.FindMItemByID
|
|||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
MENU.Enter jsr MENU.GetDXDY
|
||||
* ZPObjPtr = Menu
|
||||
*--------------------------------------
|
||||
MENU.Enter >LDYA L.WND.Screen
|
||||
jsr CLIP.GetRect
|
||||
|
||||
jsr MENU.GetDXDY
|
||||
|
||||
stz D
|
||||
stz D+1
|
||||
|
@ -425,12 +377,12 @@ MENU.Enter jsr MENU.GetDXDY
|
|||
ldy #S.OBJ.X2
|
||||
lda DX X1
|
||||
clc
|
||||
adc (ZPMENUPtr),y
|
||||
adc (ZPObjPtr),y
|
||||
sta IE IE = X2
|
||||
|
||||
iny
|
||||
lda DX+1
|
||||
adc (ZPMENUPtr),y
|
||||
adc (ZPObjPtr),y
|
||||
sta IE+1
|
||||
|
||||
jsr MENU.GetMItems
|
||||
|
@ -443,7 +395,7 @@ MENU.Enter jsr MENU.GetDXDY
|
|||
|
||||
lda DY Y1
|
||||
clc
|
||||
adc SYSFON.Hp2
|
||||
adc SYSFON.Hp1
|
||||
sta INE INE = Y2
|
||||
lda DY+1
|
||||
adc #0
|
||||
|
@ -496,8 +448,11 @@ MENU.Enter jsr MENU.GetDXDY
|
|||
sta D+1
|
||||
|
||||
lda DY
|
||||
sec
|
||||
sbc #1
|
||||
sta Counter
|
||||
lda DY+1
|
||||
sbc #0
|
||||
sta Counter+1
|
||||
|
||||
bra .2
|
||||
|
@ -505,23 +460,25 @@ MENU.Enter jsr MENU.GetDXDY
|
|||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
.4 >LDYA L.WND.Screen
|
||||
jsr CB.FlushBufToYA
|
||||
|
||||
lda D
|
||||
.4 lda D
|
||||
ora D+1
|
||||
beq .5
|
||||
|
||||
>PUSHW D pMENU
|
||||
|
||||
ldy #S.OBJ.X2+1
|
||||
lda (ZPMENUPtr),y
|
||||
ldy #S.OBJ.X2
|
||||
lda (ZPObjPtr),y
|
||||
clc
|
||||
adc #1
|
||||
tax
|
||||
iny
|
||||
lda (ZPObjPtr),y
|
||||
adc #0
|
||||
>PUSHA
|
||||
dey
|
||||
lda (ZPMENUPtr),y
|
||||
txa
|
||||
>PUSHA
|
||||
|
||||
>PUSHW Counter
|
||||
>PUSHW Counter Y1
|
||||
|
||||
jsr MENU.New
|
||||
bcs .9
|
||||
|
@ -529,7 +486,7 @@ MENU.Enter jsr MENU.GetDXDY
|
|||
jmp MENU.Draw
|
||||
*--------------------------------------
|
||||
.5 lda MSG+S.MSG.S
|
||||
bit #S.MSG.S.CLK
|
||||
bit #S.XY.S.CLK
|
||||
beq .8
|
||||
|
||||
lda #S.MSG.T.ID
|
||||
|
@ -541,20 +498,51 @@ MENU.Enter jsr MENU.GetDXDY
|
|||
|
||||
jmp MENU.DestroyAll
|
||||
*--------------------------------------
|
||||
MENU.Leave clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
* DrawMenu(hMENU)
|
||||
*--------------------------------------
|
||||
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
|
||||
|
||||
jsr CB.GetBuf
|
||||
>SYSCALL2 NewStkObj
|
||||
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
|
||||
jsr OBJ.DrawBorders
|
||||
bcs .9
|
||||
|
||||
jsr MENU.GetDXDY
|
||||
|
||||
|
@ -563,12 +551,13 @@ MENU.Draw >SYSCALL2 GetMemPtr
|
|||
.1 lda (ZPPtr1)
|
||||
beq .8
|
||||
|
||||
jsr MENU.DrawMItem
|
||||
jsr MENU.DrawMItemBuf
|
||||
bcs .9
|
||||
|
||||
jsr MENU.NextMItemDY
|
||||
bra .1
|
||||
|
||||
.8 >LDYA L.WND.Screen
|
||||
jmp CB.FlushBufToYA
|
||||
.8 clc
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
@ -579,8 +568,7 @@ MENU.DrawMItemBuf
|
|||
jsr MENU.DrawMItem
|
||||
bcs .9
|
||||
|
||||
>LDYA L.WND.Screen
|
||||
jmp CB.FlushBufToYA
|
||||
jmp CB.FlushBuf
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
@ -588,20 +576,19 @@ MENU.DrawMItem jsr MENU.ResetX1Y1X2
|
|||
|
||||
lda (ZPPtr1)
|
||||
cmp #S.MITEM.T.SEP
|
||||
bne MENU.DrawMItem1
|
||||
bne .1
|
||||
|
||||
jsr CB.BorderLineH
|
||||
|
||||
jmp CB.Cache2CBBuf
|
||||
*--------------------------------------
|
||||
MENU.DrawMItem1 jsr MENU.IsSelected
|
||||
.1 jsr MENU.IsSelected
|
||||
|
||||
lda PREFS.MenuColor
|
||||
bcc .15
|
||||
bcc .2
|
||||
|
||||
eor #$ff
|
||||
|
||||
.15 jsr CB.FillRectMonoA
|
||||
.2 jsr CB.FillRectMonoA
|
||||
|
||||
lda CB.Cache+S.CB.Y1
|
||||
sec
|
||||
|
@ -613,72 +600,57 @@ MENU.DrawMItem1 jsr MENU.IsSelected
|
|||
sta CB.Cache+S.CB.Y2+1
|
||||
jsr CB.Cache2CBBuf
|
||||
*--------------------------------------
|
||||
inc CB.Cache+S.CB.Y1 Y1:1px margin
|
||||
bne .12
|
||||
jsr CB.IncY1 Y1:1px margin
|
||||
|
||||
inc CB.Cache+S.CB.Y1+1
|
||||
lda #8 TODO : Checked
|
||||
jsr CB.AddA2X1
|
||||
|
||||
.12 lda CB.Cache+S.CB.X1
|
||||
clc
|
||||
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 MENU.GetIcon
|
||||
beq .3
|
||||
|
||||
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
|
||||
ldx hSYSFON
|
||||
jsr DRAW.YAText
|
||||
|
||||
lda CB.Cache+S.CB.X1
|
||||
sec
|
||||
ldy #S.MENU.tW
|
||||
adc (ZPMENUPtr),y
|
||||
lda (ZPObjPtr),y
|
||||
clc
|
||||
adc 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)
|
||||
cmp #S.MITEM.T.ITEM
|
||||
bne .3
|
||||
bne .4
|
||||
|
||||
jsr MENU.IsSelected
|
||||
jsr MENU.GetKeyString C untouched
|
||||
beq .3
|
||||
beq .8
|
||||
|
||||
ldx hSYSFON
|
||||
jsr DRAW.YAText
|
||||
|
||||
.3 lda (ZPPtr1)
|
||||
cmp #S.MITEM.T.SUBMENU
|
||||
jmp DRAW.YAText
|
||||
*--------------------------------------
|
||||
.4 cmp #S.MITEM.T.SUBMENU
|
||||
bne .8
|
||||
|
||||
lda CB.Cache+S.CB.X1
|
||||
sec
|
||||
ldy #S.MENU.kW
|
||||
adc (ZPMENUPtr),y
|
||||
lda (ZPObjPtr),y
|
||||
clc
|
||||
adc CB.Cache+S.CB.X1
|
||||
sta CB.Cache+S.CB.X1
|
||||
|
||||
lda CB.Cache+S.CB.X1+1
|
||||
iny
|
||||
adc (ZPMENUPtr),y
|
||||
lda (ZPObjPtr),y
|
||||
adc CB.Cache+S.CB.X1+1
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
|
||||
ldx #BM.ID.RIGHT
|
||||
|
@ -775,73 +747,25 @@ MENU.GetKeyString
|
|||
|
||||
.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
|
||||
*--------------------------------------
|
||||
MENU.GetDXDY ldy #S.OBJ.X1
|
||||
lda (ZPMENUPtr),y
|
||||
lda (ZPObjPtr),y
|
||||
clc
|
||||
adc #1
|
||||
sta DX
|
||||
iny
|
||||
lda (ZPMENUPtr),y
|
||||
lda (ZPObjPtr),y
|
||||
adc #0
|
||||
sta DX+1
|
||||
|
||||
ldy #S.OBJ.Y1
|
||||
lda (ZPMENUPtr),y
|
||||
lda (ZPObjPtr),y
|
||||
clc
|
||||
adc #1
|
||||
sta DY
|
||||
iny
|
||||
lda (ZPMENUPtr),y
|
||||
lda (ZPObjPtr),y
|
||||
adc #0
|
||||
sta DY+1
|
||||
|
||||
|
@ -849,12 +773,12 @@ MENU.GetDXDY ldy #S.OBJ.X1
|
|||
*--------------------------------------
|
||||
MENU.ResetX1Y1X2
|
||||
ldy #S.OBJ.X1
|
||||
lda (ZPMENUPtr),y
|
||||
lda (ZPObjPtr),y
|
||||
clc
|
||||
adc #1
|
||||
sta CB.Cache+S.CB.X1
|
||||
iny
|
||||
lda (ZPMENUPtr),y
|
||||
lda (ZPObjPtr),y
|
||||
adc #0
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
|
||||
|
@ -864,23 +788,23 @@ MENU.ResetX1Y1X2
|
|||
sta CB.Cache+S.CB.Y1+1
|
||||
|
||||
ldy #S.OBJ.X2
|
||||
lda (ZPMENUPtr),y
|
||||
lda (ZPObjPtr),y
|
||||
sec
|
||||
sbc #1
|
||||
sta CB.Cache+S.CB.X2
|
||||
iny
|
||||
lda (ZPMENUPtr),y
|
||||
lda (ZPObjPtr),y
|
||||
sbc #0
|
||||
sta CB.Cache+S.CB.X2+1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
MENU.GetMItems lda ZPMENUPtr
|
||||
MENU.GetMItems lda ZPObjPtr
|
||||
clc
|
||||
adc #S.MENU.Items
|
||||
sta ZPPtr1
|
||||
|
||||
lda ZPMENUPtr+1
|
||||
lda ZPObjPtr+1
|
||||
adc /S.MENU.Items
|
||||
sta ZPPtr1+1
|
||||
rts
|
||||
|
@ -915,13 +839,18 @@ MENU.Destroy clc
|
|||
jsr PTR.Disable
|
||||
|
||||
lda #S.CB.CMD.BITBLT
|
||||
jsr CB.InitCacheA
|
||||
sta CB.Cache+S.CB.CMD
|
||||
|
||||
lda #S.CB.OP.RESTORE
|
||||
sta CB.Cache+S.CB.OP
|
||||
|
||||
plp
|
||||
|
||||
lda ZPObjPtr+1
|
||||
pha
|
||||
lda ZPObjPtr
|
||||
pha
|
||||
|
||||
.2 php
|
||||
|
||||
ldx MENU.Stack.Cnt
|
||||
|
@ -929,33 +858,22 @@ MENU.Destroy clc
|
|||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPObjPtr
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
ldx #0
|
||||
jsr CB.GetObjX1Y1X2Y2
|
||||
|
||||
.3 lda (ZPObjPtr),y
|
||||
sta CB.Cache+S.CB.X1,x
|
||||
iny
|
||||
inx
|
||||
cpx #8 X1,Y1,X2,Y2
|
||||
bne .3
|
||||
jsr CB.ResetSrcXY
|
||||
|
||||
ldy #S.OBJ.W
|
||||
ldx #0
|
||||
|
||||
.4 lda (ZPObjPtr),y
|
||||
sta CB.Cache+S.CB.SrcW,x
|
||||
iny
|
||||
inx
|
||||
cpx #4 W,H
|
||||
bne .4
|
||||
jsr CB.GetObjSrcWH
|
||||
|
||||
ldy #S.MENU.hSAVEBUF
|
||||
lda (ZPObjPtr),y
|
||||
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
|
||||
|
||||
ldx MENU.Stack.Cnt
|
||||
|
@ -969,7 +887,12 @@ MENU.Destroy clc
|
|||
|
||||
bne .2
|
||||
|
||||
.7 jmp PTR.Enable
|
||||
.7 pla
|
||||
sta ZPObjPtr
|
||||
pla
|
||||
sta ZPObjPtr+1
|
||||
|
||||
jmp PTR.Enable
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
|
|
@ -19,19 +19,24 @@ MOU.Init >PUSHW L.DEVNAME.MOUSE
|
|||
clc
|
||||
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
|
||||
lsr
|
||||
sta PTR.Pos+S.POINT.X+1
|
||||
lda DCB.GFX+S.DCB.GFX.W
|
||||
|
||||
lda CLIP.Screen+S.RECT.X2
|
||||
sta MouseClamp+2
|
||||
ror
|
||||
sta PTR.Pos+S.POINT.X
|
||||
lda DCB.GFX+S.DCB.GFX.H+1
|
||||
|
||||
lda CLIP.Screen+S.RECT.Y2+1
|
||||
sta MouseClamp+7
|
||||
lsr
|
||||
sta PTR.Pos+S.POINT.Y+1
|
||||
lda DCB.GFX+S.DCB.GFX.H
|
||||
|
||||
lda CLIP.Screen+S.RECT.Y2
|
||||
sta MouseClamp+6
|
||||
ror
|
||||
sta PTR.Pos+S.POINT.Y
|
||||
|
@ -68,25 +73,25 @@ MOU.CheckOverMenu
|
|||
lda MENU.Stack,x
|
||||
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPMENUPtr
|
||||
pha
|
||||
tya
|
||||
clc
|
||||
adc #S.OBJ.X1
|
||||
tay
|
||||
pla
|
||||
adc /S.OBJ.X1
|
||||
jsr MOU.InRectYA
|
||||
>STYA ZPObjPtr
|
||||
|
||||
jsr MOU.InObj
|
||||
bcs .3
|
||||
|
||||
jsr MENU.Enter
|
||||
lda #PTR.T.ARROW
|
||||
jsr PTR.Set
|
||||
|
||||
clc
|
||||
rts
|
||||
jmp MENU.Enter
|
||||
|
||||
.3 ldx MENU.Stack.Idx
|
||||
bne .2
|
||||
|
||||
lda MSG+S.MSG.S
|
||||
bit #S.XY.S.CLK
|
||||
beq .9
|
||||
|
||||
jsr MENU.DestroyAll
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -111,76 +116,71 @@ MOU.CheckOverWND
|
|||
lda WND.Stack-1,x
|
||||
jsr OBJ.GetHWNDA
|
||||
|
||||
ldy #S.OBJ.F
|
||||
lda (ZPWNDPtr),y
|
||||
and #S.OBJ.F.BORDER
|
||||
beq .2
|
||||
|
||||
jsr MOU.ChkWNDBorders
|
||||
bcc .99
|
||||
bcc MOU.CheckOverSysBut.RTS
|
||||
|
||||
.2 lda ZPWNDPtr
|
||||
lda ZPWNDPtr
|
||||
clc
|
||||
adc #S.OBJ.X1
|
||||
tay
|
||||
lda ZPWNDPtr+1
|
||||
adc #0
|
||||
|
||||
adc /S.OBJ.X1
|
||||
jsr MOU.InRectYA
|
||||
bcs .7 not over this WND
|
||||
|
||||
lda MSG+S.MSG.S
|
||||
bit #S.MSG.S.CLK
|
||||
beq .22
|
||||
bit #S.XY.S.CLK
|
||||
beq .2
|
||||
|
||||
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
|
||||
cmp MSG+S.MSG.Y1
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sbc MSG+S.MSG.Y1+1
|
||||
and #S.WND.S.HASTBAR
|
||||
beq .3
|
||||
|
||||
ldy #S.WND.TBarY2
|
||||
jsr MOU.WNDCmpY
|
||||
bcc .3 not in TBAR
|
||||
|
||||
jmp MOU.MoveWND
|
||||
|
||||
bra .5
|
||||
|
||||
.3 ldy #S.WND.MBarY2
|
||||
|
||||
.3 ldy #S.OBJ.S
|
||||
lda (ZPWNDPtr),y
|
||||
cmp MSG+S.MSG.Y1
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sbc MSG+S.MSG.Y1+1
|
||||
and #S.WND.S.HASMBAR
|
||||
beq .4
|
||||
|
||||
ldy #S.WND.MBarY2
|
||||
jsr MOU.WNDCmpY
|
||||
bcc .4 not in MBAR
|
||||
|
||||
jsr MBAR.Enter
|
||||
|
||||
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
|
||||
cmp MSG+S.MSG.Y1
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sbc MSG+S.MSG.Y1+1
|
||||
bcs .6 not in SBAR
|
||||
ldy #S.WND.SBarY1
|
||||
jsr MOU.WNDCmpY
|
||||
bcs .5 not in SBAR
|
||||
|
||||
|
||||
|
||||
.5 lda #PTR.T.ARROW
|
||||
jsr PTR.Set
|
||||
clc
|
||||
rts
|
||||
|
||||
|
||||
.6 lda #PTR.T.WAIT
|
||||
jsr PTR.Set
|
||||
|
||||
clc
|
||||
rts
|
||||
.6 jmp PTR.Set
|
||||
|
||||
.7 ldx WND.Stack.Idx
|
||||
|
||||
|
@ -191,9 +191,63 @@ MOU.CheckOverWND
|
|||
jsr PTR.Set
|
||||
|
||||
.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
|
||||
*--------------------------------------
|
||||
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
|
||||
ldy #S.OBJ.F
|
||||
lda (ZPWNDPtr),y
|
||||
and #S.OBJ.F.BORDER
|
||||
beq MOU.ChkWNDChilds.9
|
||||
|
||||
stz IY
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
|
@ -238,13 +292,13 @@ MOU.ChkWNDBorders
|
|||
lda (ZPWNDPtr),y
|
||||
clc
|
||||
adc #1
|
||||
eor MSG+S.MSG.X2
|
||||
eor MSG+S.MSG.X1
|
||||
bne .5
|
||||
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
adc #0
|
||||
eor MSG+S.MSG.X2+1
|
||||
eor MSG+S.MSG.X1+1
|
||||
bne .5
|
||||
|
||||
lda IY
|
||||
|
@ -260,13 +314,13 @@ MOU.ChkWNDBorders
|
|||
lda (ZPWNDPtr),y
|
||||
clc
|
||||
adc #1
|
||||
eor MSG+S.MSG.Y2
|
||||
eor MSG+S.MSG.Y1
|
||||
bne .7
|
||||
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
adc #0
|
||||
eor MSG+S.MSG.Y2+1
|
||||
eor MSG+S.MSG.Y1+1
|
||||
bne .7
|
||||
|
||||
lda #PTR.T.RESIZEXY1
|
||||
|
@ -275,9 +329,16 @@ MOU.ChkWNDBorders
|
|||
.7 lda IY
|
||||
bne .6
|
||||
|
||||
sec
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
MOU.InObj lda ZPObjPtr
|
||||
clc
|
||||
adc #S.OBJ.X1
|
||||
tay
|
||||
lda ZPObjPtr+1
|
||||
adc /S.OBJ.X1
|
||||
*--------------------------------------
|
||||
MOU.InRectYA >STYA ZPRECTPtr
|
||||
|
||||
ldy #S.RECT.X1
|
||||
|
@ -322,6 +383,41 @@ MOU.InRectYA >STYA ZPRECTPtr
|
|||
.9 sec
|
||||
.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
|
||||
SAVE usr/src/lib/libgui.s.mou
|
||||
LOAD usr/src/lib/libgui.s
|
||||
|
|
|
@ -22,7 +22,7 @@ MSG.Get stz MSG+S.MSG.T
|
|||
sta MSG+S.MSG.T
|
||||
|
||||
lda MSG+S.MSG.S
|
||||
bit #S.MSG.S.MOVE
|
||||
bit #S.XY.S.MOVE
|
||||
beq .2
|
||||
|
||||
>PUSHW L.MSG.XY
|
||||
|
@ -30,7 +30,7 @@ MSG.Get stz MSG+S.MSG.T
|
|||
|
||||
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
|
||||
|
||||
jsr MOU.CheckOverMenu
|
||||
|
|
|
@ -30,6 +30,18 @@ OBJ.New pha
|
|||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
OBJ.Enter lda (ZPObjPtr)
|
||||
tax
|
||||
jmp (J.OBJ.Enter,x)
|
||||
*--------------------------------------
|
||||
OBJ.Leave lda (ZPObjPtr)
|
||||
tax
|
||||
jmp (J.OBJ.Leave,x)
|
||||
*--------------------------------------
|
||||
OBJ.Paint lda (ZPObjPtr)
|
||||
tax
|
||||
jmp (J.OBJ.fPaintX,x)
|
||||
*--------------------------------------
|
||||
* hOBJ, Prop8, Value16
|
||||
*--------------------------------------
|
||||
OBJ.SetProp ldy #3
|
||||
|
@ -85,19 +97,29 @@ OBJ.GetPropAtY lda (ZPObjPtr),y
|
|||
|
||||
rts
|
||||
*--------------------------------------
|
||||
OBJ.SetDXDYX1Y1 ldx #3
|
||||
ldy #S.OBJ.X1+3
|
||||
|
||||
.1 lda DX,x
|
||||
sta (ZPObjPtr),y
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
OBJ.SetX2Y2 >STYA ZPPtr1
|
||||
|
||||
ldy #S.OBJ.W
|
||||
ldy #S.OBJ.W+1
|
||||
lda (ZPPtr1),y
|
||||
clc
|
||||
sbc #0
|
||||
pha
|
||||
iny
|
||||
lda (ZPPtr1),y
|
||||
sbc #0
|
||||
tax
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
bne .1
|
||||
|
||||
pla
|
||||
dex
|
||||
|
||||
.1 dec
|
||||
clc
|
||||
ldy #S.OBJ.X1
|
||||
adc (ZPPtr1),y
|
||||
|
@ -110,18 +132,18 @@ OBJ.SetX2Y2 >STYA ZPPtr1
|
|||
dey
|
||||
pla
|
||||
sta (ZPPtr1),y
|
||||
|
||||
ldy #S.OBJ.H
|
||||
*--------------------------------------
|
||||
ldy #S.OBJ.H+1
|
||||
lda (ZPPtr1),y
|
||||
clc
|
||||
sbc #0
|
||||
pha
|
||||
iny
|
||||
lda (ZPPtr1),y
|
||||
sbc #0
|
||||
tax
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
bne .2
|
||||
|
||||
dex
|
||||
|
||||
.2 dec
|
||||
|
||||
pla
|
||||
clc
|
||||
ldy #S.OBJ.Y1
|
||||
adc (ZPPtr1),y
|
||||
|
@ -131,13 +153,25 @@ OBJ.SetX2Y2 >STYA ZPPtr1
|
|||
adc (ZPPtr1),y
|
||||
ldy #S.OBJ.Y2+1
|
||||
sta (ZPPtr1),y
|
||||
tax
|
||||
dey
|
||||
pla
|
||||
sta (ZPPtr1),y A,X = Y2
|
||||
sta (ZPPtr1),y
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
OBJ.GetPtr lda (ZPObjPtr),y
|
||||
pha
|
||||
iny
|
||||
lda (ZPObjPtr),y
|
||||
beq .1
|
||||
|
||||
ply
|
||||
rts
|
||||
|
||||
.1 plx
|
||||
>LDYA L.BMs,x
|
||||
rts
|
||||
*--------------------------------------
|
||||
OBJ.SetAXAtY sta (ZPObjPtr),y
|
||||
iny
|
||||
txa
|
||||
|
@ -162,6 +196,19 @@ OBJ.GetHWNDA >SYSCALL2 GetMemPtr
|
|||
OBJ.DrawBorders >STYA ZPObjPtr
|
||||
stx IY
|
||||
|
||||
ldy #S.OBJ.F
|
||||
lda (ZPObjPtr),y
|
||||
* and #S.OBJ.F.BORDER
|
||||
* bne .1
|
||||
|
||||
bmi .1
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
.1 jsr CB.GetBuf
|
||||
bcs .9
|
||||
|
||||
jsr CB.BorderLineH
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
|
@ -247,9 +294,19 @@ OBJ.DrawBorders >STYA ZPObjPtr
|
|||
sta CB.Cache+S.CB.X1+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
|
||||
SAVE usr/src/lib/libgui.s.obj
|
||||
|
|
|
@ -12,7 +12,7 @@ PTR.Update lda PTR.T
|
|||
|
||||
lda #PTR.T.WAIT
|
||||
*--------------------------------------
|
||||
* Set X2,Y2,SrcPtr
|
||||
* Set SrcPtr, SrcW, SrcH
|
||||
*--------------------------------------
|
||||
PTR.Set sta PTR.T
|
||||
|
||||
|
@ -26,61 +26,37 @@ PTR.Set sta PTR.T
|
|||
sta CB.PTR+S.CB.SrcPtr+1
|
||||
sta ZPPtr1+1
|
||||
|
||||
ldy #S.BM.W
|
||||
lda (ZPPtr1),y
|
||||
sta CB.PTR+S.CB.SrcW
|
||||
|
||||
clc
|
||||
adc CB.PTR+S.CB.X1
|
||||
pha
|
||||
|
||||
iny
|
||||
lda (ZPPtr1),y
|
||||
sta CB.PTR+S.CB.SrcW+1
|
||||
adc CB.PTR+S.CB.X1+1
|
||||
tax
|
||||
pla
|
||||
bne .2
|
||||
ldy #S.BM.W+3
|
||||
ldx #3
|
||||
|
||||
.1 lda (ZPPtr1),y
|
||||
sta CB.PTR+S.CB.SrcW,x
|
||||
dey
|
||||
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
|
||||
bpl .1
|
||||
|
||||
bra PTR.Enable
|
||||
|
||||
PTR.Set.RTS rts
|
||||
*--------------------------------------
|
||||
* Set DestX,DestY
|
||||
*--------------------------------------
|
||||
PTR.SetPos >PULLW ZPPtr1
|
||||
lda PTR.bVisible
|
||||
PTR.SetRect >STYA ZPPtr1
|
||||
jsr PTR.Disable
|
||||
sec
|
||||
ror PTR.T
|
||||
|
||||
ldy #7
|
||||
|
||||
.1 lda (ZPPtr1),y
|
||||
sta PTR.Rect,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
jsr PTR.Hide.I
|
||||
bra PTR.Enable
|
||||
*--------------------------------------
|
||||
* SetPos DestX,DestY
|
||||
*--------------------------------------
|
||||
PTR.SetPos >PULLW ZPPtr1
|
||||
jsr PTR.Disable
|
||||
|
||||
.1 ldy #S.POINT-1
|
||||
|
||||
|
@ -106,7 +82,12 @@ PTR.Hide lda 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
|
||||
*--------------------------------------
|
||||
PTR.Show lda PTR.bVisible
|
||||
|
@ -115,7 +96,11 @@ PTR.Show lda PTR.bVisible
|
|||
dec PTR.bVisible
|
||||
*--------------------------------------
|
||||
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
|
||||
sbc PTR.HotPoints,x
|
||||
sta CB.PTR+S.CB.X1
|
||||
|
@ -133,23 +118,83 @@ PTR.Show.I ldx PTR.T
|
|||
sbc #0
|
||||
sta CB.PTR+S.CB.Y1+1
|
||||
|
||||
ldx CB.PTR+S.CB.SrcW+1
|
||||
lda CB.PTR+S.CB.SrcW
|
||||
bne .1
|
||||
|
||||
dex
|
||||
|
||||
.1 dec
|
||||
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
|
||||
|
||||
>LDYA L.WND.Screen
|
||||
jsr CLIP.GetRect
|
||||
ldx #S.CB
|
||||
|
||||
* >LDYA L.CB.PTR
|
||||
* jsr CB.GetInCache
|
||||
.1 lda CB.PTR-1,x
|
||||
sta CLIP.Cache-1,x
|
||||
dex
|
||||
bne .1
|
||||
|
||||
* jsr CLIP.CB.Cache
|
||||
* 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
|
||||
|
||||
>PUSHB WND.Screen+S.OBJ.hPARENT
|
||||
>PUSHBI IOCTL.WRITE
|
||||
>PUSHW L.CB.PTR
|
||||
>SYSCALL2 IOCTL
|
||||
jsr CB.GFXWrite
|
||||
|
||||
.8 clc
|
||||
|
||||
|
|
|
@ -7,6 +7,8 @@ SYSBUT.Enter bit WND.SYSBAR.bSysBut
|
|||
sec
|
||||
ror WND.SYSBAR.bSysBut
|
||||
|
||||
jsr MENU.DestroyAll
|
||||
|
||||
jsr CB.GetBuf
|
||||
bcs .9
|
||||
|
||||
|
@ -18,6 +20,7 @@ SYSBUT.Enter bit WND.SYSBAR.bSysBut
|
|||
>PUSHW L.MENU.Sys
|
||||
>PUSHW WND.SysBar+S.OBJ.X1
|
||||
>PUSHW WND.SysBar+S.OBJ.Y1
|
||||
|
||||
jsr MENU.New
|
||||
bcs .9
|
||||
|
||||
|
@ -37,7 +40,6 @@ SYSBUT.Leave bit WND.SYSBAR.bSysBut
|
|||
jsr SYSBAR.ShowSysBut
|
||||
|
||||
>LDYA L.WND.SysBar
|
||||
|
||||
jmp CB.FlushBufToYA
|
||||
|
||||
.8 clc
|
||||
|
@ -53,7 +55,6 @@ SYSBAR.Show jsr CB.GetBuf
|
|||
jsr SYSBAR.ShowSysClk
|
||||
|
||||
>LDYA L.WND.SysBar
|
||||
|
||||
jmp CB.FlushBufToYA
|
||||
|
||||
.9 rts
|
||||
|
@ -76,37 +77,18 @@ SYSBAR.ShowSysBut
|
|||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
lda CB.Cache+S.CB.X1
|
||||
clc
|
||||
adc #4
|
||||
sta CB.Cache+S.CB.X1
|
||||
lda CB.Cache+S.CB.X1+1
|
||||
adc #0
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
lda #4
|
||||
jsr CB.AddA2X1
|
||||
|
||||
inc CB.Cache+S.CB.Y1
|
||||
bne .30
|
||||
jsr CB.IncY1
|
||||
|
||||
inc CB.Cache+S.CB.Y1+1
|
||||
|
||||
.30 ldx #BM.ID.APPLE
|
||||
ldx #BM.ID.APPLE
|
||||
jsr DRAW.xBM
|
||||
|
||||
lda CB.Cache+S.CB.X1
|
||||
clc
|
||||
adc #20
|
||||
sta CB.Cache+S.CB.X1
|
||||
lda CB.Cache+S.CB.X1+1
|
||||
adc #0
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
lda #16+1
|
||||
jsr CB.AddA2X1
|
||||
|
||||
inc CB.Cache+S.CB.Y1
|
||||
bne .31
|
||||
|
||||
inc CB.Cache+S.CB.Y1+1
|
||||
|
||||
.31 lda WND.SysBar.bSysBut
|
||||
asl
|
||||
jsr CB.IncY1
|
||||
|
||||
>LDYA L.WND.SysBar.2osX
|
||||
ldx hSYSFON
|
||||
|
@ -129,14 +111,23 @@ SYSBAR.ShowSysClk
|
|||
lda PREFS.SysBarColor
|
||||
jsr CB.FillRectMonoA
|
||||
|
||||
ldx #S.RECT-1
|
||||
ldx #S.RECT
|
||||
|
||||
.1 lda RECT.SysClk,x
|
||||
sta CB.Cache+S.CB.X1,x
|
||||
.1 lda RECT.SysClk-1,x
|
||||
sta CB.Cache+S.CB.X1-1,x
|
||||
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
|
||||
SAVE usr/src/lib/libgui.s.sysbar
|
||||
|
|
|
@ -4,7 +4,10 @@ NEW
|
|||
TEXT.New
|
||||
TEXT.Paint
|
||||
|
||||
TEXT.Close
|
||||
TEXT.Enter
|
||||
TEXT.Leave
|
||||
*--------------------------------------
|
||||
TEXT.fPaint
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -28,15 +28,23 @@ WND.Setup
|
|||
>STYA WND.Screen+S.OBJ.W
|
||||
>STYA WND.Desktop+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
|
||||
sta WND.SysBar+S.OBJ.H
|
||||
|
||||
lda DCB.GFX+S.DCB.GFX.H
|
||||
sta WND.Screen+S.OBJ.H
|
||||
|
||||
sec
|
||||
sbc WND.SysBar+S.OBJ.H
|
||||
sbc SYSFON.Hp2
|
||||
sta WND.Desktop+S.OBJ.H
|
||||
|
||||
sta WND.SysBar+S.OBJ.Y1
|
||||
|
@ -44,15 +52,19 @@ WND.Setup
|
|||
sta RECT.SysWNDs+S.RECT.Y1
|
||||
sta RECT.SysClk+S.RECT.Y1
|
||||
|
||||
lda DCB.GFX+S.DCB.GFX.H
|
||||
dec
|
||||
clc
|
||||
adc SYSFON.Hp1
|
||||
|
||||
sta RECT.SysBut+S.RECT.Y2
|
||||
sta RECT.SysWNDs+S.RECT.Y2
|
||||
sta RECT.SysClk+S.RECT.Y2
|
||||
sta CLIP.Screen+S.RECT.Y2
|
||||
|
||||
>LDYA L.WND.Screen
|
||||
>STYA WND.Desktop+S.OBJ.hPARENT
|
||||
>STYA WND.SysBar+S.OBJ.hPARENT
|
||||
|
||||
* >LDYA L.WND.Screen
|
||||
jsr OBJ.SetX2Y2
|
||||
|
||||
>LDYA L.WND.Desktop
|
||||
|
@ -60,31 +72,32 @@ WND.Setup
|
|||
|
||||
>LDYA L.WND.SysBar
|
||||
jsr OBJ.SetX2Y2
|
||||
|
||||
*--------------------------------------
|
||||
>LDYA L.WND.SysBar.2osX
|
||||
ldx hSYSFON
|
||||
jsr FON.GetTextSize
|
||||
|
||||
lda CB.Cache+S.CB.SrcW
|
||||
clc
|
||||
adc #24 4 + BM width + 4
|
||||
adc #25 4 + BM width(16) + 1 + "2osX" + 4
|
||||
sta RECT.SysBut+S.RECT.X2
|
||||
sta RECT.SysWNDs+S.RECT.X1
|
||||
|
||||
*--------------------------------------
|
||||
>LDYA L.WND.SysBar.Clk
|
||||
ldx hSYSFON
|
||||
jsr FON.GetTextSize
|
||||
|
||||
lda CB.Cache+S.CB.SrcW
|
||||
sec for sbc below
|
||||
adc #8 4 + 00:00 + 4
|
||||
sta RECT.SysWNDs+S.RECT.X2
|
||||
clc
|
||||
adc #2 1 + "00:00" + 1
|
||||
sta CB.Cache+S.CB.SrcW
|
||||
|
||||
lda DCB.GFX+S.DCB.GFX.W
|
||||
sec
|
||||
sbc RECT.SysWNDs+S.RECT.X2
|
||||
sbc CB.Cache+S.CB.SrcW
|
||||
sta RECT.SysWNDs+S.RECT.X2
|
||||
sta RECT.SysClk+S.RECT.X1
|
||||
|
||||
lda DCB.GFX+S.DCB.GFX.W+1
|
||||
sbc #0
|
||||
sta RECT.SysWNDs+S.RECT.X2+1
|
||||
|
@ -94,7 +107,7 @@ WND.Setup
|
|||
clc
|
||||
sbc #0
|
||||
sta RECT.SysClk+S.RECT.X2
|
||||
lda DCB.GFX+S.DCB.GFX.W
|
||||
lda DCB.GFX+S.DCB.GFX.W+1
|
||||
sbc #0
|
||||
sta RECT.SysClk+S.RECT.X2+1
|
||||
|
||||
|
@ -175,6 +188,75 @@ WND.New ldy WND.Stack.Top
|
|||
|
||||
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
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -206,6 +288,9 @@ WND.Bring2Front ldx WND.Stack.Idx
|
|||
*--------------------------------------
|
||||
WND.Show sta WND.hWND
|
||||
|
||||
>LDYA L.WND.Desktop
|
||||
jsr CLIP.GetRect
|
||||
|
||||
ldx WND.Stack.Top
|
||||
beq .1
|
||||
|
||||
|
@ -215,18 +300,12 @@ WND.Show sta WND.hWND
|
|||
lda #S.WND.S.ACTIVE
|
||||
jsr WND.ClrStatus
|
||||
|
||||
jsr CB.GetBuf
|
||||
bcs WND.Activate.RTS
|
||||
|
||||
jsr WND.DrawTitleBar
|
||||
|
||||
>LDYA L.WND.Desktop
|
||||
jsr CB.FlushBufToYA
|
||||
|
||||
lda WND.hWND
|
||||
.1 lda WND.hWND
|
||||
ldx WND.Stack.Top
|
||||
|
||||
.1 sta WND.Stack,x
|
||||
sta WND.Stack,x
|
||||
inc WND.Stack.Top
|
||||
*--------------------------------------
|
||||
WND.Draw jsr OBJ.GetHWNDA Y,A = ZPWNDPtr
|
||||
|
@ -235,17 +314,9 @@ WND.Draw jsr OBJ.GetHWNDA Y,A = ZPWNDPtr
|
|||
|
||||
jsr WND.ResetInnerW
|
||||
|
||||
jsr CB.GetBuf
|
||||
bcs WND.Activate.RTS
|
||||
|
||||
lda #S.WND.S.ACTIVE
|
||||
jsr WND.SetStatus
|
||||
|
||||
ldy #S.OBJ.F
|
||||
lda (ZPWNDPtr),y
|
||||
and #S.OBJ.F.BORDER
|
||||
beq .1
|
||||
|
||||
>LDYA ZPWNDPtr
|
||||
ldx #1
|
||||
jsr OBJ.DrawBorders
|
||||
|
@ -297,8 +368,12 @@ WND.Draw jsr OBJ.GetHWNDA Y,A = ZPWNDPtr
|
|||
ldy #S.WND.pMBAR
|
||||
lda (ZPWNDPtr),y
|
||||
jsr MBAR.Draw
|
||||
bcs .9
|
||||
*--------------------------------------
|
||||
.4 ldy #S.WND.InnerY1
|
||||
.4 jsr CB.GetBuf
|
||||
bcs .9
|
||||
|
||||
ldy #S.WND.InnerY1
|
||||
jsr WND.SetCounterAtY
|
||||
|
||||
ldy #S.WND.pSTATUS+1
|
||||
|
@ -346,8 +421,7 @@ WND.Draw jsr OBJ.GetHWNDA Y,A = ZPWNDPtr
|
|||
sbc Counter+1
|
||||
sta (ZPWNDPtr),y
|
||||
|
||||
>LDYA L.WND.Desktop
|
||||
jsr CB.FlushBufToYA
|
||||
jsr CB.FlushBuf
|
||||
|
||||
lda WND.hWND
|
||||
pha
|
||||
|
@ -355,13 +429,12 @@ WND.Draw jsr OBJ.GetHWNDA Y,A = ZPWNDPtr
|
|||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
WND.ResetInnerW ldy #S.OBJ.W
|
||||
ldx #S.WND.InnerW
|
||||
WND.ResetInnerW ldy #S.OBJ.X1
|
||||
ldx #S.WND.InnerX1
|
||||
jsr .1
|
||||
|
||||
ldy #S.OBJ.H
|
||||
ldx #S.WND.InnerH
|
||||
jsr .1
|
||||
ldy #S.OBJ.Y1
|
||||
ldx #S.WND.InnerY1
|
||||
|
||||
ldy #S.OBJ.X2
|
||||
ldx #S.WND.InnerX2
|
||||
|
@ -369,6 +442,14 @@ WND.ResetInnerW ldy #S.OBJ.W
|
|||
|
||||
ldy #S.OBJ.Y2
|
||||
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
|
||||
pha
|
||||
|
@ -401,9 +482,13 @@ WND.SetAXAtY sta (ZPWNDPtr),y
|
|||
iny
|
||||
txa
|
||||
sta (ZPWNDPtr),y
|
||||
rts
|
||||
|
||||
WND.SetAXAtY.9 rts
|
||||
*--------------------------------------
|
||||
WND.DrawTitleBar
|
||||
jsr CB.GetBuf
|
||||
bcs WND.SetAXAtY.9
|
||||
|
||||
lda #S.CB.CMD.FILLRECT
|
||||
sta CB.Cache+S.CB.CMD
|
||||
|
||||
|
@ -448,13 +533,10 @@ WND.DrawTitleBar
|
|||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
inc CB.Cache+S.CB.Y1
|
||||
bne .12
|
||||
|
||||
inc CB.Cache+S.CB.Y1+1
|
||||
jsr CB.IncY1
|
||||
|
||||
* TOP LEFT ICON
|
||||
.12 ldy #S.WND.ICON+1
|
||||
ldy #S.WND.ICON+1
|
||||
lda (ZPWNDPtr),y
|
||||
tax
|
||||
dey
|
||||
|
@ -526,7 +608,7 @@ WND.DrawTitleBar
|
|||
ldx #BM.ID.CLOSE
|
||||
jsr DRAW.xBM
|
||||
|
||||
.8 clc
|
||||
.8 jmp CB.FlushBuf
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
@ -541,7 +623,16 @@ WND.DrawTitleBarText
|
|||
ldx hSYSFON
|
||||
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
|
||||
sec
|
||||
sbc CB.Cache+S.CB.SrcW
|
||||
|
@ -558,14 +649,39 @@ WND.DrawTitleBarText
|
|||
lda (ZPWNDPtr),y
|
||||
clc
|
||||
adc DX
|
||||
and PREFS.BestViewedX
|
||||
* and PREFS.BestViewedX
|
||||
and #$f8
|
||||
sta CB.Cache+S.CB.X1
|
||||
tax
|
||||
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
adc DX+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
|
||||
lda (ZPWNDPtr),y
|
||||
pha
|
||||
|
@ -574,10 +690,12 @@ WND.DrawTitleBarText
|
|||
ply
|
||||
|
||||
ldx hSYSFON
|
||||
clc
|
||||
jmp DRAW.YAText
|
||||
*--------------------------------------
|
||||
WND.DrawStatusBar
|
||||
jsr CB.GetBuf
|
||||
bcs .9
|
||||
|
||||
jsr CB.BorderLineH
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
|
@ -594,12 +712,9 @@ WND.DrawStatusBar
|
|||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
inc CB.Cache+S.CB.Y1
|
||||
bne .1
|
||||
jsr CB.IncY1
|
||||
|
||||
inc CB.Cache+S.CB.Y1+1
|
||||
|
||||
.1 lda PREFS.SBarColor
|
||||
lda PREFS.SBarColor
|
||||
jsr CB.FillRectMonoA
|
||||
|
||||
ldy #S.OBJ.Y2
|
||||
|
@ -608,6 +723,9 @@ WND.DrawStatusBar
|
|||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
lda #4
|
||||
jsr CB.AddA2X1
|
||||
|
||||
ldy #S.WND.pSTATUS
|
||||
lda (ZPWNDPtr),y
|
||||
pha
|
||||
|
@ -616,8 +734,11 @@ WND.DrawStatusBar
|
|||
ply
|
||||
|
||||
ldx hSYSFON
|
||||
clc
|
||||
jmp DRAW.YAText
|
||||
jsr DRAW.YAText
|
||||
|
||||
jmp CB.FlushBuf
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
WND.Paint pha hWND
|
||||
|
||||
|
@ -634,12 +755,39 @@ WND.Paint1 ldy #S.WND.fPaint
|
|||
|
||||
jmp (ZPPtr1)
|
||||
*--------------------------------------
|
||||
WND.fPaint.RTS rts
|
||||
|
||||
WND.fPaint jsr OBJ.GetHWNDA
|
||||
jsr WND.GetInnerInClip
|
||||
|
||||
jsr CB.GetBuf
|
||||
bcs WND.fPaint.RTS
|
||||
jsr WND.fPaint.BG
|
||||
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
|
||||
sta CB.Cache+S.CB.CMD
|
||||
|
@ -654,33 +802,12 @@ WND.fPaint jsr OBJ.GetHWNDA
|
|||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache+S.CB.COLOR
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache+S.CB.X1
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache+S.CB.X1+1
|
||||
ldx #7
|
||||
|
||||
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
|
||||
*--------------------------------------
|
||||
|
@ -694,54 +821,33 @@ WND.fPaint jsr OBJ.GetHWNDA
|
|||
lda (ZPWNDPtr),y
|
||||
sta CB.Cache+S.CB.SrcPtr+1
|
||||
|
||||
stz S.CB.SrcX
|
||||
stz S.CB.SrcX+1
|
||||
|
||||
stz S.CB.SrcY
|
||||
stz S.CB.SrcY+1
|
||||
jsr CB.ResetSrcXY
|
||||
|
||||
ldy #S.WND.InnerW+3
|
||||
ldx #3
|
||||
|
||||
.1 lda (ZPWNDPtr),y
|
||||
.2 lda (ZPWNDPtr),y
|
||||
sta CB.Cache+S.CB.SrcW,x
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
bpl .2
|
||||
|
||||
lda #S.CB.CMD.BITBLT
|
||||
sta CB.Cache+S.CB.CMD
|
||||
|
||||
jsr CB.Cache2CBBuf
|
||||
|
||||
.8 >LDYA L.WND.Desktop
|
||||
|
||||
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
|
||||
.8 jmp CB.FlushBuf
|
||||
|
||||
.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
|
||||
WND.GetChilds ldy #S.OBJ.pChilds
|
||||
lda (ZPWNDPtr),y
|
||||
sta ZPObjPtr
|
||||
iny
|
||||
lda (ZPWNDPtr),y
|
||||
sta ZPObjPtr+1
|
||||
ora ZPObjPtr
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
|
100
LIB/LIBGUI.S.txt
100
LIB/LIBGUI.S.txt
|
@ -15,8 +15,6 @@ NEW
|
|||
*--------------------------------------
|
||||
WND.MAX .EQ 64
|
||||
MENU.MAX .EQ 4
|
||||
MENU.LMargin .EQ 7
|
||||
MENU.RMargin .EQ 8
|
||||
*--------------------------------------
|
||||
.MA SWAP16
|
||||
lda ]1
|
||||
|
@ -82,12 +80,12 @@ MENU.RMargin .EQ 8
|
|||
ZPObjPtr .BS 2
|
||||
ZPRECTPtr .BS 2
|
||||
ZPWNDPtr .BS 2
|
||||
ZPMENUPtr .BS 2
|
||||
|
||||
ZPBMPtr .BS 2
|
||||
|
||||
ZPCBBufPtr .BS 2
|
||||
ZPPtr1 .BS 2
|
||||
ZPPtr2 .BS 2
|
||||
TmpW .BS 2
|
||||
|
||||
DX .BS 2
|
||||
DY .BS 2
|
||||
|
@ -152,8 +150,8 @@ L.MouseClamp .DA MouseClamp
|
|||
L.MSG .DA MSG
|
||||
L.MSG.XY .DA MSG+S.MSG.X1
|
||||
L.CB.PTR .DA CB.PTR
|
||||
L.CLIP.Rect .DA CLIP.Rect
|
||||
L.CB.Cache .DA CB.Cache
|
||||
L.CB.Cache .DA CB.Cache CB.GFXWrite
|
||||
.DA CLIP.Cache CB.GFXWrite
|
||||
L.WND.Screen .DA WND.Screen
|
||||
L.WND.Desktop .DA WND.Desktop
|
||||
L.WND.SysBar .DA WND.SysBar
|
||||
|
@ -178,6 +176,13 @@ L.BM.Up .DA BM.Up
|
|||
L.BM.Down .DA BM.Down
|
||||
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.Cursors .DA PTR.Arrow
|
||||
.DA PTR.Move
|
||||
|
@ -205,6 +210,30 @@ J.Clip .DA CLIP.Point SETPIXEL
|
|||
.DA CLIP.Text GETTEXTSIZE
|
||||
.DA CLIP.Line DRAWLINE
|
||||
.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
|
||||
*--------------------------------------
|
||||
LIB.LOAD lda LibCount
|
||||
|
@ -219,14 +248,14 @@ LIB.LOAD lda LibCount
|
|||
jsr FON.Init
|
||||
bcs .9
|
||||
|
||||
jsr WND.Setup
|
||||
|
||||
lda hDevMouse
|
||||
beq .1
|
||||
|
||||
jsr MOU.Setup
|
||||
|
||||
.1 jsr WND.Setup
|
||||
|
||||
lda #PTR.T.ARROW
|
||||
.1 lda #PTR.T.ARROW
|
||||
jsr PTR.Set
|
||||
jsr PTR.Show
|
||||
|
||||
|
@ -273,6 +302,32 @@ SkipStrZPtr1 ldy #$ff
|
|||
|
||||
.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.but
|
||||
.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.draw
|
||||
.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.mbox
|
||||
.INB usr/src/lib/libgui.s.menu
|
||||
.INB usr/src/lib/libgui.s.mou
|
||||
.INB usr/src/lib/libgui.s.msg
|
||||
.INB usr/src/lib/libgui.s.obj
|
||||
.INB usr/src/lib/libgui.s.pat
|
||||
* .INB usr/src/lib/libgui.s.pat
|
||||
.INB usr/src/lib/libgui.s.ptr
|
||||
.INB usr/src/lib/libgui.s.sysbar
|
||||
.INB usr/src/lib/libgui.s.text
|
||||
|
@ -312,7 +368,16 @@ OBJ.SizeOf .DA S.WND
|
|||
.DA 0
|
||||
.DA 0
|
||||
.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
|
||||
.DA #S.CB.Y1+1 GETPIXEL
|
||||
|
@ -336,7 +401,6 @@ PAT.Buf .BS 1 S.BM.F
|
|||
IOCTL .BS S.IOCTL
|
||||
DCB.GFX .BS S.DCB.GFX
|
||||
*--------------------------------------
|
||||
MouseClamp .BS 8
|
||||
MSG .BS S.MSG
|
||||
*--------------------------------------
|
||||
CB.PTR .DA #S.CB.CMD.BITBLT
|
||||
|
@ -345,8 +409,10 @@ CB.PTR .DA #S.CB.CMD.BITBLT
|
|||
.DA #0
|
||||
.BS S.CB-4
|
||||
*--------------------------------------
|
||||
CLIP.Rect .BS S.RECT
|
||||
CB.Cache .BS S.CB
|
||||
CB.Cache .BS S.CB CB.GFXWrite:
|
||||
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.Idx .BS 1
|
||||
|
@ -448,11 +514,13 @@ KEYMOD.S.OA .EQ *-KEYMOD.S
|
|||
KEYMOD.S.CA .EQ *-KEYMOD.S
|
||||
.DA #02,#'-',#0
|
||||
*--------------------------------------
|
||||
MouseClamp .EQ * MOU.Setup
|
||||
TEXTBUF .BS 16 for composing HotKey strings
|
||||
*--------------------------------------
|
||||
PREFS.BestViewedX .DA #$FC
|
||||
PREFS.MBarXMargin .DA #5
|
||||
PREFS.XSeparator .DA #6
|
||||
PREFS.nBestViewedX .DA #$03
|
||||
PREFS.XMargin .DA #4
|
||||
PREFS.XSeparator .DA #4
|
||||
*
|
||||
PREFS.MenuColor .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
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.CCLK
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.cclk
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -146,6 +146,6 @@ bnkbyt2 .DA #0
|
|||
kversion .HS 23 represents release 2.0.3
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.GP
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.gp
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -63,6 +63,6 @@ irqv .DA lanirq irq handler
|
|||
* end of obj mli_3
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.IRQ
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.irq
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -764,6 +764,6 @@ H2620 clc
|
|||
LDR.Test128.len .EQ *-LDR.Test128
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.LDR.A
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.ldr.a
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -944,6 +944,6 @@ RAM_1_END .EQ * end of /RAM installer
|
|||
|
||||
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.LDR.B
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.ldr.b
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -83,6 +83,6 @@ RAMDRV.END .EQ *
|
|||
.BS $FF9B-* fill to lanirq ($FF9B see note below)
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.RAM
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.ram
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -317,6 +317,6 @@ ex1 sta passit+1 also used by blockwrite
|
|||
* end of obj ram_0
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.RAMX
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.ramx
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -292,6 +292,6 @@ dsp1pfx .DA #01 1 parameter
|
|||
* end of obj sel_0
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.SEL0
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.sel0
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -400,6 +400,6 @@ rd_refn .HS 01 reference number
|
|||
dhdr_len .HS 00 directory header length (actually uses 2 bytes)
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.SEL1
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.sel1
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -435,6 +435,6 @@ button2 .DA #$0B
|
|||
.AS "Cancel: Esc"
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.SEL2
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.sel2
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -89,17 +89,17 @@ tdays .DA #$00 January
|
|||
* is the year which January 1st is Sunday, and so on backwards thru
|
||||
* the days of the week.
|
||||
|
||||
yradj .DA #$12 Monday
|
||||
yradj .DA #$18 Monday
|
||||
.DA #$17 Sunday
|
||||
.DA #$16 Saturday
|
||||
.DA #$15 Friday
|
||||
.DA #$14 Thursday
|
||||
.DA #$14 Wednesday
|
||||
.DA #$13 Tuesday
|
||||
.DA #$1B Friday
|
||||
.DA #$1A Thursday
|
||||
.DA #$19 Wednesday
|
||||
.DA #$18 Tuesday
|
||||
|
||||
TCLK.END .HS 000000 pad
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.TCLK
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.tclk
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -642,6 +642,6 @@ svdevn ldy namptr index to 1st byte of this entry.
|
|||
rts end of block file manager
|
||||
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.XDOS.A
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.xdos.a
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -862,6 +862,6 @@ L3C0B tya
|
|||
lsr
|
||||
rts
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.XDOS.B
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.xdos.b
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -723,6 +723,6 @@ L41C1 tya calc position of next fcb.
|
|||
|
||||
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.XDOS.C
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.xdos.c
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -574,6 +574,6 @@ twrprot1 sta unitnum make the device status call
|
|||
rts carry is indeterminate.
|
||||
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.XDOS.D
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.xdos.d
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -602,6 +602,6 @@ L4B1A ldx #$00
|
|||
rts
|
||||
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.XDOS.E
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.xdos.e
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
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)
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.XDOS.F
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.xdos.f
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -878,6 +878,6 @@ spunit .HS 0000000000000000 ref pathbuf-$10smartport unit numbers
|
|||
* pathname buffer starts at this page boundary (pathbuf = $D700)
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S.XRW
|
||||
LOAD USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s.xrw
|
||||
LOAD usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -5,11 +5,11 @@ NEW
|
|||
.OR $2000
|
||||
.TF PRODOS.203TC,TSYS
|
||||
*--------------------------------------
|
||||
.INB INC/ZP.I
|
||||
.INB INC/IO.I
|
||||
.INB INC/MONITOR.I
|
||||
.INB INC/MLI.I
|
||||
.INB INC/MLI.E.I
|
||||
.INB inc/zp.i
|
||||
.INB inc/io.i
|
||||
.INB inc/monitor.i
|
||||
.INB inc/mli.i
|
||||
.INB inc/mli.e.i
|
||||
*--------------------------------------
|
||||
MMStartUp .EQ $0202
|
||||
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)
|
||||
* $6000 sel_2 GQuit dispatcher support
|
||||
*--------------------------------------
|
||||
.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.a
|
||||
.INB usr/src/prodos.203/prodos.s.ldr.b
|
||||
|
||||
RAM .PH $FF00
|
||||
.INB USR/SRC/PRODOS.203/PRODOS.S.RAM
|
||||
.INB usr/src/prodos.203/prodos.s.ram
|
||||
.EP
|
||||
|
||||
IRQ .PH $FF9B
|
||||
.INB USR/SRC/PRODOS.203/PRODOS.S.IRQ
|
||||
.INB usr/src/prodos.203/prodos.s.irq
|
||||
.EP
|
||||
|
||||
GP .PH $BF00
|
||||
.INB USR/SRC/PRODOS.203/PRODOS.S.GP
|
||||
.INB usr/src/prodos.203/prodos.s.gp
|
||||
.EP
|
||||
|
||||
TCLK .PH $D742
|
||||
.INB USR/SRC/PRODOS.203/PRODOS.S.TCLK
|
||||
.INB usr/src/prodos.203/prodos.s.tclk
|
||||
.EP
|
||||
|
||||
CCLK .PH $D742
|
||||
.INB USR/SRC/PRODOS.203/PRODOS.S.CCLK
|
||||
.INB usr/src/prodos.203/prodos.s.cclk
|
||||
.EP
|
||||
|
||||
XDOS .PH $DE00
|
||||
.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.C
|
||||
.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.F
|
||||
.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.c
|
||||
.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.f
|
||||
.EP
|
||||
|
||||
RAMX .PH $200
|
||||
.INB USR/SRC/PRODOS.203/PRODOS.S.RAMX
|
||||
.INB usr/src/prodos.203/prodos.s.ramx
|
||||
.EP
|
||||
|
||||
XRW .PH $D000
|
||||
.INB USR/SRC/PRODOS.203/PRODOS.S.XRW
|
||||
.INB usr/src/prodos.203/prodos.s.xrw
|
||||
.EP
|
||||
|
||||
SEL0 .PH $1000
|
||||
.INB USR/SRC/PRODOS.203/PRODOS.S.SEL0
|
||||
.INB usr/src/prodos.203/prodos.s.sel0
|
||||
.EP
|
||||
|
||||
SEL1 .PH $1000
|
||||
.INB USR/SRC/PRODOS.203/PRODOS.S.SEL1
|
||||
.INB usr/src/prodos.203/prodos.s.sel1
|
||||
.EP
|
||||
|
||||
SEL2 .PH $1000
|
||||
.INB USR/SRC/PRODOS.203/PRODOS.S.SEL2
|
||||
.INB usr/src/prodos.203/prodos.s.sel2
|
||||
.EP
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/PRODOS.203/PRODOS.S
|
||||
SAVE usr/src/prodos.203/prodos.s
|
||||
ASM
|
||||
|
|
|
@ -50,7 +50,10 @@ CCLK.START >SHORTMX 8 bit mode.
|
|||
rts
|
||||
savestate .HS 00 state of the state register
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
CCLK.LEN .EQ *-CCLK.START
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/prodos.fx/prodos.s.cclk
|
||||
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
|
||||
* is the year which January 1st is Sunday, and so on backwards thru
|
||||
* the days of the week.
|
||||
|
||||
yradj .DA #$12 Monday
|
||||
* https://calormen.com/tmp/proyear.html
|
||||
* For 2022 - 2027: $18, $17, $16, $1B, $1A, $19, $18
|
||||
yradj .DA #$18 Monday
|
||||
.DA #$17 Sunday
|
||||
.DA #$16 Saturday
|
||||
.DA #$15 Friday
|
||||
.DA #$14 Thursday
|
||||
.DA #$14 Wednesday
|
||||
.DA #$13 Tuesday
|
||||
|
||||
.DA #$1B Friday
|
||||
.DA #$1A Thursday
|
||||
.DA #$19 Wednesday
|
||||
.DA #$18 Tuesday
|
||||
*--------------------------------------
|
||||
.LIST ON
|
||||
TCLK.LEN .EQ *-TCLK.START
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
MAN
|
||||
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
|
||||
* >LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
|
||||
|
||||
>PUSHB hWND
|
||||
>PUSHBI S.WND.hPTR
|
||||
>PUSHWI PTR.T.WAIT
|
||||
>LIBCALL hLIBGUI,LIBGUI.OBJ.SetProp
|
||||
|
||||
>PUSHB hWND
|
||||
>PUSHBI S.WND.pTITLE
|
||||
>PUSHW L.WND.TITLE
|
||||
|
@ -201,7 +206,7 @@ WND.Test.1 >PUSHB hWND
|
|||
>PUSHBI C.BLACK C16.D.GREEN
|
||||
rts
|
||||
|
||||
WND.Test.2 >PUSHWI 250
|
||||
WND.Test.2 >PUSHWI 240
|
||||
>PUSHWI 60
|
||||
>LIBCALL hLIBGUI,LIBGUI.DRAW.Line
|
||||
rts
|
||||
|
|
|
@ -11,8 +11,8 @@ int main(int argc, char *argv[])
|
|||
20,20,200,100);
|
||||
guiSetProp(hWND, WND_P_pTITLE, "Libgui C API");
|
||||
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);
|
||||
|
||||
do {
|
||||
|
|
|
@ -92,9 +92,9 @@ CS.RUN >SLEEP
|
|||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.MsgBox >PUSHW L.ABOUT.T
|
||||
>PUSHW L.ABOUT.M
|
||||
>PUSHWI BM.ID.INFO
|
||||
>PUSHBI BUT.ID.OK
|
||||
>PUSHW L.ABOUT.M
|
||||
>PUSHBI 63 BUT.ID.OK
|
||||
>LIBCALL hLIBGUI,LIBGUI.MBOX.MsgBox
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -118,7 +118,9 @@ CS.END
|
|||
LIBGUI .AZ "libgui"
|
||||
hLIBGUI .BS 1
|
||||
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"
|
||||
GUITEST2 .AZ "${ROOT}root/ctest/testgui"
|
||||
*--------------------------------------
|
||||
|
|
|
@ -160,13 +160,13 @@ DIR1.String sta AT.HIBIT
|
|||
|
||||
.15 sta DLIM SAVE DELIMITER
|
||||
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
|
||||
beq .4 YES, NO STRING IN BETWEEN
|
||||
|
||||
.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
|
||||
beq .3 YES, FINISH UP AND RETURN
|
||||
|
@ -179,7 +179,7 @@ DIR1.String sta AT.HIBIT
|
|||
bne .27
|
||||
|
||||
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 "?"
|
||||
ldx #DIR1.EscChars.L-1
|
||||
|
@ -189,7 +189,7 @@ DIR1.String sta AT.HIBIT
|
|||
|
||||
dex
|
||||
bpl .20
|
||||
bmi ERBA2
|
||||
bmi .9
|
||||
|
||||
.21 lda DIR1.EscCodes,x
|
||||
|
||||
|
@ -214,37 +214,102 @@ DIR1.String sta AT.HIBIT
|
|||
beq .1
|
||||
|
||||
.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
|
||||
*---------------------------------
|
||||
PSHS JSR GNNB GET NEXT NON-BLANK CHAR
|
||||
BCS ERBA2 END OF LINE
|
||||
JSR BACKUP.CHAR.PNTR
|
||||
JSR TRY.HEX.STRING
|
||||
BNE ERBA2 ...ERROR, BAD ADDRESS
|
||||
RTS
|
||||
PSHS jsr GNNB GET NEXT NON-BLANK CHAR
|
||||
bcs ERBA2 END OF LINE
|
||||
|
||||
jsr BACKUP.CHAR.PNTR
|
||||
jsr TRY.HEX.STRING
|
||||
bne ERBA2 ...ERROR, BAD ADDRESS
|
||||
|
||||
rts
|
||||
*--------------------------------
|
||||
THX1 JSR HEX.DIGIT GET NEXT HEX DIGIT
|
||||
BCC ERBA2 ERROR, ODD DIGITS
|
||||
LDA SYM.VALUE GET CONVERTED VALUE
|
||||
JSR EMIT
|
||||
TRY.HEX.STRING
|
||||
.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
|
||||
THX1 jsr HEX.DIGIT GET NEXT HEX DIGIT
|
||||
bcc ERBA2 ERROR, ODD DIGITS
|
||||
|
||||
lda SYM.VALUE GET CONVERTED VALUE
|
||||
jsr EMIT
|
||||
*--------------------------------
|
||||
ERBA2 JMP ERBA ERROR: BAD ADDRESS
|
||||
GT255ERR LDY #QER8 VALUE > 255 ERROR
|
||||
TRY.HEX.STRING jsr HEX.DIGIT
|
||||
bcs THX1
|
||||
|
||||
lda CURRENT.CHAR
|
||||
beq .2 ...END OF LINE
|
||||
|
||||
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"
|
||||
NOLBLERR ldy #QER1 "NO LABEL"
|
||||
.HS 2C LONG "BIT" TO SKIP NEXT TWO BYTES
|
||||
UNDF LDY #QER6 "UNDEF"
|
||||
JMP SOFT.ERROR
|
||||
UNDF ldy #QER6 "UNDEF"
|
||||
jmp SOFT.ERROR
|
||||
*---------------------------------
|
||||
* .EQ -- EQUATE
|
||||
*---------------------------------
|
||||
|
|
|
@ -29,6 +29,7 @@ OPTBL.DIR >DIR A,C,DIR.AC ASCII STRING COMPRESSED
|
|||
>DIR E,Q,PSEQ EQUATE
|
||||
>DIR F,I,PSFI FIN
|
||||
>DIR H,S,PSHS HEX STRING
|
||||
>DIR H,X,PSHX HEX DIGIT STRING
|
||||
>DIR I,N,PSIN INCLUDE
|
||||
>DIR L,I,PSLI LIST ON,/ OFF
|
||||
>DIR M,A,PSMA MACRO
|
||||
|
|
Loading…
Reference in New Issue
Block a user