mirror of https://github.com/A2osX/A2osX.git
CC stuff, new LIBTUI, some .h to complete....
This commit is contained in:
parent
fdd4c69416
commit
037fc870a5
|
@ -3,11 +3,22 @@
|
||||||
## Copyright
|
## Copyright
|
||||||
Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
|
Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
|
||||||
|
|
||||||
|
# D2TrkFmt16s
|
||||||
|
Write a track (16 sectors)
|
||||||
|
PUSHB DSSS0000
|
||||||
|
PUSHB VolNum
|
||||||
|
PUSHB HeadNum (0,1)
|
||||||
|
PUSHB TrackNum
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
CC : success
|
||||||
|
CS : A = Error
|
||||||
|
|
||||||
# D2TrkRead16s
|
# D2TrkRead16s
|
||||||
Write a track (16 sectors)
|
Write a track (16 sectors)
|
||||||
PUSHB = DSSS0000
|
PUSHB DSSS0000
|
||||||
PUSHB = TrackNum * 4 : 0->136+
|
PUSHB TrackNum
|
||||||
PUSHW = Ptr to 16*256 buffer
|
PUSHW Ptr to 16*256 buffer
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
CC : success, A = VolNum
|
CC : success, A = VolNum
|
||||||
|
@ -15,10 +26,9 @@ Write a track (16 sectors)
|
||||||
|
|
||||||
# D2TrkWrite16s
|
# D2TrkWrite16s
|
||||||
Write a track (16 sectors)
|
Write a track (16 sectors)
|
||||||
PUSHB = DSSS0000
|
PUSHB DSSS0000
|
||||||
PUSHB = VolNum
|
PUSHB VolNum
|
||||||
PUSHB = HeadNum (0,1)
|
PUSHB TrackNum
|
||||||
PUSHB = TrackNum * 4 : 0->136+
|
|
||||||
PUSHW = Ptr to 16*256 buffer
|
PUSHW = Ptr to 16*256 buffer
|
||||||
|
|
||||||
## RETURN VALUE
|
## RETURN VALUE
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
*** Auto generated by docgen.cmd ***
|
||||||
|
|
||||||
|
## Copyright
|
||||||
|
Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
|
||||||
|
|
||||||
|
# tuiInit
|
||||||
|
Initialize screen & create a new context
|
||||||
|
|
||||||
|
## C
|
||||||
|
`short int hCTX tuiInit();`
|
||||||
|
|
||||||
|
## ASM
|
||||||
|
`>LIBCALL hLIBTUI,LIBTUI.Init`
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
CC = success, A = hCTX
|
||||||
|
|
||||||
|
# tuiClose
|
||||||
|
destroy context and all sub objects
|
||||||
|
|
||||||
|
## C
|
||||||
|
`void fastcall tuiClose(short int hCTX);`
|
||||||
|
|
||||||
|
## ASM
|
||||||
|
`lda hCTX`
|
||||||
|
`>LIBCALL hLIBTUI,LIBTUI.Close`
|
||||||
|
|
||||||
|
## RETURN VALUE
|
||||||
|
CC = success
|
||||||
|
|
||||||
|
## License
|
||||||
|
A2osX is licensed under the GNU General Public License.
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation; either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
The full A2osX license can be found **[Here](../LICENSE)**.
|
||||||
|
|
||||||
|
*** End of Auto generated file ***
|
Binary file not shown.
Binary file not shown.
|
@ -9,7 +9,7 @@ for /f %%a in ('copy /Z "%~f0" nul') do set "CR=%%a"
|
||||||
mode con:cols=80 lines=24
|
mode con:cols=80 lines=24
|
||||||
|
|
||||||
cls
|
cls
|
||||||
echo Apple //e
|
echo Apple //e
|
||||||
|
|
||||||
set /a c=0
|
set /a c=0
|
||||||
|
|
||||||
|
@ -25,6 +25,11 @@ set SRCDIR=%~dp0..\LIB
|
||||||
set FILTER=LIBBLKDEV.S*.txt
|
set FILTER=LIBBLKDEV.S*.txt
|
||||||
Call :SCAN
|
Call :SCAN
|
||||||
|
|
||||||
|
set DOCFILE=%~dp0..\.Docs\LIBTUI.md
|
||||||
|
set SRCDIR=%~dp0..\LIB
|
||||||
|
set FILTER=LIBTUI.S*.txt
|
||||||
|
Call :SCAN
|
||||||
|
|
||||||
set DOCFILE=%~dp0..\.Docs\LIBGUI.md
|
set DOCFILE=%~dp0..\.Docs\LIBGUI.md
|
||||||
set SRCDIR=%~dp0..\LIB
|
set SRCDIR=%~dp0..\LIB
|
||||||
set FILTER=LIBGUI.S*.txt
|
set FILTER=LIBGUI.S*.txt
|
||||||
|
|
|
@ -22,7 +22,7 @@ CODE.Init stz ZPCCConst
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CODE.Quit >LDA.G CC.hOutFile
|
CODE.Quit >LDA.G CC.hOutFile
|
||||||
beq .8
|
beq .8
|
||||||
|
@ -59,13 +59,7 @@ CODE.PUSHAXI pha
|
||||||
|
|
||||||
pla
|
pla
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CODE.PUSHI pha
|
CODE.PUSHI jsr CODE.LDAI
|
||||||
lda #$A9 LDA #imm
|
|
||||||
jsr CODE.EmitByte
|
|
||||||
bcs CODE.LDAXI.RTS
|
|
||||||
|
|
||||||
pla
|
|
||||||
jsr CODE.EmitByte
|
|
||||||
bcs CODE.LDAXI.RTS
|
bcs CODE.LDAXI.RTS
|
||||||
|
|
||||||
bra CODE.PUSHA
|
bra CODE.PUSHA
|
||||||
|
@ -153,25 +147,13 @@ CODE.INCPSTACK lda #$E6 INC zp
|
||||||
lda #pStack
|
lda #pStack
|
||||||
bra CODE.EmitByte
|
bra CODE.EmitByte
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CODE.TOABSYX jsr CODE.EmitByte A=opcode : JMP, JSR .....
|
|
||||||
txa
|
|
||||||
jsr CODE.EmitByte
|
|
||||||
tya
|
|
||||||
bra CODE.EmitByte
|
|
||||||
*--------------------------------------
|
|
||||||
CODE.SYSCALL jsr CODE.LDXI
|
CODE.SYSCALL jsr CODE.LDXI
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda #$20 JSR
|
lda #$20 JSR
|
||||||
jsr CODE.EmitByte
|
ldx #A2osX.SYSCALL
|
||||||
bcs .9
|
ldy /A2osX.SYSCALL
|
||||||
|
bra CODE.TOABSYX
|
||||||
lda #A2osX.SYSCALL
|
|
||||||
jsr CODE.EmitByte
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
lda /A2osX.SYSCALL
|
|
||||||
bra CODE.EmitByte
|
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -179,14 +161,40 @@ CODE.FPUCALL jsr CODE.LDXI
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda #$20 JSR
|
lda #$20 JSR
|
||||||
|
ldx #A2osX.FPUCALL
|
||||||
|
ldy /A2osX.FPUCALL
|
||||||
|
bra CODE.TOABSYX
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CODE.LIBCALL jsr CODE.LDXI
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
tya
|
||||||
|
dec
|
||||||
|
dec
|
||||||
|
dec
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
clc
|
||||||
|
adc #PCC.PH.JMPLIBs
|
||||||
|
tax
|
||||||
|
lda #0
|
||||||
|
adc /PCC.PH.JMPLIBs
|
||||||
|
tay
|
||||||
|
lda #$20 JSR
|
||||||
|
bra CODE.TOABSYX
|
||||||
|
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CODE.TOABSYX jsr CODE.EmitByte A=opcode : JMP, JSR .....
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
txa
|
||||||
jsr CODE.EmitByte
|
jsr CODE.EmitByte
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda #A2osX.FPUCALL
|
tya
|
||||||
jsr CODE.EmitByte
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
lda /A2osX.FPUCALL
|
|
||||||
bra CODE.EmitByte
|
bra CODE.EmitByte
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
|
@ -256,6 +264,41 @@ CODE.EmitDATA clc
|
||||||
|
|
||||||
.8 rts CC/CS from fputc
|
.8 rts CC/CS from fputc
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CODE.EmitTail jsr CODE.DSSelect
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
stz ArgIndex
|
||||||
|
|
||||||
|
.1 lda ArgIndex
|
||||||
|
>CMP.G LibCount
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
clc
|
||||||
|
adc #hLibNs
|
||||||
|
tay
|
||||||
|
lda (pData),y
|
||||||
|
pha
|
||||||
|
|
||||||
|
>PUSHB.G CC.hOutFile
|
||||||
|
pla
|
||||||
|
>SYSCALL ArgV
|
||||||
|
>PUSHYA
|
||||||
|
>SYSCALL fputs
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr .8
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
inc ArgIndex
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 >PUSHB.G CC.hOutFile
|
||||||
|
lda #0
|
||||||
|
>PUSHA
|
||||||
|
>SYSCALL fputc
|
||||||
|
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
CODE.CSSelect clc
|
CODE.CSSelect clc
|
||||||
bit bPass2
|
bit bPass2
|
||||||
bpl .8
|
bpl .8
|
||||||
|
@ -281,10 +324,10 @@ CODE.DSSelect clc
|
||||||
>PUSHWZ
|
>PUSHWZ
|
||||||
lda ZPCCConst
|
lda ZPCCConst
|
||||||
clc
|
clc
|
||||||
adc PCC.FH+PCC.FH.IDATA
|
adc PCC.FH+PCC.FH.CONST
|
||||||
tay
|
tay
|
||||||
lda ZPCCConst+1
|
lda ZPCCConst+1
|
||||||
adc PCC.FH+PCC.FH.IDATA+1
|
adc PCC.FH+PCC.FH.CONST+1
|
||||||
sec
|
sec
|
||||||
sbc #$20
|
sbc #$20
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.CORE.Init >SYSCALL SListNew
|
CORE.Init >SYSCALL SListNew
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STA.G CC.hDefines
|
>STA.G CC.hDefines
|
||||||
|
@ -40,8 +40,8 @@ CC.CORE.Init >SYSCALL SListNew
|
||||||
* clc
|
* clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.CORE.Quit jsr CC.FIO.FClose
|
CORE.Quit jsr CC.FIO.FClose
|
||||||
bne CC.CORE.Quit
|
bne CORE.Quit
|
||||||
|
|
||||||
ldy ScopeIdx
|
ldy ScopeIdx
|
||||||
beq .1
|
beq .1
|
||||||
|
@ -74,7 +74,8 @@ CC.CORE.Quit jsr CC.FIO.FClose
|
||||||
>LDA.G CC.hSymBuf
|
>LDA.G CC.hSymBuf
|
||||||
jsr .7
|
jsr .7
|
||||||
|
|
||||||
jsr CC.SYM.LookupFreeAll
|
.5 jsr CC.SYM.LookupFree
|
||||||
|
bcc .5
|
||||||
|
|
||||||
>LDA.G CC.hStack
|
>LDA.G CC.hStack
|
||||||
|
|
||||||
|
@ -185,73 +186,6 @@ CC.CompileStmt >LDYA L.CC.KW
|
||||||
sec
|
sec
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.CORE.SetVar stz ExpState
|
|
||||||
|
|
||||||
jsr CC.EXP.POSTOPS var++, var[0]... ?
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
ldx StmtPreOp
|
|
||||||
jsr CC.EXP.PREOPS apply ++var, ....
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
|
||||||
bcs .90
|
|
||||||
|
|
||||||
jsr CC.IsEndArg var++; or ++var; ?
|
|
||||||
bcc .8
|
|
||||||
|
|
||||||
jsr CC.LookupAOP var=, var+= ... ?
|
|
||||||
bcs .90
|
|
||||||
|
|
||||||
cpx #0 TOTO : all AOPS
|
|
||||||
bne *
|
|
||||||
|
|
||||||
lda ExpState
|
|
||||||
bmi .90 VonStack
|
|
||||||
|
|
||||||
asl
|
|
||||||
|
|
||||||
bmi .7 AinPTR
|
|
||||||
|
|
||||||
asl
|
|
||||||
bmi .6 AonStack
|
|
||||||
|
|
||||||
jsr CC.EXP.GetAddr1
|
|
||||||
bcc .7
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
.6 >LDYA L.PCC.PopAddr1
|
|
||||||
jsr CODE.EmitPCC
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
.7 ldy #SYM.Q
|
|
||||||
lda (ZPLookupSymPtr),y
|
|
||||||
pha
|
|
||||||
lda (ZPLookupSymPtr)
|
|
||||||
tay
|
|
||||||
pla get expected T/Q
|
|
||||||
|
|
||||||
jsr CC.EXP.Eval
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CC.EXP.GetSymSizeOfInAXC
|
|
||||||
tay
|
|
||||||
dey
|
|
||||||
jsr CODE.LDYI
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
>LDYA L.PCC.SetValue
|
|
||||||
jmp CODE.EmitPCC
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.90 lda #E.CSYN
|
|
||||||
sec
|
|
||||||
|
|
||||||
.99 rts
|
|
||||||
**--------------------------------------
|
|
||||||
CC.Comments jsr CC.GetNextChar TODO : /* ... */
|
CC.Comments jsr CC.GetNextChar TODO : /* ... */
|
||||||
cmp #'/'
|
cmp #'/'
|
||||||
bne .90
|
bne .90
|
||||||
|
@ -567,6 +501,36 @@ CC.CheckCharNB cmp #C.SPACE
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CC.GetNextCharEsc
|
||||||
|
jsr CC.GetNextChar
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
cmp #'\'
|
||||||
|
bne .8
|
||||||
|
|
||||||
|
jsr CC.GetNextChar
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
ldx #CC.EscChars.Cnt-1
|
||||||
|
|
||||||
|
.1 cmp CC.EscChars,x
|
||||||
|
beq .6
|
||||||
|
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.6 lda CC.EscCodes,x
|
||||||
|
bit .9
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
clv
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
CC.GetNextChar inc ZPLineBufPtr
|
CC.GetNextChar inc ZPLineBufPtr
|
||||||
bne CC.GetChar
|
bne CC.GetChar
|
||||||
|
|
||||||
|
@ -608,6 +572,9 @@ CC.IsEndArg cmp #']'
|
||||||
cmp #';'
|
cmp #';'
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
|
cmp #':'
|
||||||
|
beq .8
|
||||||
|
|
||||||
cmp #')'
|
cmp #')'
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,8 @@ CC.DECL jsr CC.TYPE.Decl
|
||||||
jsr CC.SYM.GetAddr1
|
jsr CC.SYM.GetAddr1
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.SYM.SetValue Y,A = T/Q, Set value to this var
|
jsr CC.SYM.GetTypeInYA Y,A = T/Q
|
||||||
|
jsr CC.SYM.PopValue Set value to this var
|
||||||
.29 bcs .9
|
.29 bcs .9
|
||||||
|
|
||||||
.28 jsr CC.SYM.Store
|
.28 jsr CC.SYM.Store
|
||||||
|
@ -69,8 +70,12 @@ CC.SCSPEC.AUTO
|
||||||
CC.SCSPEC.REGISTER
|
CC.SCSPEC.REGISTER
|
||||||
CC.SCSPEC.STATIC
|
CC.SCSPEC.STATIC
|
||||||
CC.SCSPEC.EXTERN
|
CC.SCSPEC.EXTERN
|
||||||
|
.98 lda #E.CSYN
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
CC.SCSPEC.TYPEDEF
|
CC.SCSPEC.TYPEDEF
|
||||||
|
>DEBUG
|
||||||
|
|
||||||
.98 lda #E.CSYN
|
.98 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
|
|
|
@ -1,150 +0,0 @@
|
||||||
NEW
|
|
||||||
AUTO 3,1
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.bMUL
|
|
||||||
CC.BOPS.cMUL
|
|
||||||
inc pStack
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.bDIV
|
|
||||||
CC.BOPS.cDIV
|
|
||||||
inc pStack
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.bMOD
|
|
||||||
CC.BOPS.cMOD
|
|
||||||
inc pStack
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.ADD clc
|
|
||||||
>PULLA
|
|
||||||
adc (pStack)
|
|
||||||
sta (pStack)
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.SUB sec
|
|
||||||
ldy #1
|
|
||||||
lda (pStack),y
|
|
||||||
sbc (pStack)
|
|
||||||
sta (pStack),y
|
|
||||||
inc pStack
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.SHL >PULLA
|
|
||||||
tax
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
lda (pStack)
|
|
||||||
|
|
||||||
.1 asl
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
sta (pStack)
|
|
||||||
|
|
||||||
.8 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.SHR >PULLA
|
|
||||||
tax
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
lda (pStack)
|
|
||||||
|
|
||||||
.1 lsr
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
sta (pStack)
|
|
||||||
|
|
||||||
.8 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.L >PULLA
|
|
||||||
cmp (pStack)
|
|
||||||
bcc .8
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
sta (pStack)
|
|
||||||
rts
|
|
||||||
|
|
||||||
.8 lda #1
|
|
||||||
sta (pStack)
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.G >PULLA
|
|
||||||
cmp (pStack)
|
|
||||||
beq .1
|
|
||||||
bcs .8
|
|
||||||
|
|
||||||
.1 lda #0
|
|
||||||
sta (pStack)
|
|
||||||
rts
|
|
||||||
|
|
||||||
.8 lda #1
|
|
||||||
sta (pStack)
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.LE >PULLA
|
|
||||||
cmp (pStack)
|
|
||||||
bcc .8
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
sta (pStack)
|
|
||||||
rts
|
|
||||||
|
|
||||||
.8 lda #1
|
|
||||||
sta (pStack)
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.GE >PULLA
|
|
||||||
cmp (pStack)
|
|
||||||
bcs .8
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
sta (pStack)
|
|
||||||
rts
|
|
||||||
|
|
||||||
.8 lda #1
|
|
||||||
sta (pStack)
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.EQ >PULLA
|
|
||||||
cmp (pStack)
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
lda #0
|
|
||||||
sta (pStack)
|
|
||||||
|
|
||||||
.8 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.NE >PULLA
|
|
||||||
eor (pStack)
|
|
||||||
sta (pStack)
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.LAND
|
|
||||||
CC.BOPS.AND >PULLA
|
|
||||||
and (pStack)
|
|
||||||
sta (pStack)
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.LOR
|
|
||||||
CC.BOPS.OR >PULLA
|
|
||||||
ora (pStack)
|
|
||||||
sta (pStack)
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.BOPS.EOR >PULLA
|
|
||||||
eor (pStack)
|
|
||||||
sta (pStack)
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
|
||||||
SAVE usr/src/bin/cc.s.exec
|
|
||||||
LOAD usr/src/bin/cc.s
|
|
||||||
ASM
|
|
287
BIN/CC.S.EXP.txt
287
BIN/CC.S.EXP.txt
|
@ -111,19 +111,27 @@ CC.EXP.Eval ldx ZPPtr1 local : returned T/Q
|
||||||
.22 jsr CC.IsDigit10 number ?
|
.22 jsr CC.IsDigit10 number ?
|
||||||
bcs .24
|
bcs .24
|
||||||
|
|
||||||
ldy ZPPtr2
|
ldy ZPPtr2 T
|
||||||
bne .23
|
bne .23
|
||||||
|
|
||||||
ldy #SYM.T.SINT
|
ldy #SYM.T.SINT
|
||||||
sty ZPPtr2
|
sty ZPPtr2
|
||||||
stz ZPPtr2+1
|
stz ZPPtr2+1 Q
|
||||||
|
|
||||||
.23 jsr CC.EXP.GetNum
|
.23 jsr CC.EXP.GetNum
|
||||||
bcs .29
|
bcs .29
|
||||||
|
|
||||||
bra .30
|
bra .30
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.24 cmp #'"' String literal
|
.24 cmp #'''
|
||||||
|
bne .25
|
||||||
|
|
||||||
|
jsr CC.EXP.GetChar
|
||||||
|
bcs .29
|
||||||
|
|
||||||
|
bra .30
|
||||||
|
|
||||||
|
.25 cmp #'"' String literal
|
||||||
bne CC.EXP.Eval.ESYN
|
bne CC.EXP.Eval.ESYN
|
||||||
|
|
||||||
jsr CC.EXP.AddConstCharP
|
jsr CC.EXP.AddConstCharP
|
||||||
|
@ -132,7 +140,7 @@ CC.EXP.Eval ldx ZPPtr1 local : returned T/Q
|
||||||
.30 jsr CC.GetCharNB
|
.30 jsr CC.GetCharNB
|
||||||
bcs CC.EXP.Eval.ESYN
|
bcs CC.EXP.Eval.ESYN
|
||||||
|
|
||||||
.31 jsr CC.IsEndArg , ; ) ?
|
.31 jsr CC.IsEndArg , ; ) ? :
|
||||||
bcc CC.EXP.Eval.End
|
bcc CC.EXP.Eval.End
|
||||||
|
|
||||||
jsr CC.IsOPChar
|
jsr CC.IsOPChar
|
||||||
|
@ -267,55 +275,6 @@ CC.EXP.BOPS bit #SYM.Q.PPPOINTER
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.AddConstCharP
|
|
||||||
lda ZPCCConst
|
|
||||||
ldx ZPCCConst+1
|
|
||||||
|
|
||||||
jsr CODE.LDAXI
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
>LDYA L.PCC.PushIAddr
|
|
||||||
jsr CODE.EmitPCC
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CODE.DSSelect
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
.1 jsr CC.GetNextChar
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
* TODO : add support for \ to next line
|
|
||||||
|
|
||||||
cmp #C.CR
|
|
||||||
beq .9
|
|
||||||
|
|
||||||
cmp #'"'
|
|
||||||
beq .2
|
|
||||||
|
|
||||||
jsr CODE.EmitData
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
iny
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.2 lda #0
|
|
||||||
jsr CODE.EmitData
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CODE.CSSelect
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
jsr CC.GetNextChar Skip "
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 lda #E.ESYN
|
|
||||||
sec
|
|
||||||
.99 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CC.EXP.IntConst >PUSHW ZPLineBufPtr
|
CC.EXP.IntConst >PUSHW ZPLineBufPtr
|
||||||
>PUSHWI ZPLineBufPtr
|
>PUSHWI ZPLineBufPtr
|
||||||
>PUSHBI 10
|
>PUSHBI 10
|
||||||
|
@ -336,14 +295,14 @@ CC.EXP.GetNum cpy #SYM.T.FLOAT
|
||||||
|
|
||||||
beq .11
|
beq .11
|
||||||
|
|
||||||
lda #E.TMISMATCH
|
.90 lda #E.TMISMATCH
|
||||||
* sec
|
* sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.11 >PUSHW ZPLineBufPtr
|
.11 >PUSHW ZPLineBufPtr
|
||||||
>PUSHWI ZPLineBufPtr
|
>PUSHWI ZPLineBufPtr
|
||||||
>SYSCALL StrToF
|
>SYSCALL StrToF
|
||||||
* bcs .9
|
* bcs .99
|
||||||
|
|
||||||
ldy #4
|
ldy #4
|
||||||
|
|
||||||
|
@ -368,7 +327,7 @@ CC.EXP.GetNum cpy #SYM.T.FLOAT
|
||||||
|
|
||||||
.2 >SYSCALL StrToL
|
.2 >SYSCALL StrToL
|
||||||
|
|
||||||
.3 bcs .9
|
.3 bcs .99
|
||||||
|
|
||||||
ldy #1 anticipate 2 bytes if *
|
ldy #1 anticipate 2 bytes if *
|
||||||
lda ZPPtr2+1
|
lda ZPPtr2+1
|
||||||
|
@ -388,7 +347,89 @@ CC.EXP.GetNum cpy #SYM.T.FLOAT
|
||||||
|
|
||||||
>POP 4
|
>POP 4
|
||||||
* clc
|
* clc
|
||||||
.9 rts
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
* https://riptutorial.com/c/example/16255/character-literals
|
||||||
|
* 'c', '\n', '\123', '\xAB'
|
||||||
|
*--------------------------------------
|
||||||
|
CC.EXP.GetChar ldy ZPPtr2+1
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
lda ZPPtr2
|
||||||
|
cmp #SYM.T.UCHAR
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
cmp #SYM.T.SCHAR
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
.1 jsr CC.GetNextCharEsc
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
jsr CODE.PUSHI
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CC.GetNextChar
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
cmp #'''
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
jsr CC.GetNextCharNB skip '
|
||||||
|
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #E.ESYN
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CC.EXP.AddConstCharP
|
||||||
|
lda ZPCCConst
|
||||||
|
ldx ZPCCConst+1
|
||||||
|
|
||||||
|
jsr CODE.LDAXI
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>LDYA L.PCC.PushIAddr
|
||||||
|
jsr CODE.EmitPCC
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CODE.DSSelect
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
.1 jsr CC.GetNextCharEsc
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
bvs .2 ESCaped
|
||||||
|
* TODO : add support for \ to next line
|
||||||
|
|
||||||
|
cmp #C.CR
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
cmp #'"'
|
||||||
|
beq .3
|
||||||
|
|
||||||
|
.2 jsr CODE.EmitData
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.3 jsr CC.GetNextCharNBNL Skip "
|
||||||
|
bcs .8
|
||||||
|
|
||||||
|
cmp #'"'
|
||||||
|
beq .1
|
||||||
|
|
||||||
|
.8 lda #0
|
||||||
|
jsr CODE.EmitData
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jmp CODE.CSSelect
|
||||||
|
|
||||||
|
.9 lda #E.ESYN
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ZPPtr2 = expected T/Q
|
* ZPPtr2 = expected T/Q
|
||||||
* ZPPtr3+1 = PREOPS
|
* ZPPtr3+1 = PREOPS
|
||||||
|
@ -424,40 +465,8 @@ CC.EXP.GetVar stz ExpState
|
||||||
.7 jsr CC.EXP.PushValue
|
.7 jsr CC.EXP.PushValue
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
.8 lda ZPPtr2 target T
|
.8 jmp CC.SYM.LookupCheckTQ
|
||||||
beq .3
|
|
||||||
|
|
||||||
cmp #SYM.T.VOID
|
|
||||||
beq .2
|
|
||||||
|
|
||||||
lda (ZPLookupSymPtr) SYM.T
|
|
||||||
cmp #SYM.T.VOID
|
|
||||||
beq .2
|
|
||||||
|
|
||||||
cmp ZPPtr2 T
|
|
||||||
bne .9
|
|
||||||
|
|
||||||
.2 lda ZPPtr2+1 Q
|
|
||||||
|
|
||||||
ldy #SYM.Q
|
|
||||||
cmp (ZPLookupSymPtr),y
|
|
||||||
bne .9
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.3 lda (ZPLookupSymPtr) SYM.T
|
|
||||||
sta ZPPtr2 T
|
|
||||||
|
|
||||||
ldy #SYM.Q
|
|
||||||
lda (ZPLookupSymPtr),y
|
|
||||||
sta ZPPtr2+1 Q
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 lda #E.TMISMATCH
|
|
||||||
sec
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* POSTOPS
|
* POSTOPS
|
||||||
|
@ -559,17 +568,76 @@ CC.EXP.postdec lda ExpState
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.array ldy #SYM.Q
|
CC.EXP.Idx ldy #SYM.Q
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
and #SYM.Q.AAARRAY
|
|
||||||
beq .39
|
|
||||||
|
|
||||||
ldy #SYM.Def
|
bit #SYM.Q.AAARRAY
|
||||||
|
bne CC.EXP.array
|
||||||
|
|
||||||
|
and #SYM.Q.PPPOINTER
|
||||||
|
cmp #SYM.Q.POINTER
|
||||||
|
bne .98
|
||||||
|
|
||||||
|
lda (ZPLookupSymPtr),y
|
||||||
|
eor #SYM.Q.POINTER+SYM.Q.ARRAY
|
||||||
|
sta (ZPLookupSymPtr),y convert from *type to type[]
|
||||||
|
|
||||||
|
jsr CC.EXP.GetAddr2
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>LDYA L.PCC.PushDeref2
|
||||||
|
jsr CODE.EmitPCC
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CC.EXP.array.getIdx ...int16 on stack...
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CC.EXP.GetSymSizeOfInAXC
|
||||||
|
cmp #1
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
cpx #0
|
||||||
|
beq .2 sizeof=1, no MUL required
|
||||||
|
|
||||||
|
.1 jsr CODE.PUSHAXI ...sizeof on stack...
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
ldx #FPU.wMUL
|
||||||
|
jsr CODE.FPUCALL ...sizeof*int16...
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
.2 ldx #FPU.wAdd
|
||||||
|
jsr CODE.FPUCALL ...add to base address
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CC.GetCharNB
|
||||||
|
bcs .97
|
||||||
|
|
||||||
|
cmp #']'
|
||||||
|
bne .97
|
||||||
|
|
||||||
|
jsr CC.GetNextCharNB skip ']'
|
||||||
|
|
||||||
|
lda #ExpState.AonStack
|
||||||
|
sta ExpState
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.97 lda #E.ESYN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.98 lda #E.TMISMATCH
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CC.EXP.array ldy #SYM.Def
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
iny
|
iny
|
||||||
ora (ZPLookupSymPtr),y
|
ora (ZPLookupSymPtr),y
|
||||||
beq .1
|
beq .1
|
||||||
|
* jsr CODE.DEBUG
|
||||||
jsr CC.EXP.PushAddr array[int]...
|
jsr CC.EXP.PushAddr array[int]...
|
||||||
bcc .2
|
bcc .2
|
||||||
|
|
||||||
|
@ -581,7 +649,7 @@ CC.EXP.array ldy #SYM.Q
|
||||||
>LDYA L.PCC.PushDeref2
|
>LDYA L.PCC.PushDeref2
|
||||||
jsr CODE.EmitPCC
|
jsr CODE.EmitPCC
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.2 jsr CC.EXP.array.getIdx ...int16 on stack...
|
.2 jsr CC.EXP.array.getIdx ...int16 on stack...
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -589,11 +657,11 @@ CC.EXP.array ldy #SYM.Q
|
||||||
jsr CODE.PUSHAXI ...sizeof on stack...
|
jsr CODE.PUSHAXI ...sizeof on stack...
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldx #FPU.iMUL
|
ldx #FPU.wMUL
|
||||||
jsr CODE.FPUCALL ...sizeof*int16...
|
jsr CODE.FPUCALL ...sizeof*int16...
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldx #FPU.iAdd
|
ldx #FPU.wAdd
|
||||||
jsr CODE.FPUCALL ...add to base address
|
jsr CODE.FPUCALL ...add to base address
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -621,17 +689,17 @@ CC.EXP.array ldy #SYM.Q
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
jsr CODE.PUSHAXI [][SIZE] on stack
|
jsr CODE.PUSHAXI [][SIZE] on stack
|
||||||
|
|
||||||
ldx #FPU.iMUL
|
ldx #FPU.wMUL
|
||||||
jsr CODE.FPUCALL [][SIZE] * int16 on stack
|
jsr CODE.FPUCALL [][SIZE] * int16 on stack
|
||||||
|
|
||||||
jsr CC.EXP.GetSymSizeOfInAXC
|
jsr CC.EXP.GetSymSizeOfInAXC
|
||||||
jsr CODE.PUSHAXI ...sizeof on stack...
|
jsr CODE.PUSHAXI ...sizeof on stack...
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldx #FPU.iMUL
|
ldx #FPU.wMUL
|
||||||
jsr CODE.FPUCALL ...sizeof*int16...
|
jsr CODE.FPUCALL ...sizeof*int16...
|
||||||
|
|
||||||
ldx #FPU.iAdd
|
ldx #FPU.wAdd
|
||||||
jsr CODE.FPUCALL ...add to base address
|
jsr CODE.FPUCALL ...add to base address
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
@ -698,10 +766,12 @@ CC.EXP.PREOPS bmi .8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.EXP.Ref ldy #SYM.Q
|
CC.EXP.Ref ldy #SYM.Q
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
|
|
||||||
clc
|
clc
|
||||||
adc #SYM.Q.POINTER
|
adc #SYM.Q.POINTER
|
||||||
bcs .9 more than ***
|
bcs .9 more than ***
|
||||||
|
|
||||||
|
and #%11001111
|
||||||
sta (ZPLookupSymPtr),y
|
sta (ZPLookupSymPtr),y
|
||||||
|
|
||||||
bit ExpState
|
bit ExpState
|
||||||
|
@ -906,10 +976,21 @@ CC.EXP.PushValue
|
||||||
jsr CC.EXP.GetSymSizeOfInAXC
|
jsr CC.EXP.GetSymSizeOfInAXC
|
||||||
tay
|
tay
|
||||||
dey
|
dey
|
||||||
jsr CODE.LDYI
|
bne .1
|
||||||
|
|
||||||
|
>LDYA L.PCC.PushValue1
|
||||||
|
jmp CODE.EmitPCC
|
||||||
|
|
||||||
|
.1 cpy #1
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
>LDYA L.PCC.PushValue2
|
||||||
|
jmp CODE.EmitPCC
|
||||||
|
|
||||||
|
.2 jsr CODE.LDYI
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>LDYA L.PCC.PushValue
|
>LDYA L.PCC.PushValueY
|
||||||
jmp CODE.EmitPCC
|
jmp CODE.EmitPCC
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
|
|
|
@ -165,9 +165,6 @@ CC.F.Def.END >LDYA L.PCC.LEAVE
|
||||||
jsr CODE.EmitPCC
|
jsr CODE.EmitPCC
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
jsr CC.Pop T
|
|
||||||
jsr CC.Pop Q
|
|
||||||
|
|
||||||
jsr CC.SYM.FreeScope
|
jsr CC.SYM.FreeScope
|
||||||
|
|
||||||
stz LocalPtr back to global
|
stz LocalPtr back to global
|
||||||
|
@ -208,33 +205,11 @@ CC.F.CallRetV sec
|
||||||
jsr CODE.nAddLocal
|
jsr CODE.nAddLocal
|
||||||
|
|
||||||
.20 jsr CC.GetNextCharNB skip '('
|
.20 jsr CC.GetNextCharNB skip '('
|
||||||
bcs .10
|
bcs .90
|
||||||
|
|
||||||
ldy #SYM.Q
|
jsr CC.SYM.LookupCheckTQ
|
||||||
* >DEBUG
|
bcs .93
|
||||||
lda ZPPtr2 expected T
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
lda (ZPLookupSymPtr) no check required
|
|
||||||
sta ZPPtr2
|
|
||||||
|
|
||||||
lda (ZPLookupSymPtr),y
|
|
||||||
and #$fC ignore SYM.Q.FUNC,SYM.Q.FASTCALL
|
|
||||||
bra .2
|
|
||||||
|
|
||||||
.1 cmp #SYM.T.VOID
|
|
||||||
beq .11
|
|
||||||
|
|
||||||
cmp (ZPLookupSymPtr)
|
|
||||||
bne .91
|
|
||||||
|
|
||||||
.11 lda (ZPLookupSymPtr),y
|
|
||||||
and #$fC ignore SYM.Q.FUNC,SYM.Q.FASTCALL
|
|
||||||
cmp ZPPtr2+1 expected Q
|
|
||||||
bne .91
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.2 sta ZPPtr2+1
|
|
||||||
|
|
||||||
stz ZPPtr1 Reset VARIADIC byte count
|
stz ZPPtr1 Reset VARIADIC byte count
|
||||||
|
|
||||||
lda #SYM.Def
|
lda #SYM.Def
|
||||||
|
@ -274,12 +249,12 @@ CC.F.CallRetV sec
|
||||||
|
|
||||||
.5 jsr CC.GetCharNB
|
.5 jsr CC.GetCharNB
|
||||||
|
|
||||||
.10 bcs .90
|
bcs .90
|
||||||
|
|
||||||
cmp #','
|
cmp #','
|
||||||
bne .6
|
bne .6
|
||||||
|
|
||||||
jsr CC.GetNextCharNB Skip ','
|
jsr CC.GetNextCharNBNL Skip ','
|
||||||
|
|
||||||
jsr CC.F.GetTQ
|
jsr CC.F.GetTQ
|
||||||
bne .3 Another ARG....
|
bne .3 Another ARG....
|
||||||
|
@ -310,9 +285,6 @@ CC.F.CallRetV sec
|
||||||
bra .93
|
bra .93
|
||||||
|
|
||||||
.90 lda #E.CSYN
|
.90 lda #E.CSYN
|
||||||
bra .92
|
|
||||||
|
|
||||||
.91 lda #E.TMISMATCH
|
|
||||||
|
|
||||||
.92 sec
|
.92 sec
|
||||||
|
|
||||||
|
@ -375,8 +347,8 @@ CC.F.Call2 ldy #SYM.Q
|
||||||
.5
|
.5
|
||||||
ldy #SYM.Addr+1
|
ldy #SYM.Addr+1
|
||||||
lda (ZPLookupSymPtr),y
|
lda (ZPLookupSymPtr),y
|
||||||
cmp #3
|
cmp #3+LIBS.MAX
|
||||||
bcs .8 not a SYS/FPU call...Ret value on stack
|
bcs .8 not a SYS/FPU/LIB call...Ret value on stack
|
||||||
|
|
||||||
>LDYA ZPPtr2 function T/Q
|
>LDYA ZPPtr2 function T/Q
|
||||||
jsr CC.TYPE.SizeOf
|
jsr CC.TYPE.SizeOf
|
||||||
|
@ -419,7 +391,12 @@ CC.F.Call3 ldy #SYM.Addr+1
|
||||||
|
|
||||||
jmp CODE.FPUCALL
|
jmp CODE.FPUCALL
|
||||||
|
|
||||||
.2 lda #$EA NOP
|
.2 cpy #3+LIBS.MAX
|
||||||
|
bcs .3
|
||||||
|
|
||||||
|
jmp CODE.LIBCALL
|
||||||
|
|
||||||
|
.3 lda #$EA NOP
|
||||||
jsr CODE.EmitByte
|
jsr CODE.EmitByte
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,62 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CC.FIO.LoadLIB.o
|
||||||
|
>LDA.G LibCount
|
||||||
|
cmp #LIBS.MAX
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
lda #E.OOH
|
||||||
|
sec
|
||||||
|
.9 rts
|
||||||
|
|
||||||
|
.1 clc
|
||||||
|
adc #hLibNs
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda ArgIndex
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
>PUSHW L.ENV.LIB
|
||||||
|
>PUSHW pData >PUSHEA.G PathBuf
|
||||||
|
>SYSCALL GetEnv
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>PUSHW pData
|
||||||
|
|
||||||
|
lda ArgIndex
|
||||||
|
>SYSCALL ArgV
|
||||||
|
>PUSHYA
|
||||||
|
>SYSCALL strcat
|
||||||
|
|
||||||
|
>PUSHW pData
|
||||||
|
>PUSHW L.LIB.O
|
||||||
|
>SYSCALL strcat
|
||||||
|
|
||||||
|
>PUSHW L.MSG.READING
|
||||||
|
>PUSHW pData
|
||||||
|
>PUSHBI 2
|
||||||
|
>SYSCALL PrintF
|
||||||
|
|
||||||
|
>PUSHW pData
|
||||||
|
>PUSHBI O.RDONLY
|
||||||
|
>PUSHBI S.FI.T.BIN
|
||||||
|
>PUSHWZ Aux type
|
||||||
|
>SYSCALL loadfile
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>LDA.G LibCount
|
||||||
|
clc
|
||||||
|
adc #hLibOs
|
||||||
|
tay
|
||||||
|
txa
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
|
>INC.G LibCount
|
||||||
|
clc
|
||||||
|
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
CC.FIO.FOpen1st >LDA.G CC.InFileArg
|
CC.FIO.FOpen1st >LDA.G CC.InFileArg
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
|
|
||||||
|
@ -100,7 +156,30 @@ CC.FIO.FClose >LDA.G hFilePtr
|
||||||
|
|
||||||
.8 rts
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.FIO.FCreate >LDA.G CC.OutFileArg
|
CC.FIO.FCreate lda ZPCCCode+1
|
||||||
|
sta PCC.FH+PCC.FH.CONST+1
|
||||||
|
sec
|
||||||
|
sbc #$20
|
||||||
|
sta PCC.FH+PCC.FH.CSSIZE+1
|
||||||
|
|
||||||
|
lda ZPCCCode
|
||||||
|
sta PCC.FH+PCC.FH.CSSIZE
|
||||||
|
sta PCC.FH+PCC.FH.CONST
|
||||||
|
clc
|
||||||
|
adc ZPCCConst
|
||||||
|
sta PCC.FH+PCC.FH.LIBS
|
||||||
|
|
||||||
|
lda ZPCCCode+1
|
||||||
|
adc ZPCCConst+1
|
||||||
|
sta PCC.FH+PCC.FH.LIBS+1
|
||||||
|
|
||||||
|
lda ZPCCData
|
||||||
|
sta PCC.FH+PCC.FH.DSSIZE
|
||||||
|
|
||||||
|
lda ZPCCData+1
|
||||||
|
sta PCC.FH+PCC.FH.DSSIZE+1
|
||||||
|
|
||||||
|
>LDA.G CC.OutFileArg
|
||||||
>SYSCALL ArgV
|
>SYSCALL ArgV
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
|
|
148
BIN/CC.S.KW.txt
148
BIN/CC.S.KW.txt
|
@ -3,7 +3,7 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Built in Keywords
|
* Built in Keywords
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.IF jsr CC.KW.BEGIN
|
CC.KW.IF jsr CC.KW.BEGIN00
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jsr CC.GetCharNB
|
jsr CC.GetCharNB
|
||||||
|
@ -96,7 +96,7 @@ CC.KW.ELSE.END lda #'X' define EXIT Label
|
||||||
clv pop context
|
clv pop context
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.WHILE jsr CC.KW.BEGIN
|
CC.KW.WHILE jsr CC.KW.BEGIN00
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'C' define CONT Label
|
lda #'C' define CONT Label
|
||||||
|
@ -153,7 +153,7 @@ CC.KW.WHILE.END lda #'C'
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.DO jsr CC.KW.BEGIN
|
CC.KW.DO jsr CC.KW.BEGIN00
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
lda #'C' define CONT Label
|
lda #'C' define CONT Label
|
||||||
|
@ -233,7 +233,7 @@ CC.KW.FOR jsr CC.GetCharNB
|
||||||
cmp #'('
|
cmp #'('
|
||||||
bne .29
|
bne .29
|
||||||
|
|
||||||
jsr CC.KW.BEGIN
|
jsr CC.KW.BEGIN00
|
||||||
bcs .29
|
bcs .29
|
||||||
|
|
||||||
jsr CC.GetNextCharNB skip '('
|
jsr CC.GetNextCharNB skip '('
|
||||||
|
@ -340,12 +340,123 @@ CC.KW.FOR.END lda #$60
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.SWITCH
|
CC.KW.SWITCH jsr CC.GetCharNB
|
||||||
CC.KW.CASE
|
bcs .98
|
||||||
CC.KW.DEFAULT
|
|
||||||
lda #E.CSYN
|
cmp #'('
|
||||||
|
bne .98
|
||||||
|
|
||||||
|
jsr CC.GetNextCharNB
|
||||||
|
bcs .98
|
||||||
|
|
||||||
|
jsr CC.EXP.Eval00 Any var type
|
||||||
|
bcs .99 Y,A=T/Q
|
||||||
|
|
||||||
|
tax
|
||||||
|
bne .97
|
||||||
|
|
||||||
|
cpy #SYM.T.UCHAR
|
||||||
|
bcc .97
|
||||||
|
|
||||||
|
cpy #SYM.T.FLOAT
|
||||||
|
bcs .97
|
||||||
|
|
||||||
|
phy
|
||||||
|
tya
|
||||||
|
jsr CC.Push push integral type
|
||||||
|
ply
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
lda CC.TYPESIZE-1,y
|
||||||
|
|
||||||
|
jsr CC.Push push SizeOf(type)
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CC.KW.BEGIN
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CC.GetCharNB
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
cmp #')'
|
||||||
|
bne .98
|
||||||
|
|
||||||
|
jmp CC.KW.STMT
|
||||||
|
|
||||||
|
.97 lda #E.TMISMATCH
|
||||||
sec
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.98 lda #E.CSYN
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CC.KW.SWITCH.END
|
||||||
|
lda #'B' define BREAK Label
|
||||||
|
jsr CC.KW.NewLabel
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
clv pop context
|
||||||
|
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CC.KW.CASE ldy CStackPtr
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
iny skip ; or }
|
||||||
|
lda (ZPCCStack),y
|
||||||
|
cmp #10 SWITCH ??
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
lda CStackPtr
|
||||||
|
clc
|
||||||
|
adc #7
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda (ZPCCStack),y type
|
||||||
|
tay
|
||||||
|
lda #0 for integral type
|
||||||
|
|
||||||
|
jsr CC.EXP.Eval
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CC.GetCharNB
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
cmp #':'
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
jsr CC.GetNextCharNB skip ':'
|
||||||
|
|
||||||
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.9 lda #E.CSYN
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CC.KW.DEFAULT ldy CStackPtr
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
iny skip ; or }
|
||||||
|
lda (ZPCCStack),y
|
||||||
|
cmp #10 SWITCH ??
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
jsr CC.GetCharNB
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
cmp #':'
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
jsr CC.GetNextCharNB skip ':'
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #E.CSYN
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.BREAK lda #'B'
|
CC.KW.BREAK lda #'B'
|
||||||
|
|
||||||
|
@ -375,8 +486,6 @@ CC.KW.RETURN ldy CStackPtr
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
.1 iny skip ; or }
|
.1 iny skip ; or }
|
||||||
beq .9
|
|
||||||
|
|
||||||
lda (ZPCCStack),y
|
lda (ZPCCStack),y
|
||||||
bmi .7 f()
|
bmi .7 f()
|
||||||
|
|
||||||
|
@ -457,6 +566,19 @@ CC.KW.STRUCT >ENTER 4
|
||||||
.99 >LEAVE
|
.99 >LEAVE
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
CC.KW.UNION
|
||||||
|
CC.KW.ENUM
|
||||||
|
lda #E.CSYN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CC.KW.BEGIN00 lda #0
|
||||||
|
jsr CC.Push no T/Q
|
||||||
|
bcs CC.KW.BEGIN.RTS
|
||||||
|
|
||||||
|
jsr CC.Push
|
||||||
|
bcs CC.KW.BEGIN.RTS
|
||||||
|
|
||||||
CC.KW.BEGIN jsr CC.SYM.NewCPSID
|
CC.KW.BEGIN jsr CC.SYM.NewCPSID
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
|
@ -479,7 +601,8 @@ CC.KW.BEGIN jsr CC.SYM.NewCPSID
|
||||||
>LDA.G CC.CmdSave
|
>LDA.G CC.CmdSave
|
||||||
jmp CC.Push
|
jmp CC.Push
|
||||||
|
|
||||||
.99 rts
|
.99
|
||||||
|
CC.KW.BEGIN.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.KW.STMT jsr CC.GetNextCharNBNL
|
CC.KW.STMT jsr CC.GetNextCharNBNL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -558,6 +681,9 @@ CC.KW.LookupLabel
|
||||||
lda (ZPCCStack),y
|
lda (ZPCCStack),y
|
||||||
iny
|
iny
|
||||||
|
|
||||||
|
iny
|
||||||
|
iny
|
||||||
|
|
||||||
sty ArgIndex
|
sty ArgIndex
|
||||||
|
|
||||||
ply
|
ply
|
||||||
|
|
|
@ -24,7 +24,7 @@ CC.Link >LDYA L.MSG.LINKING
|
||||||
>PUSHWI $ffff All
|
>PUSHWI $ffff All
|
||||||
>PUSHWZ from Start
|
>PUSHWZ from Start
|
||||||
>SYSCALL SListGetData
|
>SYSCALL SListGetData
|
||||||
bcs .9
|
bcs .99
|
||||||
|
|
||||||
ldy #SYM.Addr+1
|
ldy #SYM.Addr+1
|
||||||
lda (ZPSymBufPtr),y
|
lda (ZPSymBufPtr),y
|
||||||
|
@ -32,74 +32,124 @@ CC.Link >LDYA L.MSG.LINKING
|
||||||
ora (ZPSymBufPtr),y
|
ora (ZPSymBufPtr),y
|
||||||
bne .6
|
bne .6
|
||||||
|
|
||||||
jsr CC.Link.LIBC
|
jsr CC.Link.Lookup
|
||||||
bcc .6
|
bcs .9
|
||||||
|
|
||||||
jsr CC.Link.Dump
|
jsr CC.Link.Update
|
||||||
lda #E.FUNDEF
|
bcs .99
|
||||||
sec
|
|
||||||
bra .9
|
|
||||||
|
|
||||||
.6 >LDA.G bTrace
|
.6 >LDA.G bTrace
|
||||||
bpl .7
|
bpl .7
|
||||||
|
|
||||||
jsr CC.Link.Dump
|
jsr CC.Link.Dump
|
||||||
bcs .9
|
bcs .99
|
||||||
|
|
||||||
.7 >LDYA ZPPtr2
|
.7 >LDYA ZPPtr2
|
||||||
jmp .1
|
jmp .1
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
.9 rts
|
.9 jsr CC.Link.Dump
|
||||||
|
lda #E.FUNDEF
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Input : pData = Symbol
|
* Input : pData = Symbol
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.Link.LIBC >LDYA L.CC.LIBC
|
CC.Link.Lookup >LDYA L.CC.SYSCALL
|
||||||
|
jsr CC.Link.LookupYA
|
||||||
|
ldx #1
|
||||||
|
bcc .99
|
||||||
|
|
||||||
|
>LDYA L.CC.FPUCALL
|
||||||
|
jsr CC.Link.LookupYA
|
||||||
|
ldx #2
|
||||||
|
bcc .99
|
||||||
|
|
||||||
|
>LDA.G LibCount
|
||||||
|
* sec
|
||||||
|
beq .99
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta ArgIndex
|
||||||
|
clc
|
||||||
|
|
||||||
|
.1 adc #hLibOs
|
||||||
|
tay
|
||||||
|
lda (pData),y
|
||||||
|
|
||||||
|
>SYSCALL GetMemPtr
|
||||||
|
jsr CC.Link.LookupYA
|
||||||
|
bcs .2
|
||||||
|
|
||||||
|
ldx ArgIndex
|
||||||
|
inx
|
||||||
|
inx
|
||||||
|
inx
|
||||||
|
rts
|
||||||
|
|
||||||
|
.2 inc ArgIndex
|
||||||
|
lda ArgIndex
|
||||||
|
>CMP.G LibCount
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CC.Link.LookupYA
|
||||||
>STYA ZPLookupPtr
|
>STYA ZPLookupPtr
|
||||||
|
|
||||||
ldy #$ff
|
ldy #$ff
|
||||||
|
|
||||||
.10 iny
|
.1 iny
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
bne .10
|
bne .1
|
||||||
|
|
||||||
phy Symbol Len
|
tya
|
||||||
|
tax Symbol Len
|
||||||
|
|
||||||
ldx #0
|
.2 lda (ZPLookupPtr)
|
||||||
|
|
||||||
.1 lda (ZPLookupPtr)
|
|
||||||
beq .9 Ending 0, not found....
|
beq .9 Ending 0, not found....
|
||||||
|
|
||||||
pla
|
txa Get Back Len
|
||||||
pha Get Back Len
|
|
||||||
cmp (ZPLookupPtr) Same Len ?
|
cmp (ZPLookupPtr) Same Len ?
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
tay
|
tay
|
||||||
|
|
||||||
.2 lda (ZPLookupPtr),y
|
.3 lda (ZPLookupPtr),y
|
||||||
|
|
||||||
dey
|
dey
|
||||||
cmp (pData),y
|
cmp (pData),y
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
tya
|
tya
|
||||||
bne .2
|
bne .3
|
||||||
|
|
||||||
lda (ZPLookupPtr)
|
lda (ZPLookupPtr)
|
||||||
jsr CC.ZPLookupPtrAddAp1 Skip LEN\Symbol
|
tay
|
||||||
|
iny
|
||||||
|
lda (ZPLookupPtr),y get fID
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
ldy #2 Skip LEN
|
.4 lda (ZPLookupPtr)
|
||||||
lda (ZPLookupPtr),y
|
inc
|
||||||
pha
|
jsr CC.ZPLookupPtrAddAp1 Skip LEN\Symbol\ID
|
||||||
dey
|
bra .2
|
||||||
lda (ZPLookupPtr),y
|
|
||||||
ply
|
|
||||||
|
|
||||||
jsr CC.SYM.SetAddrYA
|
.9 sec
|
||||||
|
rts
|
||||||
plx
|
*--------------------------------------
|
||||||
|
* A=ID X=SYS|FPU|LIB
|
||||||
|
*--------------------------------------
|
||||||
|
CC.Link.Update ldy #SYM.Addr
|
||||||
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
|
iny
|
||||||
|
txa
|
||||||
|
sta (ZPSymBufPtr),y
|
||||||
|
|
||||||
>PUSHB.G CC.hScopes
|
>PUSHB.G CC.hScopes
|
||||||
>PUSHW ZPPtr1 SymID
|
>PUSHW ZPPtr1 SymID
|
||||||
|
@ -110,20 +160,6 @@ CC.Link.LIBC >LDYA L.CC.LIBC
|
||||||
>PUSHA
|
>PUSHA
|
||||||
>SYSCALL SListSetData
|
>SYSCALL SListSetData
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.4 inx
|
|
||||||
inx
|
|
||||||
|
|
||||||
lda (ZPLookupPtr)
|
|
||||||
jsr CC.ZPLookupPtrAddAp1 Skip LEN\Symbol
|
|
||||||
|
|
||||||
lda (ZPLookupPtr)
|
|
||||||
jsr CC.ZPLookupPtrAddAp1 Skip LEN\definition
|
|
||||||
bra .1
|
|
||||||
|
|
||||||
.9 plx
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.Link.Dump >PUSHW L.MSG.LINKING2
|
CC.Link.Dump >PUSHW L.MSG.LINKING2
|
||||||
|
|
||||||
|
|
191
BIN/CC.S.PCC.txt
191
BIN/CC.S.PCC.txt
|
@ -7,16 +7,16 @@ ZS.RT.Ptr1 .EQ ZPBIN
|
||||||
ZS.RT.Ptr2 .EQ ZPBIN+2
|
ZS.RT.Ptr2 .EQ ZPBIN+2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.FH .PH $2000
|
PCC.FH .PH $2000
|
||||||
PCC.FH.2000 cld
|
PCC.FH.ORG cld
|
||||||
jmp (PCC.FH.JMP,x)
|
jmp (PCC.FH.JMP,x)
|
||||||
.DA #$61 6502,Level 1 (65c02)
|
.DA #$61 6502,Level 1 (65c02)
|
||||||
.DA #1 BIN Layout Version 1
|
.DA #1 BIN Layout Version 1
|
||||||
.DA #0 S.PS.F.EVENT
|
.DA #0 S.PS.F.EVENT
|
||||||
.DA #0
|
.DA #0
|
||||||
PCC.FH.CSSIZE .EQ *-PCC.FH.2000
|
PCC.FH.CSSIZE .EQ *-PCC.FH.ORG
|
||||||
.DA $FFFF * Code Size (without Constants)
|
.DA $FFFF Code Size (without Constants)
|
||||||
PCC.FH.DSSIZE .EQ *-PCC.FH.2000
|
PCC.FH.DSSIZE .EQ *-PCC.FH.ORG
|
||||||
.DA $FFFF * Data Size
|
.DA $FFFF Data Size
|
||||||
.DA #256 Stack Size
|
.DA #256 Stack Size
|
||||||
.DA #4 ZP Size
|
.DA #4 ZP Size
|
||||||
.DA 0
|
.DA 0
|
||||||
|
@ -25,15 +25,83 @@ PCC.FH.JMP .DA PCC.FH.INIT
|
||||||
.DA PCC.FH.RUN
|
.DA PCC.FH.RUN
|
||||||
.DA PCC.FH.DOEVENT
|
.DA PCC.FH.DOEVENT
|
||||||
.DA PCC.FH.QUIT
|
.DA PCC.FH.QUIT
|
||||||
PCC.FH.IDATA .EQ *-PCC.FH.2000
|
PCC.FH.CONST .EQ *-PCC.FH.ORG
|
||||||
|
.DA $FFFF
|
||||||
|
PCC.FH.LIBS .EQ *-PCC.FH.ORG
|
||||||
.DA $FFFF
|
.DA $FFFF
|
||||||
.DA 0
|
.DA 0
|
||||||
|
|
||||||
PCC.FH.INIT
|
PCC.FH.INIT >LDYA PCC.FH.ORG+PCC.FH.LIBS
|
||||||
* TODO : LoadLib code
|
>STYA ZS.RT.Ptr1
|
||||||
PCC.FH.QUIT
|
|
||||||
* TODO : UnloadLib code
|
ldx #0
|
||||||
PCC.FH.DOEVENT clc
|
|
||||||
|
.1 lda (ZS.RT.Ptr1)
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
phx
|
||||||
|
|
||||||
|
>LDYA ZS.RT.Ptr1
|
||||||
|
>SYSCALL LoadLib
|
||||||
|
plx
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
sta PCC.PH.hLIBs,x
|
||||||
|
phx
|
||||||
|
>SYSCALL GetMemPtr
|
||||||
|
plx
|
||||||
|
>STYA PCC.PH.JMPLIBs+1,x
|
||||||
|
inx
|
||||||
|
inx
|
||||||
|
inx
|
||||||
|
inx
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.2 iny
|
||||||
|
lda (ZS.RT.Ptr1),y
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
tya
|
||||||
|
sec
|
||||||
|
adc ZS.RT.Ptr1
|
||||||
|
sta ZS.RT.Ptr1
|
||||||
|
bcc .1
|
||||||
|
|
||||||
|
inc ZS.RT.Ptr1+1
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
.9 rts
|
||||||
|
|
||||||
|
PCC.FH.QUIT ldx #12
|
||||||
|
|
||||||
|
.1 lda PCC.PH.hLIBs,x
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
phx
|
||||||
|
>SYSCALL UnloadLib
|
||||||
|
plx
|
||||||
|
|
||||||
|
.2 dex
|
||||||
|
dex
|
||||||
|
dex
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
PCC.PH.hLIBs .DA #0
|
||||||
|
PCC.PH.JMPLIBs jmp $FFFF
|
||||||
|
.DA #0
|
||||||
|
jmp $FFFF
|
||||||
|
.DA #0
|
||||||
|
jmp $FFFF
|
||||||
|
.DA #0
|
||||||
|
jmp $FFFF
|
||||||
|
|
||||||
|
PCC.FH.DOEVENT sec do not discard TIMER event
|
||||||
rts
|
rts
|
||||||
|
|
||||||
* int main(int argc, char *argv[]) ;
|
* int main(int argc, char *argv[]) ;
|
||||||
|
@ -66,17 +134,20 @@ PCC.FH.RUN lda #0
|
||||||
|
|
||||||
jsr PCC.FH.CS Execute INIT code
|
jsr PCC.FH.CS Execute INIT code
|
||||||
|
|
||||||
>PUSHWZ returned int=0
|
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
|
>PUSHA returned int=0
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
|
>PUSHA int ARGC (hi byte)
|
||||||
|
|
||||||
ldy #S.PS.ARGC
|
ldy #S.PS.ARGC
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
>PUSHA int ARGC
|
>PUSHA int ARGC (lo byte)
|
||||||
|
|
||||||
>PUSHW pData *char[] ARGV
|
>PUSHW pData *char[] ARGV
|
||||||
* >DEBUG
|
* >DEBUG
|
||||||
PCC.FH.MAIN .EQ *-PCC.FH.2000+1
|
PCC.FH.MAIN .EQ *-PCC.FH.ORG+1
|
||||||
jsr $FFFF * jsr main
|
jsr $FFFF jsr main
|
||||||
>PULLA
|
>PULLA
|
||||||
inc pStack pull returned int
|
inc pStack pull returned int
|
||||||
sec
|
sec
|
||||||
|
@ -213,12 +284,12 @@ PCC.PushLAddrL.L .EQ *-PCC.PushLAddrL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.PushIAddr .DA #PCC.PushIAddr.L
|
PCC.PushIAddr .DA #PCC.PushIAddr.L
|
||||||
clc
|
clc
|
||||||
adc PCC.FH.2000+PCC.FH.IDATA
|
adc PCC.FH.ORG+PCC.FH.CONST
|
||||||
dec pStack
|
dec pStack
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
|
||||||
txa
|
txa
|
||||||
adc PCC.FH.2000+PCC.FH.IDATA+1
|
adc PCC.FH.ORG+PCC.FH.CONST+1
|
||||||
ldy #1
|
ldy #1
|
||||||
sta (pStack),y
|
sta (pStack),y
|
||||||
|
|
||||||
|
@ -248,10 +319,10 @@ PCC.GetLAddr1.L .EQ *-PCC.GetLAddr1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.GetIAddr1 .DA #PCC.GetIAddr1.L
|
PCC.GetIAddr1 .DA #PCC.GetIAddr1.L
|
||||||
clc
|
clc
|
||||||
adc PCC.FH.2000+PCC.FH.IDATA
|
adc PCC.FH.ORG+PCC.FH.CONST
|
||||||
sta ZS.RT.Ptr1
|
sta ZS.RT.Ptr1
|
||||||
txa
|
txa
|
||||||
adc PCC.FH.2000+PCC.FH.IDATA+1
|
adc PCC.FH.ORG+PCC.FH.CONST+1
|
||||||
sta ZS.RT.Ptr1+1
|
sta ZS.RT.Ptr1+1
|
||||||
|
|
||||||
PCC.GetIAddr1.L .EQ *-PCC.GetIAddr1
|
PCC.GetIAddr1.L .EQ *-PCC.GetIAddr1
|
||||||
|
@ -274,13 +345,32 @@ PCC.PopAddr1 .DA #PCC.PopAddr1.L
|
||||||
|
|
||||||
PCC.PopAddr1.L .EQ *-PCC.PopAddr1
|
PCC.PopAddr1.L .EQ *-PCC.PopAddr1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.SetValue .DA #PCC.SetValue.L
|
PCC.PopValue1 .DA #PCC.PopValue1.L
|
||||||
.1 lda (pStack),y
|
>PULLA
|
||||||
|
sta (ZS.RT.Ptr1)
|
||||||
|
|
||||||
|
PCC.PopValue1.L .EQ *-PCC.PopValue1
|
||||||
|
*--------------------------------------
|
||||||
|
PCC.PopValue2 .DA #PCC.PopValue2.L
|
||||||
|
>PULLA
|
||||||
|
sta (ZS.RT.Ptr1)
|
||||||
|
>PULLA
|
||||||
|
ldy #1
|
||||||
sta (ZS.RT.Ptr1),y
|
sta (ZS.RT.Ptr1),y
|
||||||
dey
|
|
||||||
|
PCC.PopValue2.L .EQ *-PCC.PopValue2
|
||||||
|
*--------------------------------------
|
||||||
|
PCC.PopValueX .DA #PCC.PopValueX.L
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
.1 >PULLA
|
||||||
|
sta (ZS.RT.Ptr1),y
|
||||||
|
iny
|
||||||
|
dex
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
PCC.SetValue.L .EQ *-PCC.SetValue
|
PCC.PopValueX.L .EQ *-PCC.PopValueX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.GetLAddr2 .DA #PCC.GetLAddr2.L
|
PCC.GetLAddr2 .DA #PCC.GetLAddr2.L
|
||||||
clc
|
clc
|
||||||
|
@ -293,10 +383,10 @@ PCC.GetLAddr2.L .EQ *-PCC.GetLAddr2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.GetIAddr2 .DA #PCC.GetIAddr2.L
|
PCC.GetIAddr2 .DA #PCC.GetIAddr2.L
|
||||||
clc
|
clc
|
||||||
adc PCC.FH.2000+PCC.FH.IDATA
|
adc PCC.FH.ORG+PCC.FH.CONST
|
||||||
sta ZS.RT.Ptr2
|
sta ZS.RT.Ptr2
|
||||||
txa
|
txa
|
||||||
adc PCC.FH.2000+PCC.FH.IDATA+1
|
adc PCC.FH.ORG+PCC.FH.CONST+1
|
||||||
sta ZS.RT.Ptr2+1
|
sta ZS.RT.Ptr2+1
|
||||||
|
|
||||||
PCC.GetIAddr2.L .EQ *-PCC.GetIAddr2
|
PCC.GetIAddr2.L .EQ *-PCC.GetIAddr2
|
||||||
|
@ -337,14 +427,31 @@ PCC.PushDeref2 .DA #PCC.PushDeref2.L
|
||||||
|
|
||||||
PCC.PushDeref2.L .EQ *-PCC.PushDeref2
|
PCC.PushDeref2.L .EQ *-PCC.PushDeref2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.PushValue .DA #PCC.PushValue.L
|
PCC.PushValue1 .DA #PCC.PushValue1.L
|
||||||
|
|
||||||
|
lda (ZS.RT.Ptr2)
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
PCC.PushValue1.L .EQ *-PCC.PushValue1
|
||||||
|
*--------------------------------------
|
||||||
|
PCC.PushValue2 .DA #PCC.PushValue2.L
|
||||||
|
|
||||||
|
ldy #1
|
||||||
|
lda (ZS.RT.Ptr2),y
|
||||||
|
>PUSHA
|
||||||
|
lda (ZS.RT.Ptr2)
|
||||||
|
>PUSHA
|
||||||
|
|
||||||
|
PCC.PushValue2.L .EQ *-PCC.PushValue2
|
||||||
|
*--------------------------------------
|
||||||
|
PCC.PushValueY .DA #PCC.PushValueY.L
|
||||||
|
|
||||||
.1 lda (ZS.RT.Ptr2),y
|
.1 lda (ZS.RT.Ptr2),y
|
||||||
>PUSHA
|
>PUSHA
|
||||||
dey
|
dey
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
PCC.PushValue.L .EQ *-PCC.PushValue
|
PCC.PushValueY.L .EQ *-PCC.PushValueY
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.Inc1 .DA #PCC.Inc1.L
|
PCC.Inc1 .DA #PCC.Inc1.L
|
||||||
lda (ZS.RT.Ptr2)
|
lda (ZS.RT.Ptr2)
|
||||||
|
@ -433,7 +540,33 @@ PCC.Dec4 .DA #PCC.Dec4.L
|
||||||
|
|
||||||
PCC.Dec4.L .EQ *-PCC.Dec4
|
PCC.Dec4.L .EQ *-PCC.Dec4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.BOPS.bMUL
|
PCC.BOPS.bMUL .DA #PCC.BOPS.bMUL.L
|
||||||
|
ldx #0 result
|
||||||
|
|
||||||
|
>PULLA
|
||||||
|
tay b2
|
||||||
|
|
||||||
|
.1 tya
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
bcc .2
|
||||||
|
|
||||||
|
clc
|
||||||
|
txa
|
||||||
|
adc (pStack) b1
|
||||||
|
tax
|
||||||
|
|
||||||
|
.2 lda (pStack) b1*2
|
||||||
|
asl
|
||||||
|
sta (pStack)
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
.8 txa
|
||||||
|
sta (pStack)
|
||||||
|
|
||||||
|
PCC.BOPS.bMUL.L .EQ *-PCC.BOPS.bMUL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PCC.BOPS.cMUL
|
PCC.BOPS.cMUL
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -28,7 +28,7 @@ CC.STMT jsr CC.GetCharNB
|
||||||
|
|
||||||
jmp CC.SYM.LookupFree
|
jmp CC.SYM.LookupFree
|
||||||
|
|
||||||
.60 jsr CC.CORE.SetVar
|
.60 jsr STMT.SetVar
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
jmp CC.SYM.LookupFree
|
jmp CC.SYM.LookupFree
|
||||||
|
@ -36,6 +36,68 @@ CC.STMT jsr CC.GetCharNB
|
||||||
.9 lda #E.CSYN
|
.9 lda #E.CSYN
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
STMT.SetVar stz ExpState
|
||||||
|
|
||||||
|
jsr CC.EXP.POSTOPS var++, var[0]... ?
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
ldx StmtPreOp
|
||||||
|
jsr CC.EXP.PREOPS apply ++var, ....
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jsr CC.GetCharNB
|
||||||
|
bcs .90
|
||||||
|
|
||||||
|
jsr CC.IsEndArg var++; or ++var; ?
|
||||||
|
bcc .8
|
||||||
|
|
||||||
|
jsr CC.LookupAOP var=, var+= ... ?
|
||||||
|
bcs .90
|
||||||
|
|
||||||
|
cpx #0 TOTO : all AOPS
|
||||||
|
bne *
|
||||||
|
|
||||||
|
lda ExpState
|
||||||
|
bmi .90 VonStack
|
||||||
|
|
||||||
|
asl
|
||||||
|
|
||||||
|
bmi .7 AinPTR
|
||||||
|
|
||||||
|
asl
|
||||||
|
bmi .6 AonStack
|
||||||
|
|
||||||
|
jsr CC.EXP.GetAddr1
|
||||||
|
bcc .7
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
.6 >LDYA L.PCC.PopAddr1
|
||||||
|
jsr CODE.EmitPCC
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
.7 ldy #SYM.Q
|
||||||
|
lda (ZPLookupSymPtr),y
|
||||||
|
pha
|
||||||
|
lda (ZPLookupSymPtr)
|
||||||
|
tay
|
||||||
|
pla get expected T/Q
|
||||||
|
|
||||||
|
jsr CC.EXP.Eval
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
jmp CC.SYM.PopValue
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.90 lda #E.CSYN
|
||||||
|
sec
|
||||||
|
|
||||||
|
.99 rts
|
||||||
|
*--------------------------------------
|
||||||
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* X = KW.ID
|
* X = KW.ID
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -73,7 +135,7 @@ CC.STMT.Stmt.END
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
cmp #';' must be ';' on stack....
|
cmp #';' must be ';' on stack....
|
||||||
bra CC.STMT.CPStmt.POP
|
bra CC.STMT.POP
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
|
|
||||||
|
@ -85,8 +147,8 @@ CC.STMT.CPStmt.END
|
||||||
bcs CC.STMT.Stmt.RTS
|
bcs CC.STMT.Stmt.RTS
|
||||||
|
|
||||||
cmp #'}' must be '}' on stack....
|
cmp #'}' must be '}' on stack....
|
||||||
CC.STMT.CPStmt.POP
|
|
||||||
bne .98
|
CC.STMT.POP bne .98
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda (ZPCCStack),y
|
lda (ZPCCStack),y
|
||||||
|
@ -98,7 +160,7 @@ CC.STMT.CPStmt.POP
|
||||||
|
|
||||||
lda CStackPtr
|
lda CStackPtr
|
||||||
* clc
|
* clc
|
||||||
adc #5
|
adc #7
|
||||||
sta CStackPtr
|
sta CStackPtr
|
||||||
|
|
||||||
jsr CC.Pop Locals
|
jsr CC.Pop Locals
|
||||||
|
|
|
@ -613,53 +613,72 @@ CC.SYM.LookupFree
|
||||||
|
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.LookupFreeAll
|
* ZPPtr2 = expected T/Q
|
||||||
|
* ZPLookupSymPtr
|
||||||
|
*--------------------------------------
|
||||||
|
CC.SYM.LookupCheckTQ
|
||||||
|
lda ZPPtr2 target T
|
||||||
|
bne .1
|
||||||
|
|
||||||
.1 jsr CC.SYM.LookupFree
|
lda (ZPLookupSymPtr) SYM.T
|
||||||
bcc .1
|
sta ZPPtr2 T
|
||||||
|
|
||||||
|
ldy #SYM.Q
|
||||||
|
lda (ZPLookupSymPtr),y
|
||||||
|
and #$F8 ignore VOLATILE|FUNC|FASTCALL
|
||||||
|
sta ZPPtr2+1 Q
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.1 cmp #SYM.T.VOID
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
lda (ZPLookupSymPtr) SYM.T
|
||||||
|
cmp #SYM.T.VOID
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
cmp ZPPtr2 T
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
.2 lda ZPPtr2+1 Q
|
||||||
|
|
||||||
|
ldy #SYM.Q
|
||||||
|
eor (ZPLookupSymPtr),y
|
||||||
|
and #$F8 ignore VOLATILE|FUNC|FASTCALL
|
||||||
|
bne .9
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #E.TMISMATCH
|
||||||
|
sec
|
||||||
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* on RT stack : Addr,value
|
* on RT stack : Addr,value
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.SetValue jsr CC.SYM.GetSymSizeOfInAXC
|
CC.SYM.PopValue jsr CC.SYM.GetYASizeOfInAXC
|
||||||
tay
|
tax
|
||||||
dey
|
dex
|
||||||
jsr CODE.LDYI
|
bne .1
|
||||||
|
|
||||||
|
>LDYA L.PCC.PopValue1
|
||||||
|
jmp CODE.EmitPCC
|
||||||
|
|
||||||
|
.1 cpx #1
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
>LDYA L.PCC.PopValue2
|
||||||
|
jmp CODE.EmitPCC
|
||||||
|
|
||||||
|
.2 jsr CODE.LDXI
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>LDYA L.PCC.SetValue
|
>LDYA L.PCC.PopValueX
|
||||||
jmp CODE.EmitPCC
|
jmp CODE.EmitPCC
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* in : Y,A = T/Q
|
|
||||||
* out : CC
|
|
||||||
* CS, A = E.TMISMATCH
|
|
||||||
*--------------------------------------
|
|
||||||
CC.SYM.CheckTypeYA.OLD
|
|
||||||
pha
|
|
||||||
tya
|
|
||||||
cmp (ZPSymBufPtr)
|
|
||||||
bne .9
|
|
||||||
|
|
||||||
pla
|
|
||||||
|
|
||||||
ldy #SYM.Q
|
|
||||||
eor (ZPSymBufPtr),y
|
|
||||||
and #$FC ignore SYM.Q.FUNC+SYM.Q.FASTCALL
|
|
||||||
bne .9
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 pla
|
|
||||||
|
|
||||||
lda #E.TMISMATCH
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* out : Y,A = T/Q
|
* out : Y,A = T/Q
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.GetTypeInYA
|
CC.SYM.GetTypeInYA
|
||||||
|
@ -671,16 +690,6 @@ CC.SYM.GetTypeInYA
|
||||||
pla
|
pla
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* in : Y,A = T/Q
|
|
||||||
*--------------------------------------
|
|
||||||
CC.SYM.SetTypeYA.OLD
|
|
||||||
phy
|
|
||||||
ldy #SYM.Q
|
|
||||||
sta (ZPSymBufPtr),y
|
|
||||||
pla
|
|
||||||
sta (ZPSymBufPtr)
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* out : A,X,C = size
|
* out : A,X,C = size
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.SYM.GetSymSizeOfInAXC
|
CC.SYM.GetSymSizeOfInAXC
|
||||||
|
|
395
BIN/CC.S.txt
395
BIN/CC.S.txt
|
@ -11,6 +11,7 @@ NEW
|
||||||
.INB inc/mli.e.i
|
.INB inc/mli.e.i
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
FILES.MAX .EQ 4
|
FILES.MAX .EQ 4
|
||||||
|
LIBS.MAX .EQ 4
|
||||||
SCOPE.MAX .EQ 16
|
SCOPE.MAX .EQ 16
|
||||||
LOOKUP.MAX .EQ 16
|
LOOKUP.MAX .EQ 16
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -23,6 +24,9 @@ SYM.T.SINT .EQ 5
|
||||||
SYM.T.ULONG .EQ 6
|
SYM.T.ULONG .EQ 6
|
||||||
SYM.T.SLONG .EQ 7
|
SYM.T.SLONG .EQ 7
|
||||||
SYM.T.FLOAT .EQ 8
|
SYM.T.FLOAT .EQ 8
|
||||||
|
SYM.T.STRUCT .EQ 9
|
||||||
|
SYM.T.UNION .EQ 10
|
||||||
|
SYM.T.ENUM .EQ 11
|
||||||
SYM.T.VARIADIC .EQ $FF
|
SYM.T.VARIADIC .EQ $FF
|
||||||
SYM.Q .EQ 1
|
SYM.Q .EQ 1
|
||||||
SYM.Q.POINTER .EQ %01000000
|
SYM.Q.POINTER .EQ %01000000
|
||||||
|
@ -50,6 +54,12 @@ SYM.Def .EQ 8 Funtions : fTQ,a1TQ,a2TQ....
|
||||||
*
|
*
|
||||||
SYM .EQ 10
|
SYM .EQ 10
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
STRUCTF.T .EQ 0
|
||||||
|
STRUCTF.Q .EQ 1
|
||||||
|
STRUCTF.BitOfs .EQ 2
|
||||||
|
STRUCTF.BitWidth .EQ 3
|
||||||
|
STRUCTF.Name .EQ 4
|
||||||
|
*--------------------------------------
|
||||||
* Zero Page Segment, up to 32 bytes
|
* Zero Page Segment, up to 32 bytes
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
|
@ -120,6 +130,8 @@ L.MSG.ERROR .DA MSG.ERROR
|
||||||
L.MSG.SUMMARY .DA MSG.SUMMARY
|
L.MSG.SUMMARY .DA MSG.SUMMARY
|
||||||
L.MSG.NOMAIN .DA MSG.NOMAIN
|
L.MSG.NOMAIN .DA MSG.NOMAIN
|
||||||
L.ENV.INCLUDE .DA ENV.INCLUDE
|
L.ENV.INCLUDE .DA ENV.INCLUDE
|
||||||
|
L.ENV.LIB .DA ENV.LIB
|
||||||
|
L.LIB.O .DA LIB.O
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
L.CC.AOPS .DA CC.AOPS
|
L.CC.AOPS .DA CC.AOPS
|
||||||
L.CC.PREOPS .DA CC.PREOPS
|
L.CC.PREOPS .DA CC.PREOPS
|
||||||
|
@ -134,7 +146,7 @@ J.CC.PREOPS .DA CC.EXP.Ref
|
||||||
L.CC.POSTOPS .DA CC.POSTOPS
|
L.CC.POSTOPS .DA CC.POSTOPS
|
||||||
J.CC.POSTOPS .DA CC.EXP.postinc
|
J.CC.POSTOPS .DA CC.EXP.postinc
|
||||||
.DA CC.EXP.postdec
|
.DA CC.EXP.postdec
|
||||||
.DA CC.EXP.array
|
.DA CC.EXP.idx
|
||||||
.DA CC.EXP.Struct
|
.DA CC.EXP.Struct
|
||||||
.DA CC.EXP.pStruct
|
.DA CC.EXP.pStruct
|
||||||
L.CC.BOPS .DA CC.BOPS
|
L.CC.BOPS .DA CC.BOPS
|
||||||
|
@ -164,12 +176,15 @@ J.CC.KW .DA CC.KW.IF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA CC.KW.SIZEOF
|
.DA CC.KW.SIZEOF
|
||||||
.DA CC.KW.STRUCT
|
.DA CC.KW.STRUCT
|
||||||
|
.DA CC.KW.UNION
|
||||||
|
.DA CC.KW.ENUM
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
J.CC.KW.END .DA CC.KW.IF.END
|
J.CC.KW.END .DA CC.KW.IF.END
|
||||||
.DA CC.KW.WHILE.END
|
.DA CC.KW.WHILE.END
|
||||||
.DA CC.KW.ELSE.END
|
.DA CC.KW.ELSE.END
|
||||||
.DA CC.KW.DO.END
|
.DA CC.KW.DO.END
|
||||||
.DA CC.KW.FOR.END
|
.DA CC.KW.FOR.END
|
||||||
|
.DA CC.KW.SWITCH.END
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
J.CC.SCSPEC .DA CC.SCSPEC.AUTO
|
J.CC.SCSPEC .DA CC.SCSPEC.AUTO
|
||||||
.DA CC.SCSPEC.REGISTER
|
.DA CC.SCSPEC.REGISTER
|
||||||
|
@ -194,7 +209,8 @@ J.CC.STYPES .DA CC.TYPE.SCHAR
|
||||||
.DA CC.TYPE.SLONG
|
.DA CC.TYPE.SLONG
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
L.CC.MAIN .DA CC.MAIN
|
L.CC.MAIN .DA CC.MAIN
|
||||||
L.CC.LIBC .DA CC.LIBC
|
L.CC.SYSCALL .DA CC.SYSCALL
|
||||||
|
L.CC.FPUCALL .DA CC.FPUCALL
|
||||||
L.PCC.FH .DA PCC.FH
|
L.PCC.FH .DA PCC.FH
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
L.PCC.DEBUG .DA PCC.DEBUG
|
L.PCC.DEBUG .DA PCC.DEBUG
|
||||||
|
@ -217,14 +233,18 @@ L.PCC.GetLAddr1 .DA PCC.GetLAddr1
|
||||||
L.PCC.GetIAddr1 .DA PCC.GetIAddr1
|
L.PCC.GetIAddr1 .DA PCC.GetIAddr1
|
||||||
L.PCC.GetUAddr1 .DA PCC.GetUAddr1
|
L.PCC.GetUAddr1 .DA PCC.GetUAddr1
|
||||||
L.PCC.PopAddr1 .DA PCC.PopAddr1
|
L.PCC.PopAddr1 .DA PCC.PopAddr1
|
||||||
L.PCC.SetValue .DA PCC.SetValue
|
L.PCC.PopValue1 .DA PCC.PopValue1
|
||||||
|
L.PCC.PopValue2 .DA PCC.PopValue2
|
||||||
|
L.PCC.PopValueX .DA PCC.PopValueX
|
||||||
L.PCC.GetLAddr2 .DA PCC.GetLAddr2
|
L.PCC.GetLAddr2 .DA PCC.GetLAddr2
|
||||||
L.PCC.GetIAddr2 .DA PCC.GetIAddr2
|
L.PCC.GetIAddr2 .DA PCC.GetIAddr2
|
||||||
L.PCC.GetUAddr2 .DA PCC.GetUAddr2
|
L.PCC.GetUAddr2 .DA PCC.GetUAddr2
|
||||||
L.PCC.PopAddr2 .DA PCC.PopAddr2
|
L.PCC.PopAddr2 .DA PCC.PopAddr2
|
||||||
L.PCC.Deref2 .DA PCC.Deref2
|
L.PCC.Deref2 .DA PCC.Deref2
|
||||||
L.PCC.PushDeref2 .DA PCC.PushDeref2
|
L.PCC.PushDeref2 .DA PCC.PushDeref2
|
||||||
L.PCC.PushValue .DA PCC.PushValue
|
L.PCC.PushValue1 .DA PCC.PushValue1
|
||||||
|
L.PCC.PushValue2 .DA PCC.PushValue2
|
||||||
|
L.PCC.PushValueY .DA PCC.PushValueY
|
||||||
L.PCC.Inc1 .DA PCC.Inc1
|
L.PCC.Inc1 .DA PCC.Inc1
|
||||||
L.PCC.Inc2 .DA PCC.Inc2
|
L.PCC.Inc2 .DA PCC.Inc2
|
||||||
L.PCC.Inc4 .DA PCC.Inc4
|
L.PCC.Inc4 .DA PCC.Inc4
|
||||||
|
@ -304,10 +324,11 @@ CS.RUN >PUSHW L.MSG.GREETINGS
|
||||||
jsr CS.RUN.ARGS
|
jsr CS.RUN.ARGS
|
||||||
bcs CS.INIT.RTS
|
bcs CS.INIT.RTS
|
||||||
|
|
||||||
jsr CC.CORE.Init
|
jsr CORE.Init
|
||||||
bcs CS.INIT.RTS
|
bcs CS.INIT.RTS
|
||||||
|
|
||||||
jsr CODE.Init
|
jsr CODE.Init
|
||||||
|
bcs CS.INIT.RTS
|
||||||
|
|
||||||
jsr CC.FIO.FOpen1st
|
jsr CC.FIO.FOpen1st
|
||||||
bcs CS.INIT.RTS
|
bcs CS.INIT.RTS
|
||||||
|
@ -344,6 +365,9 @@ CS.RUN.CLOOP jsr CC.CompileFile
|
||||||
|
|
||||||
cmp #MLI.E.EOF
|
cmp #MLI.E.EOF
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
|
jsr CODE.EmitTail
|
||||||
|
bcs .9
|
||||||
|
|
||||||
jsr CC.FIO.FClose
|
jsr CC.FIO.FClose
|
||||||
bne .2
|
bne .2
|
||||||
|
@ -371,6 +395,7 @@ CS.RUN.ARGS inc ArgIndex
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
|
beq .90
|
||||||
|
|
||||||
ldx #OptionVars-OptionList-1
|
ldx #OptionVars-OptionList-1
|
||||||
|
|
||||||
|
@ -382,7 +407,21 @@ CS.RUN.ARGS inc ArgIndex
|
||||||
|
|
||||||
bra .90
|
bra .90
|
||||||
|
|
||||||
.2 ldy OptionVars,x
|
.2 cpx #4
|
||||||
|
bcc .3
|
||||||
|
|
||||||
|
inc ArgIndex
|
||||||
|
|
||||||
|
lda ArgIndex
|
||||||
|
>SYSCALL ArgV
|
||||||
|
bcs .90
|
||||||
|
|
||||||
|
jsr CC.FIO.LoadLIB.o
|
||||||
|
bcc CS.RUN.ARGS
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 ldy OptionVars,x
|
||||||
lda #$ff
|
lda #$ff
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
bra CS.RUN.ARGS
|
bra CS.RUN.ARGS
|
||||||
|
@ -422,9 +461,22 @@ CS.DOEVENT sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.QUIT jsr CODE.Quit
|
CS.QUIT jsr CODE.Quit
|
||||||
jsr CC.CORE.Quit
|
jsr CORE.Quit
|
||||||
|
|
||||||
|
.1 >LDA.G LibCount
|
||||||
|
beq .6
|
||||||
|
|
||||||
|
dec
|
||||||
|
sta (pData),y
|
||||||
|
|
||||||
>LDA.G hLineBuf
|
clc
|
||||||
|
adc #hLibOs
|
||||||
|
tay
|
||||||
|
lda (pData),y
|
||||||
|
>SYSCALL FreeMem
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.6 >LDA.G hLineBuf
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
>SYSCALL FreeMem
|
>SYSCALL FreeMem
|
||||||
|
@ -540,29 +592,14 @@ PrintErrorMsg >LDA.G CC.hDefineBuf
|
||||||
>SYSCALL FPrintF
|
>SYSCALL FPrintF
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
PrintSummary lda ZPCCCode+1
|
PrintSummary >PUSHW L.MSG.SUMMARY
|
||||||
sta PCC.FH+PCC.FH.IDATA+1
|
lda ZPCCCode+1
|
||||||
sec
|
sec
|
||||||
sbc #$20
|
sbc #$20
|
||||||
sta PCC.FH+PCC.FH.CSSIZE+1
|
>PUSHA
|
||||||
|
>PUSHB ZPCCCode
|
||||||
lda ZPCCCode
|
|
||||||
sta PCC.FH+PCC.FH.CSSIZE
|
|
||||||
sta PCC.FH+PCC.FH.IDATA
|
|
||||||
|
|
||||||
>PUSHW L.MSG.SUMMARY
|
|
||||||
|
|
||||||
>PUSHW PCC.FH+PCC.FH.CSSIZE
|
|
||||||
|
|
||||||
>PUSHW ZPCCConst
|
>PUSHW ZPCCConst
|
||||||
|
>PUSHW ZPCCData
|
||||||
lda ZPCCData+1
|
|
||||||
>PUSHA
|
|
||||||
sta PCC.FH+PCC.FH.DSSIZE+1
|
|
||||||
lda ZPCCData
|
|
||||||
>PUSHA
|
|
||||||
sta PCC.FH+PCC.FH.DSSIZE
|
|
||||||
|
|
||||||
>PUSHBI 6
|
>PUSHBI 6
|
||||||
>SYSCALL PrintF
|
>SYSCALL PrintF
|
||||||
* >DEBUG
|
* >DEBUG
|
||||||
|
@ -588,8 +625,8 @@ CS.END
|
||||||
MSG.GREETINGS .AZ "\r\nA2osX C Compiler %d.%d\r\n\r\n"
|
MSG.GREETINGS .AZ "\r\nA2osX C Compiler %d.%d\r\n\r\n"
|
||||||
MSG.USAGE .AS "Usage : CC <option> srcfile.c dstfile\r\n"
|
MSG.USAGE .AS "Usage : CC <option> srcfile.c dstfile\r\n"
|
||||||
.AS " -D : Debug Mode\r\n"
|
.AS " -D : Debug Mode\r\n"
|
||||||
.AS " -T : Trace On"
|
.AS " -T : Trace On\r\n"
|
||||||
.AZ "\r\n"
|
.AZ " -L Libname1 -O Libname2 ...\r\n"
|
||||||
MSG.READING .AZ "*** Reading file: %s\r\n"
|
MSG.READING .AZ "*** Reading file: %s\r\n"
|
||||||
MSG.LINKING .AZ "*** Linking..."
|
MSG.LINKING .AZ "*** Linking..."
|
||||||
MSG.LINKING2 .AZ "*** %H:%18s T/Q=%h/%h, SC=%h, Def=%h, SizeOf=%H, @=%H\r\n"
|
MSG.LINKING2 .AZ "*** %H:%18s T/Q=%h/%h, SC=%h, Def=%h, SizeOf=%H, @=%H\r\n"
|
||||||
|
@ -599,14 +636,21 @@ MSG.DEBUG .AS "*** pCode=%H, pConst=%H, pData=%H, pStack=%H\r\n"
|
||||||
MSG.TRACE .AZ "%5D> %s\r\n"
|
MSG.TRACE .AZ "%5D> %s\r\n"
|
||||||
MSG.RTSTK .AZ "<pBase=%H, pVar=%H, (pVar)=%H, pStack=%H>\r\n"
|
MSG.RTSTK .AZ "<pBase=%H, pVar=%H, (pVar)=%H, pStack=%H>\r\n"
|
||||||
MSG.ERROR .AZ " %s^\r\n"
|
MSG.ERROR .AZ " %s^\r\n"
|
||||||
MSG.SUMMARY .AZ "*** Compilation OK : Code size=%5D, iData size=%5D, uData size=%5D\r\n"
|
MSG.SUMMARY .AZ "*** Compilation OK : Code size=%5D, Const size=%5D, uData size=%5D\r\n"
|
||||||
MSG.NOMAIN .AZ "*** No 'main()' function defined."
|
MSG.NOMAIN .AZ "*** No 'main()' function defined."
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OptionList .AS "DdTt"
|
OptionList .AS "DdTtLl"
|
||||||
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
|
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ENV.INCLUDE .AZ "INCLUDE"
|
ENV.INCLUDE .AZ "INCLUDE"
|
||||||
ENV.LIB .AZ "LIB"
|
ENV.LIB .AZ "LIB"
|
||||||
|
LIB.O .AZ ".o"
|
||||||
|
*--------------------------------------
|
||||||
|
CC.EscChars .AS "abefnrtv"
|
||||||
|
.HS 5C27223F
|
||||||
|
CC.EscChars.Cnt .EQ *-CC.EscChars
|
||||||
|
CC.EscCodes .HS 07081B0C0A0D090B
|
||||||
|
.HS 5C27223F
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.OPChars .AS "!~+-*/%=&|^<>["
|
CC.OPChars .AS "!~+-*/%=&|^<>["
|
||||||
CC.OPChars.Cnt .EQ *-CC.OPChars
|
CC.OPChars.Cnt .EQ *-CC.OPChars
|
||||||
|
@ -695,6 +739,8 @@ CC.KW >PSTR "if"
|
||||||
>PSTR "return"
|
>PSTR "return"
|
||||||
>PSTR "sizeof"
|
>PSTR "sizeof"
|
||||||
>PSTR "struct"
|
>PSTR "struct"
|
||||||
|
>PSTR "union"
|
||||||
|
>PSTR "enum"
|
||||||
.HS 00
|
.HS 00
|
||||||
CC.KW2.IF >PSTR "else"
|
CC.KW2.IF >PSTR "else"
|
||||||
.HS 00
|
.HS 00
|
||||||
|
@ -732,282 +778,283 @@ CC.MAIN .AZ "main"
|
||||||
CC.MAIN.DEF .DA #SYM.T.SINT,#0,#SYM.T.SINT,#0,#SYM.T.UCHAR,#SYM.Q.PPOINTER,0
|
CC.MAIN.DEF .DA #SYM.T.SINT,#0,#SYM.T.SINT,#0,#SYM.T.UCHAR,#SYM.Q.PPOINTER,0
|
||||||
CC.MAIN.DEF.LEN .EQ *-CC.MAIN.DEF
|
CC.MAIN.DEF.LEN .EQ *-CC.MAIN.DEF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CC.LIBC >PSTR "chtyp"
|
CC.SYSCALL >PSTR "chtyp"
|
||||||
.DA #2,#1,#SYS.ChTyp
|
.DA #SYS.ChTyp
|
||||||
>PSTR "chmod"
|
>PSTR "chmod"
|
||||||
.DA #2,#1,#SYS.ChMod
|
.DA #SYS.ChMod
|
||||||
>PSTR "fstat"
|
>PSTR "fstat"
|
||||||
.DA #2,#1,#SYS.FStat
|
.DA #SYS.FStat
|
||||||
>PSTR "stat"
|
>PSTR "stat"
|
||||||
.DA #2,#1,#SYS.Stat
|
.DA #SYS.Stat
|
||||||
>PSTR "mkdir"
|
>PSTR "mkdir"
|
||||||
.DA #2,#1,#SYS.MKDir
|
.DA #SYS.MKDir
|
||||||
>PSTR "mknod"
|
>PSTR "mknod"
|
||||||
.DA #2,#1,#SYS.MKNod
|
.DA #SYS.MKNod
|
||||||
>PSTR "mkfifo"
|
>PSTR "mkfifo"
|
||||||
.DA #2,#1,#SYS.MKFIFO
|
.DA #SYS.MKFIFO
|
||||||
>PSTR "pipe"
|
>PSTR "pipe"
|
||||||
.DA #2,#1,#SYS.Pipe
|
.DA #SYS.Pipe
|
||||||
>PSTR "opendir"
|
>PSTR "opendir"
|
||||||
.DA #2,#1,#SYS.OpenDir
|
.DA #SYS.OpenDir
|
||||||
>PSTR "readdir"
|
>PSTR "readdir"
|
||||||
.DA #2,#1,#SYS.ReadDir
|
.DA #SYS.ReadDir
|
||||||
>PSTR "closedir"
|
>PSTR "closedir"
|
||||||
.DA #2,#1,#SYS.CloseDir
|
.DA #SYS.CloseDir
|
||||||
>PSTR "open"
|
>PSTR "open"
|
||||||
.DA #2,#1,#SYS.Open
|
.DA #SYS.Open
|
||||||
>PSTR "close"
|
>PSTR "close"
|
||||||
.DA #2,#1,#SYS.Close
|
.DA #SYS.Close
|
||||||
>PSTR "read"
|
>PSTR "read"
|
||||||
.DA #2,#1,#SYS.Read
|
.DA #SYS.Read
|
||||||
>PSTR "write"
|
>PSTR "write"
|
||||||
.DA #2,#1,#SYS.Write
|
.DA #SYS.Write
|
||||||
>PSTR "chown"
|
>PSTR "chown"
|
||||||
.DA #2,#1,#SYS.ChOwn
|
.DA #SYS.ChOwn
|
||||||
>PSTR "fputc"
|
>PSTR "fputc"
|
||||||
.DA #2,#1,#SYS.FPutC
|
.DA #SYS.FPutC
|
||||||
>PSTR "putchar"
|
>PSTR "putchar"
|
||||||
.DA #2,#1,#SYS.PutChar
|
.DA #SYS.PutChar
|
||||||
>PSTR "getc"
|
>PSTR "getc"
|
||||||
.DA #2,#1,#SYS.GetC
|
.DA #SYS.GetC
|
||||||
>PSTR "getchar"
|
>PSTR "getchar"
|
||||||
.DA #2,#1,#SYS.GetChar
|
.DA #SYS.GetChar
|
||||||
>PSTR "fputs"
|
>PSTR "fputs"
|
||||||
.DA #2,#1,#SYS.FPutS
|
.DA #SYS.FPutS
|
||||||
>PSTR "puts"
|
>PSTR "puts"
|
||||||
.DA #2,#1,#SYS.PutS
|
.DA #SYS.PutS
|
||||||
>PSTR "fgets"
|
>PSTR "fgets"
|
||||||
.DA #2,#1,#SYS.FGetS
|
.DA #SYS.FGetS
|
||||||
>PSTR "ungetc"
|
>PSTR "ungetc"
|
||||||
.DA #2,#1,#SYS.UngetC
|
.DA #SYS.UngetC
|
||||||
>PSTR "fopen"
|
>PSTR "fopen"
|
||||||
.DA #2,#1,#SYS.FOpen
|
.DA #SYS.FOpen
|
||||||
>PSTR "fclose"
|
>PSTR "fclose"
|
||||||
.DA #2,#1,#SYS.FClose
|
.DA #SYS.FClose
|
||||||
>PSTR "fread"
|
>PSTR "fread"
|
||||||
.DA #2,#1,#SYS.FRead
|
.DA #SYS.FRead
|
||||||
>PSTR "fwrite"
|
>PSTR "fwrite"
|
||||||
.DA #2,#1,#SYS.FWrite
|
.DA #SYS.FWrite
|
||||||
>PSTR "fflush"
|
>PSTR "fflush"
|
||||||
.DA #2,#1,#SYS.FFlush
|
.DA #SYS.FFlush
|
||||||
>PSTR "fseek"
|
>PSTR "fseek"
|
||||||
.DA #2,#1,#SYS.FSeek
|
.DA #SYS.FSeek
|
||||||
>PSTR "ftell"
|
>PSTR "ftell"
|
||||||
.DA #2,#1,#SYS.FTell
|
.DA #SYS.FTell
|
||||||
>PSTR "feof"
|
>PSTR "feof"
|
||||||
.DA #2,#1,#SYS.FEOF
|
.DA #SYS.FEOF
|
||||||
>PSTR "remove"
|
>PSTR "remove"
|
||||||
.DA #2,#1,#SYS.Remove
|
.DA #SYS.Remove
|
||||||
>PSTR "rename"
|
>PSTR "rename"
|
||||||
.DA #2,#1,#SYS.Rename
|
.DA #SYS.Rename
|
||||||
>PSTR "printf"
|
>PSTR "printf"
|
||||||
.DA #2,#1,#SYS.PrintF
|
.DA #SYS.PrintF
|
||||||
>PSTR "fprintf"
|
>PSTR "fprintf"
|
||||||
.DA #2,#1,#SYS.FPrintF
|
.DA #SYS.FPrintF
|
||||||
>PSTR "sprintf"
|
>PSTR "sprintf"
|
||||||
.DA #2,#1,#SYS.SPrintF
|
.DA #SYS.SPrintF
|
||||||
>PSTR "scanf"
|
>PSTR "scanf"
|
||||||
.DA #2,#1,#SYS.ScanF
|
.DA #SYS.ScanF
|
||||||
>PSTR "fscanf"
|
>PSTR "fscanf"
|
||||||
.DA #2,#1,#SYS.FScanF
|
.DA #SYS.FScanF
|
||||||
>PSTR "sscanf"
|
>PSTR "sscanf"
|
||||||
.DA #2,#1,#SYS.SScanF
|
.DA #SYS.SScanF
|
||||||
* >PSTR "$50"
|
* >PSTR "$50"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "$52"
|
* >PSTR "$52"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "$54"
|
* >PSTR "$54"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "$56"
|
* >PSTR "$56"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "$58"
|
* >PSTR "$58"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "$5A"
|
* >PSTR "$5A"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "$5C"
|
* >PSTR "$5C"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
>PSTR "setattr"
|
>PSTR "setattr"
|
||||||
.DA #2,#1,#SYS.SetAttr
|
.DA #SYS.SetAttr
|
||||||
* >PSTR "mount"
|
* >PSTR "mount"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "umount"
|
* >PSTR "umount"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "online"
|
* >PSTR "online"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "getstkobj"
|
* >PSTR "getstkobj"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "shift"
|
* >PSTR "shift"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "argv"
|
* >PSTR "argv"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "argvDup"
|
* >PSTR "argvDup"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "geterrmsg"
|
* >PSTR "geterrmsg"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
>PSTR "atof"
|
>PSTR "atof"
|
||||||
.DA #2,#1,#SYS.AToF
|
.DA #SYS.AToF
|
||||||
>PSTR "atoi"
|
>PSTR "atoi"
|
||||||
.DA #2,#1,#SYS.AToI
|
.DA #SYS.AToI
|
||||||
>PSTR "atol"
|
>PSTR "atol"
|
||||||
.DA #2,#1,#SYS.AToL
|
.DA #SYS.AToL
|
||||||
>PSTR "strtof"
|
>PSTR "strtof"
|
||||||
.DA #2,#1,#SYS.StrToF
|
.DA #SYS.StrToF
|
||||||
>PSTR "strtol"
|
>PSTR "strtol"
|
||||||
.DA #2,#1,#SYS.StrToL
|
.DA #SYS.StrToL
|
||||||
>PSTR "strtoul"
|
>PSTR "strtoul"
|
||||||
.DA #2,#1,#SYS.StrToUL
|
.DA #SYS.StrToUL
|
||||||
>PSTR "realpath"
|
>PSTR "realpath"
|
||||||
.DA #2,#1,#SYS.RealPath
|
.DA #SYS.RealPath
|
||||||
>PSTR "expand"
|
>PSTR "expand"
|
||||||
.DA #2,#1,#SYS.Expand
|
.DA #SYS.Expand
|
||||||
>PSTR "strlen"
|
>PSTR "strlen"
|
||||||
.DA #2,#1,#SYS.StrLen
|
.DA #SYS.StrLen
|
||||||
>PSTR "strcpy"
|
>PSTR "strcpy"
|
||||||
.DA #2,#1,#SYS.StrCpy
|
.DA #SYS.StrCpy
|
||||||
>PSTR "strcat"
|
>PSTR "strcat"
|
||||||
.DA #2,#1,#SYS.StrCat
|
.DA #SYS.StrCat
|
||||||
>PSTR "strdup"
|
>PSTR "strdup"
|
||||||
.DA #2,#1,#SYS.StrDup
|
.DA #SYS.StrDup
|
||||||
>PSTR "strupr"
|
>PSTR "strupr"
|
||||||
.DA #2,#1,#SYS.StrUpr
|
.DA #SYS.StrUpr
|
||||||
>PSTR "strlwr"
|
>PSTR "strlwr"
|
||||||
.DA #2,#1,#SYS.StrLwr
|
.DA #SYS.StrLwr
|
||||||
>PSTR "strcmp"
|
>PSTR "strcmp"
|
||||||
.DA #2,#1,#SYS.StrCmp
|
.DA #SYS.StrCmp
|
||||||
>PSTR "strcasecmp"
|
>PSTR "strcasecmp"
|
||||||
.DA #2,#1,#SYS.StrCaseCmp
|
.DA #SYS.StrCaseCmp
|
||||||
* >PSTR "getdevbyname"
|
* >PSTR "getdevbyname"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "getdevstatus"
|
* >PSTR "getdevstatus"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "mkdev"
|
* >PSTR "mkdev"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "ioctl"
|
* >PSTR "ioctl"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "loadlib"
|
* >PSTR "loadlib"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "unloadlib"
|
* >PSTR "unloadlib"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "loaddrv"
|
* >PSTR "loaddrv"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "insdrv"
|
* >PSTR "insdrv"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
>PSTR "execl"
|
>PSTR "execl"
|
||||||
.DA #2,#1,#SYS.ExecL
|
.DA #SYS.ExecL
|
||||||
* >PSTR "execv"
|
* >PSTR "execv"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
>PSTR "fork"
|
>PSTR "fork"
|
||||||
.DA #2,#1,#SYS.Fork
|
.DA #SYS.Fork
|
||||||
>PSTR "kill"
|
>PSTR "kill"
|
||||||
.DA #2,#1,#SYS.Kill
|
.DA #SYS.Kill
|
||||||
* >PSTR "loadfile"
|
* >PSTR "loadfile"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "loadtxtfile"
|
* >PSTR "loadtxtfile"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "filesearch"
|
* >PSTR "filesearch"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "getmemstat"
|
* >PSTR "getmemstat"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "strvnew"
|
* >PSTR "strvnew"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "strvset"
|
* >PSTR "strvset"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "strvget"
|
* >PSTR "strvget"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "strvfree"
|
* >PSTR "strvfree"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
>PSTR "putenv"
|
>PSTR "putenv"
|
||||||
.DA #2,#1,#SYS.PutEnv
|
.DA #SYS.PutEnv
|
||||||
>PSTR "setenv"
|
>PSTR "setenv"
|
||||||
.DA #2,#1,#SYS.SetEnv
|
.DA #SYS.SetEnv
|
||||||
>PSTR "getenv"
|
>PSTR "getenv"
|
||||||
.DA #2,#1,#SYS.GetEnv
|
.DA #SYS.GetEnv
|
||||||
>PSTR "unsetenv"
|
>PSTR "unsetenv"
|
||||||
.DA #2,#1,#SYS.UnsetEnv
|
.DA #SYS.UnsetEnv
|
||||||
>PSTR "time"
|
>PSTR "time"
|
||||||
.DA #2,#1,#SYS.Time
|
.DA #SYS.Time
|
||||||
>PSTR "strftime"
|
>PSTR "strftime"
|
||||||
.DA #2,#1,#SYS.StrFTime
|
.DA #SYS.StrFTime
|
||||||
* >PSTR "ptime2time"
|
* >PSTR "ptime2time"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
>PSTR "ctime2time"
|
>PSTR "ctime2time"
|
||||||
.DA #2,#1,#SYS.CTime2Time
|
.DA #SYS.CTime2Time
|
||||||
>PSTR "md5"
|
>PSTR "md5"
|
||||||
.DA #2,#1,#SYS.MD5
|
.DA #SYS.MD5
|
||||||
>PSTR "md5init"
|
>PSTR "md5init"
|
||||||
.DA #2,#1,#SYS.MD5Init
|
.DA #SYS.MD5Init
|
||||||
>PSTR "md5update"
|
>PSTR "md5update"
|
||||||
.DA #2,#1,#SYS.MD5Update
|
.DA #SYS.MD5Update
|
||||||
>PSTR "md5finalize"
|
>PSTR "md5finalize"
|
||||||
.DA #2,#1,#SYS.MD5Finalize
|
.DA #SYS.MD5Finalize
|
||||||
>PSTR "getpwuid"
|
>PSTR "getpwuid"
|
||||||
.DA #2,#1,#SYS.GetPWUID
|
.DA #SYS.GetPWUID
|
||||||
>PSTR "getpwname"
|
>PSTR "getpwname"
|
||||||
.DA #2,#1,#SYS.GetPWName
|
.DA #SYS.GetPWName
|
||||||
>PSTR "putpw"
|
>PSTR "putpw"
|
||||||
.DA #2,#1,#SYS.PutPW
|
.DA #SYS.PutPW
|
||||||
>PSTR "getgrpgid"
|
>PSTR "getgrpgid"
|
||||||
.DA #2,#1,#SYS.GetGRGID
|
.DA #SYS.GetGRGID
|
||||||
>PSTR "getgrpname"
|
>PSTR "getgrpname"
|
||||||
.DA #2,#1,#SYS.GetGRName
|
.DA #SYS.GetGRName
|
||||||
>PSTR "putgr"
|
>PSTR "putgr"
|
||||||
.DA #2,#1,#SYS.PutGR
|
.DA #SYS.PutGR
|
||||||
* >PSTR "opensession"
|
* >PSTR "opensession"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "closesession"
|
* >PSTR "closesession"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "slistgetdata"
|
* >PSTR "slistgetdata"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "slistadddata"
|
* >PSTR "slistadddata"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "slistsetdata"
|
* >PSTR "slistsetdata"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "slistgetbyid"
|
* >PSTR "slistgetbyid"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "slistnewkey"
|
* >PSTR "slistnewkey"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "slistlookup"
|
* >PSTR "slistlookup"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "slistfree"
|
* >PSTR "slistfree"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "slistnew"
|
* >PSTR "slistnew"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
>PSTR "malloc"
|
>PSTR "malloc"
|
||||||
.DA #2,#1,#SYS.GetMem
|
.DA #SYS.GetMem
|
||||||
>PSTR "realloc"
|
>PSTR "realloc"
|
||||||
.DA #2,#1,#SYS.Realloc
|
.DA #SYS.Realloc
|
||||||
* >PSTR "getmemptr"
|
* >PSTR "getmemptr"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
>PSTR "free"
|
>PSTR "free"
|
||||||
.DA #2,#1,#SYS.FreeMem
|
.DA #SYS.FreeMem
|
||||||
* >PSTR "newstkobj"
|
* >PSTR "newstkobj"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "loadstkobj"
|
* >PSTR "loadstkobj"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "getstkobjptr"
|
* >PSTR "getstkobjptr"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
* >PSTR "freestkobj"
|
* >PSTR "freestkobj"
|
||||||
* .DA #2,#1,#0
|
* .DA #0
|
||||||
|
.DA #0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
>PSTR "pwr"
|
CC.FPUCALL >PSTR "pwr"
|
||||||
.DA #2,#2,#FPU.PWR
|
.DA #FPU.PWR
|
||||||
>PSTR "log"
|
>PSTR "log"
|
||||||
.DA #2,#2,#FPU.LOG
|
.DA #FPU.LOG
|
||||||
>PSTR "sqr"
|
>PSTR "sqr"
|
||||||
.DA #2,#2,#FPU.SQR
|
.DA #FPU.SQR
|
||||||
>PSTR "exp"
|
>PSTR "exp"
|
||||||
.DA #2,#2,#FPU.EXP
|
.DA #FPU.EXP
|
||||||
>PSTR "cos"
|
>PSTR "cos"
|
||||||
.DA #2,#2,#FPU.COS
|
.DA #FPU.COS
|
||||||
>PSTR "sin"
|
>PSTR "sin"
|
||||||
.DA #2,#2,#FPU.SIN
|
.DA #FPU.SIN
|
||||||
>PSTR "tan"
|
>PSTR "tan"
|
||||||
.DA #2,#2,#FPU.TAN
|
.DA #FPU.TAN
|
||||||
>PSTR "atan"
|
>PSTR "atan"
|
||||||
.DA #2,#2,#FPU.ATAN
|
.DA #FPU.ATAN
|
||||||
>PSTR "lrintf"
|
>PSTR "lrintf"
|
||||||
.DA #2,#2,#FPU.QINT
|
.DA #FPU.QINT
|
||||||
.HS 00
|
.DA #0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.INB usr/src/bin/cc.s.pcc
|
.INB usr/src/bin/cc.s.pcc
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -1019,6 +1066,10 @@ PathBuf .BS MLI.MAXPATH+1
|
||||||
bDebug .BS 1
|
bDebug .BS 1
|
||||||
bTrace .BS 1
|
bTrace .BS 1
|
||||||
|
|
||||||
|
LibCount .BS 1
|
||||||
|
hLibNs .BS LIBS.MAX
|
||||||
|
hLibOs .BS LIBS.MAX
|
||||||
|
|
||||||
CC.InFileArg .BS 1
|
CC.InFileArg .BS 1
|
||||||
CC.OutFileArg .BS 1
|
CC.OutFileArg .BS 1
|
||||||
CC.hOutFile .BS 1
|
CC.hOutFile .BS 1
|
||||||
|
|
|
@ -133,8 +133,7 @@ CS.RUN.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.SCRN.Init >PUSHB hCTX hParent
|
CS.SCRN.Init >PUSHB hCTX hParent
|
||||||
>PUSHBI S.OBJ.F.bTitle+S.OBJ.F.bStatus
|
>PUSHBI S.OBJ.F.bTitle+S.OBJ.F.bStatus
|
||||||
lda #S.OBJ.T.SCRN
|
>LIBCALL hLIBTUI,LIBTUI.NewScrn
|
||||||
>LIBCALL hLIBTUI,LIBTUI.New
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
sta hSCRN
|
sta hSCRN
|
||||||
|
@ -169,10 +168,11 @@ CS.TBOX1.Init >LDYAI 1024
|
||||||
>PUSHBI 44 W
|
>PUSHBI 44 W
|
||||||
>PUSHBI 20 H
|
>PUSHBI 20 H
|
||||||
>PUSHBI S.OBJ.F.bHBorder+S.OBJ.F.bVBorder+S.OBJ.F.bTitle+S.OBJ.F.bStatus
|
>PUSHBI S.OBJ.F.bHBorder+S.OBJ.F.bVBorder+S.OBJ.F.bTitle+S.OBJ.F.bStatus
|
||||||
>PUSHB.G TBOX1.hBuf
|
>LDA.G TBOX1.hBuf
|
||||||
|
>SYSCALL GetMemPtr
|
||||||
|
>PUSHYA
|
||||||
>PUSHWI 1024
|
>PUSHWI 1024
|
||||||
lda #S.OBJ.T.TBOX
|
>LIBCALL hLIBTUI,LIBTUI.NewTBox
|
||||||
>LIBCALL hLIBTUI,LIBTUI.New
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
sta hTBOX1
|
sta hTBOX1
|
||||||
|
@ -197,16 +197,14 @@ CS.LBOX1.Init >PUSHB hSCRN hParent
|
||||||
>PUSHBI S.OBJ.F.bHBorder+S.OBJ.F.bVBorder
|
>PUSHBI S.OBJ.F.bHBorder+S.OBJ.F.bVBorder
|
||||||
>PUSHW L.LBOX1.List
|
>PUSHW L.LBOX1.List
|
||||||
>PUSHEA.G LBOX1.Var
|
>PUSHEA.G LBOX1.Var
|
||||||
lda #S.OBJ.T.LBOX
|
>LIBCALL hLIBTUI,LIBTUI.NewLBox
|
||||||
>LIBCALL hLIBTUI,LIBTUI.New
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.TLINE.Init >PUSHB hSCRN hParent
|
CS.TLINE.Init >PUSHB hSCRN hParent
|
||||||
>PUSHBI 50 X1
|
>PUSHBI 50 X1
|
||||||
>PUSHBI 11 Y1
|
>PUSHBI 11 Y1
|
||||||
>PUSHW L.LABEL.Label
|
>PUSHW L.LABEL.Label
|
||||||
lda #S.OBJ.T.LABEL
|
>LIBCALL hLIBTUI,LIBTUI.NewLabel
|
||||||
>LIBCALL hLIBTUI,LIBTUI.New
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHB hSCRN hParent
|
>PUSHB hSCRN hParent
|
||||||
|
@ -214,9 +212,8 @@ CS.TLINE.Init >PUSHB hSCRN hParent
|
||||||
>PUSHBI 12 Y1
|
>PUSHBI 12 Y1
|
||||||
>PUSHBI 25 W
|
>PUSHBI 25 W
|
||||||
>PUSHEA.G TLINE.Buf
|
>PUSHEA.G TLINE.Buf
|
||||||
>PUSHBI 65 Len
|
>PUSHWI 65 Len
|
||||||
lda #S.OBJ.T.TLINE
|
>LIBCALL hLIBTUI,LIBTUI.NewTLine
|
||||||
>LIBCALL hLIBTUI,LIBTUI.New
|
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -227,8 +224,7 @@ CS.RADIO.Init >PUSHB hSCRN hParent
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>PUSHW L.RADIO1.List
|
>PUSHW L.RADIO1.List
|
||||||
>PUSHEA.G RADIO1.Var
|
>PUSHEA.G RADIO1.Var
|
||||||
lda #S.OBJ.T.RADIO
|
>LIBCALL hLIBTUI,LIBTUI.NewRadio
|
||||||
>LIBCALL hLIBTUI,LIBTUI.New
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.CBOX.Init >PUSHB hSCRN hParent
|
CS.CBOX.Init >PUSHB hSCRN hParent
|
||||||
|
@ -238,8 +234,7 @@ CS.CBOX.Init >PUSHB hSCRN hParent
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
>PUSHW L.CBOX1.Label
|
>PUSHW L.CBOX1.Label
|
||||||
>PUSHEA.G CBOX1.Var
|
>PUSHEA.G CBOX1.Var
|
||||||
lda #S.OBJ.T.CBOX
|
>LIBCALL hLIBTUI,LIBTUI.NewCBox
|
||||||
>LIBCALL hLIBTUI,LIBTUI.New
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.BUT.Init >PUSHB hSCRN hParent
|
CS.BUT.Init >PUSHB hSCRN hParent
|
||||||
|
@ -248,18 +243,16 @@ CS.BUT.Init >PUSHB hSCRN hParent
|
||||||
>PUSHBI 19 Ctrl-S
|
>PUSHBI 19 Ctrl-S
|
||||||
>PUSHBI EV.SAVE
|
>PUSHBI EV.SAVE
|
||||||
>PUSHW L.BUTS.Label
|
>PUSHW L.BUTS.Label
|
||||||
lda #S.OBJ.T.BUT
|
>LIBCALL hLIBTUI,LIBTUI.NewBut
|
||||||
>LIBCALL hLIBTUI,LIBTUI.New
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PUSHB hSCRN hParent
|
>PUSHB hSCRN hParent
|
||||||
>PUSHBI 65 X1
|
>PUSHBI 65 X1
|
||||||
>PUSHBI 20 Y1
|
>PUSHBI 20 Y1
|
||||||
>PUSHBI 17 Ctrl-Q
|
>PUSHBI 17 Ctrl-Q
|
||||||
>PUSHBI EV.QUIT
|
>PUSHBI EV.QUIT
|
||||||
>PUSHW L.BUTQ.Label
|
>PUSHW L.BUTQ.Label
|
||||||
lda #S.OBJ.T.BUT
|
>LIBCALL hLIBTUI,LIBTUI.NewBut
|
||||||
>LIBCALL hLIBTUI,LIBTUI.New
|
|
||||||
.9
|
.9
|
||||||
CS.BUT.Init.RTS rts
|
CS.BUT.Init.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -267,8 +260,7 @@ CS.RUN.DLGSAVE >PUSHB hCTX hParent
|
||||||
>PUSHBI 70 W
|
>PUSHBI 70 W
|
||||||
>PUSHBI 11 H
|
>PUSHBI 11 H
|
||||||
>PUSHW L.DLGS.Title
|
>PUSHW L.DLGS.Title
|
||||||
lda #S.OBJ.T.DLG
|
>LIBCALL hLIBTUI,LIBTUI.NewDlg
|
||||||
>LIBCALL hLIBTUI,LIBTUI.New
|
|
||||||
bcs CS.BUT.Init.RTS
|
bcs CS.BUT.Init.RTS
|
||||||
|
|
||||||
sta hDLGS
|
sta hDLGS
|
||||||
|
@ -279,8 +271,7 @@ CS.RUN.DLGSAVE >PUSHB hCTX hParent
|
||||||
>PUSHBI C.CR
|
>PUSHBI C.CR
|
||||||
>PUSHBI EV.OK
|
>PUSHBI EV.OK
|
||||||
>PUSHW L.BUT.OK
|
>PUSHW L.BUT.OK
|
||||||
lda #S.OBJ.T.BUT
|
>LIBCALL hLIBTUI,LIBTUI.NewBut
|
||||||
>LIBCALL hLIBTUI,LIBTUI.New
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
sta ZPPtr1
|
sta ZPPtr1
|
||||||
|
@ -291,8 +282,7 @@ CS.RUN.DLGSAVE >PUSHB hCTX hParent
|
||||||
>PUSHBI 3 Ctrl-C
|
>PUSHBI 3 Ctrl-C
|
||||||
>PUSHBI EV.CANCEL
|
>PUSHBI EV.CANCEL
|
||||||
>PUSHW L.BUT.Cancel
|
>PUSHW L.BUT.Cancel
|
||||||
lda #S.OBJ.T.BUT
|
>LIBCALL hLIBTUI,LIBTUI.NewBut
|
||||||
>LIBCALL hLIBTUI,LIBTUI.New
|
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
lda hDLGS
|
lda hDLGS
|
||||||
|
@ -370,30 +360,45 @@ SCRN.Status .AZ "Status bar..."
|
||||||
TBOX1.Title .AZ "Text Box Title"
|
TBOX1.Title .AZ "Text Box Title"
|
||||||
TBOX1.Status .AZ "Text Box Status"
|
TBOX1.Status .AZ "Text Box Status"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LBOX1.List .AZ "Item 1"
|
LBOX1.List .AS "Item 1"
|
||||||
.AZ "Item 2"
|
.DA #C.CR
|
||||||
.AZ "Item 3"
|
.AS "Item 2"
|
||||||
.AZ "Item 4"
|
.DA #C.CR
|
||||||
.AZ "Item 5"
|
.AS "Item 3"
|
||||||
.AZ "Item 6 very long line"
|
.DA #C.CR
|
||||||
.AZ "Item 7"
|
.AS "Item 4"
|
||||||
.AZ "Item 8"
|
.DA #C.CR
|
||||||
.AZ "Item 9"
|
.AS "Item 5"
|
||||||
.AZ "Item 10"
|
.DA #C.CR
|
||||||
.AZ "Item 11"
|
.AS "Item 6 very long line"
|
||||||
.AZ "Item 12"
|
.DA #C.CR
|
||||||
.AZ "Item 13"
|
.AS "Item 7"
|
||||||
.AZ "Item 14 last one"
|
.DA #C.CR
|
||||||
|
.AS "Item 8"
|
||||||
|
.DA #C.CR
|
||||||
|
.AS "Item 9"
|
||||||
|
.DA #C.CR
|
||||||
|
.AS "Item 10"
|
||||||
|
.DA #C.CR
|
||||||
|
.AS "Item 11"
|
||||||
|
.DA #C.CR
|
||||||
|
.AS "Item 12"
|
||||||
|
.DA #C.CR
|
||||||
|
.AS "Item 13"
|
||||||
|
.DA #C.CR
|
||||||
|
.AS "Item 14 last one"
|
||||||
.DA #0
|
.DA #0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LABEL.Label .AZ "This is a label."
|
LABEL.Label .AZ "This is a label."
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
RADIO1.List .DA #C.ESC
|
RADIO1.List .DA #C.ESC
|
||||||
.AZ "[91mRed"
|
.AS "[91mRed"
|
||||||
|
.DA #C.CR
|
||||||
.DA #C.ESC
|
.DA #C.ESC
|
||||||
.AZ "[92mGreen"
|
.AS "[92mGreen"
|
||||||
|
.DA #C.CR
|
||||||
.DA #C.ESC
|
.DA #C.ESC
|
||||||
.AZ "[96mBlue"
|
.AS "[96mBlue"
|
||||||
.DA #0
|
.DA #0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CBOX1.Label .AZ "Check Me"
|
CBOX1.Label .AZ "Check Me"
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.D2.SeekTimeR .EQ 45 LIBBLKDEV Recalibration
|
IO.D2.SeekTimeR .EQ 55 LIBBLKDEV Recalibration
|
||||||
IO.D2.SeekTimeF .EQ 75 LIBBLKDEV Track Formatter
|
IO.D2.SeekTimeF .EQ 55 LIBBLKDEV Track Formatter
|
||||||
IO.D2.SeekTimeB .EQ 52 LIBBLKDEV Boot Block
|
IO.D2.SeekTimeB .EQ 55 LIBBLKDEV Boot Block
|
||||||
IO.D2.SeekTimeP .EQ 32 ProDOS.FX initial
|
IO.D2.SeekTimeP .EQ 25 ProDOS.FX initial
|
||||||
IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
|
IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.D2.Ph0Off .EQ $C080
|
IO.D2.Ph0Off .EQ $C080
|
||||||
|
|
|
@ -3,15 +3,23 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIBTUI.Init .EQ 4
|
LIBTUI.Init .EQ 4
|
||||||
LIBTUI.Close .EQ 6
|
LIBTUI.Close .EQ 6
|
||||||
LIBTUI.New .EQ 8
|
LIBTUI.NewScrn .EQ 8
|
||||||
LIBTUI.Exec .EQ 10
|
LIBTUI.NewDlg .EQ 10
|
||||||
LIBTUI.Destroy .EQ 12
|
LIBTUI.NewLabel .EQ 12
|
||||||
LIBTUI.Run .EQ 14
|
LIBTUI.NewTLine .EQ 14
|
||||||
LIBTUI.Draw .EQ 16
|
LIBTUI.NewTBox .EQ 16
|
||||||
LIBTUI.GetProp .EQ 18
|
LIBTUI.NewLBox .EQ 18
|
||||||
LIBTUI.SetProp .EQ 20
|
LIBTUI.NewCBox .EQ 20
|
||||||
LIBTUI.Activate .EQ 22
|
LIBTUI.NewBut .EQ 22
|
||||||
LIBTUI.Deactivate .EQ 24
|
LIBTUI.NewRadio .EQ 24
|
||||||
|
LIBTUI.Exec .EQ 26
|
||||||
|
LIBTUI.Destroy .EQ 28
|
||||||
|
LIBTUI.Run .EQ 30
|
||||||
|
LIBTUI.Draw .EQ 32
|
||||||
|
LIBTUI.GetProp .EQ 34
|
||||||
|
LIBTUI.SetProp .EQ 36
|
||||||
|
LIBTUI.Activate .EQ 38
|
||||||
|
LIBTUI.Deactivate .EQ 40
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.CTX.hSCRN .EQ 0
|
S.CTX.hSCRN .EQ 0
|
||||||
S.CTX.hClipBrd .EQ 1
|
S.CTX.hClipBrd .EQ 1
|
||||||
|
@ -47,6 +55,7 @@ S.OBJ.F.bCursor .EQ %00000001
|
||||||
S.OBJ.S .EQ 2
|
S.OBJ.S .EQ 2
|
||||||
S.OBJ.S.bActive .EQ %10000000
|
S.OBJ.S.bActive .EQ %10000000
|
||||||
S.OBJ.S.bDisabled .EQ %01000000
|
S.OBJ.S.bDisabled .EQ %01000000
|
||||||
|
S.OBJ.S.bHasChilds .EQ %00100000
|
||||||
S.OBJ.S.bCurOn .EQ %00000001
|
S.OBJ.S.bCurOn .EQ %00000001
|
||||||
S.OBJ.hParent .EQ 3
|
S.OBJ.hParent .EQ 3
|
||||||
S.OBJ.X1 .EQ 4
|
S.OBJ.X1 .EQ 4
|
||||||
|
@ -63,9 +72,11 @@ S.OBJ.InnerH .EQ 13
|
||||||
S.OBJ.CurX .EQ 14
|
S.OBJ.CurX .EQ 14
|
||||||
S.OBJ.CurY .EQ 15
|
S.OBJ.CurY .EQ 15
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.OBJ.pTITLE .EQ 16
|
S.OBJ.pTitle .EQ 16
|
||||||
S.OBJ.pMENU .EQ 18
|
S.OBJ.pMenu .EQ 18
|
||||||
S.OBJ.pSTATUS .EQ 20
|
S.OBJ.pStatus .EQ 20
|
||||||
|
S.OBJ.pBuf .EQ 22
|
||||||
|
S.OBJ.BufSize .EQ 24
|
||||||
*
|
*
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.OBJ.Childs .EQ 32
|
S.OBJ.Childs .EQ 32
|
||||||
|
@ -80,33 +91,27 @@ S.LABEL.pLabel .EQ S.OBJ+0
|
||||||
*
|
*
|
||||||
S.LABEL .EQ S.OBJ+2
|
S.LABEL .EQ S.OBJ+2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.TLINE.pBuf .EQ S.OBJ+0
|
S.TLINE.Ptr .EQ S.OBJ
|
||||||
S.TLINE.Ptr .EQ S.OBJ+2
|
S.TLINE.Len .EQ S.OBJ+1
|
||||||
S.TLINE.Len .EQ S.OBJ+3
|
S.TLINE.HScroll .EQ S.OBJ+2
|
||||||
S.TLINE.MaxLen .EQ S.OBJ+4
|
|
||||||
S.TLINE.HScroll .EQ S.OBJ+5
|
|
||||||
*
|
*
|
||||||
S.TLINE .EQ S.OBJ+6
|
S.TLINE .EQ S.OBJ+3
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.TBOX.hBuf .EQ S.OBJ+0
|
S.TBOX.DocX .EQ S.OBJ
|
||||||
|
S.TBOX.DocY .EQ S.OBJ+2
|
||||||
|
S.TBOX.HScroll .EQ S.OBJ+4
|
||||||
|
S.TBOX.VScroll .EQ S.OBJ+6
|
||||||
|
S.TBOX.BufPtr .EQ S.OBJ+8
|
||||||
|
S.TBOX.BufCnt .EQ S.OBJ+10
|
||||||
|
S.TBOX.SelBegin .EQ S.OBJ+12
|
||||||
|
S.TBOX.SelEnd .EQ S.OBJ+14
|
||||||
|
S.TBOX.bSelect .EQ S.OBJ+16
|
||||||
*
|
*
|
||||||
S.TBOX.BufSize .EQ S.OBJ+2
|
S.TBOX .EQ S.OBJ+17
|
||||||
S.TBOX.DocX .EQ S.OBJ+4
|
|
||||||
S.TBOX.DocY .EQ S.OBJ+6
|
|
||||||
S.TBOX.HScroll .EQ S.OBJ+8
|
|
||||||
S.TBOX.VScroll .EQ S.OBJ+10
|
|
||||||
S.TBOX.BufPtr .EQ S.OBJ+12
|
|
||||||
S.TBOX.BufCnt .EQ S.OBJ+14
|
|
||||||
S.TBOX.SelBegin .EQ S.OBJ+16
|
|
||||||
S.TBOX.SelEnd .EQ S.OBJ+18
|
|
||||||
S.TBOX.bSelect .EQ S.OBJ+20
|
|
||||||
*
|
|
||||||
S.TBOX .EQ S.OBJ+21
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.LBOX.Idx .EQ S.OBJ+0
|
S.LBOX.Idx .EQ S.OBJ+0
|
||||||
S.LBOX.VScroll .EQ S.OBJ+1
|
S.LBOX.VScroll .EQ S.OBJ+1
|
||||||
S.LBOX.pList .EQ S.OBJ+2
|
S.LBOX.pVar .EQ S.OBJ+2
|
||||||
S.LBOX.pVar .EQ S.OBJ+4
|
|
||||||
*
|
*
|
||||||
S.LBOX .EQ S.OBJ+6
|
S.LBOX .EQ S.OBJ+6
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -125,11 +130,10 @@ S.BUT .EQ S.OBJ+4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.RADIO.HotKey .EQ S.OBJ+0
|
S.RADIO.HotKey .EQ S.OBJ+0
|
||||||
S.RADIO.EV .EQ S.OBJ+1
|
S.RADIO.EV .EQ S.OBJ+1
|
||||||
S.RADIO.pList .EQ S.OBJ+2
|
S.RADIO.pVar .EQ S.OBJ+2
|
||||||
S.RADIO.pVar .EQ S.OBJ+4
|
S.RADIO.Idx .EQ S.OBJ+4
|
||||||
S.RADIO.Idx .EQ S.OBJ+6
|
|
||||||
*
|
*
|
||||||
S.RADIO .EQ S.OBJ+8
|
S.RADIO .EQ S.OBJ+6
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
EV.RESIZE .EQ $80
|
EV.RESIZE .EQ $80
|
||||||
EV.QUIT .EQ $81
|
EV.QUIT .EQ $81
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
|
||||||
|
struct stat {
|
||||||
|
mode_t st_mode
|
||||||
|
dev_t st_dev
|
||||||
|
uid_t st_uid
|
||||||
|
gid_t st_gid
|
||||||
|
ino_t st_ino
|
||||||
|
nlink_t st_nlink
|
||||||
|
off_t st_size
|
||||||
|
//dev_t st_rdev
|
||||||
|
time_t st_atime
|
||||||
|
time_t st_mtime
|
||||||
|
time_t st_ctime
|
||||||
|
blkcnt_t st_blocks
|
||||||
|
blksize_t st_blksize
|
||||||
|
|
||||||
|
short int st_P_type
|
||||||
|
int st_P_auxtype
|
||||||
|
short int st_P_slot
|
||||||
|
short int st_P_drive
|
||||||
|
short int st_P_devstatus
|
||||||
|
short int st_P_devcnflct
|
||||||
|
short int se_P_fsid
|
||||||
|
short int st_P_access
|
||||||
|
short int st_P_SPARE
|
||||||
|
};
|
||||||
|
|
||||||
|
MAN
|
||||||
|
TEXT include/sys/stat.h
|
|
@ -0,0 +1,7 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
|
||||||
|
typedef short int dev_t;
|
||||||
|
|
||||||
|
MAN
|
||||||
|
TEXT include/sys/types.h
|
|
@ -1,12 +1,55 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
|
|
||||||
short int tuiInit();
|
#define T_SCRN 0
|
||||||
int fastcall tuiClose(short int);
|
#define T_DLG 2
|
||||||
|
#define T_LABEL 4
|
||||||
|
#define T_TLINE 6
|
||||||
|
#define T_TBOX 8
|
||||||
|
#define T_LBOX 10
|
||||||
|
#define T_CBOX 12
|
||||||
|
#define T_BUT 14
|
||||||
|
#define T_RADIO 16
|
||||||
|
|
||||||
short int tuiNew(short int,...);
|
#define F_bTitle 128
|
||||||
short int tuiRun(short int);
|
#define F_bMenu 64
|
||||||
short int tuiClose(short int);
|
#define F_bStatus 32
|
||||||
|
#define F_bHBorder 16
|
||||||
|
#define F_bVBorder 8
|
||||||
|
#define F_bHScroll 4
|
||||||
|
#define F_bVScroll 2
|
||||||
|
#define F_bCursor 1
|
||||||
|
|
||||||
|
#define P_pTitle 16
|
||||||
|
#define P_pMenu 18
|
||||||
|
#define P_pStatus 20
|
||||||
|
#define P_pBuf 22
|
||||||
|
#define P_wBufSize 24
|
||||||
|
|
||||||
|
#define EV_RESIZE 128
|
||||||
|
#define EV_QUIT 129
|
||||||
|
|
||||||
|
short int tuiInit();
|
||||||
|
void fastcall tuiClose(short int);
|
||||||
|
|
||||||
|
short int tuiNewScrn(short int,short int);
|
||||||
|
short int tuiNewDlg(short int,short int,short int, char*);
|
||||||
|
short int tuiNewLabel(short int,short int,short int, char*);
|
||||||
|
short int tuiNewTLine(short int,short int,short int,short int, char*, int);
|
||||||
|
short int tuiNewTBox(short int,short int,short int,short int,short int,short int,char*,int);
|
||||||
|
short int tuiNewLBox(short int,short int,short int,short int,short int,short int,char*,void*);
|
||||||
|
short int tuiNewCBox(short int,short int,short int,short int,short int,char*,void*);
|
||||||
|
short int tuiNewBut(short int,short int,short int,short int,short int,char*);
|
||||||
|
short int tuiNewRadio(short int,short int,short int,short int,short int,char*,void*);
|
||||||
|
|
||||||
|
short int fastcall tuiExec(short int);
|
||||||
|
void fastcall tuiDestroy(short int);
|
||||||
|
short int fastcall tuiRun(short int);
|
||||||
|
void fastcall tuiDraw(short int);
|
||||||
|
void* tuiGetProp(short int,short int);
|
||||||
|
void tuiSetProp(short int,short int,void*);
|
||||||
|
void fastcall tuiActivate(short int);
|
||||||
|
void fastcall tuiDeactivate(short int);
|
||||||
|
|
||||||
MAN
|
MAN
|
||||||
TEXT include/libtui.h
|
TEXT include/libtui.h
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
|
||||||
|
typedef unsigned long time_t;
|
||||||
|
|
||||||
|
struct tm {
|
||||||
|
short int tm_cent;
|
||||||
|
short int tm_year;
|
||||||
|
short int tm_mon;
|
||||||
|
short int tm_mday;
|
||||||
|
short int tm_hour;
|
||||||
|
short int tm_min;
|
||||||
|
short int tm_sec;
|
||||||
|
short int tm_wday;
|
||||||
|
// short int tm_yday;
|
||||||
|
// short int tm_isdst;
|
||||||
|
};
|
||||||
|
|
||||||
|
time_t time(time_t *);
|
||||||
|
|
||||||
|
|
||||||
|
MAN
|
||||||
|
TEXT include/time.h
|
|
@ -97,16 +97,12 @@ D2.MoveHead >PULLB D2.TargetQTrack
|
||||||
>PULLB D2.CurrentQTrack
|
>PULLB D2.CurrentQTrack
|
||||||
>PULLB D2.DrvSlt
|
>PULLB D2.DrvSlt
|
||||||
jsr D2.CheckDiskII
|
jsr D2.CheckDiskII
|
||||||
bcs .9
|
bcs .99
|
||||||
|
|
||||||
php
|
php
|
||||||
sei
|
sei
|
||||||
jsr D2.MoveHead.SEI
|
|
||||||
plp
|
|
||||||
clc
|
|
||||||
.9 rts
|
|
||||||
|
|
||||||
D2.MoveHead.SEI lda D2.CurrentQTrack
|
lda D2.CurrentQTrack
|
||||||
|
|
||||||
bit #1 A = Current QT
|
bit #1 A = Current QT
|
||||||
beq .2 we are on 0/4 or 2/4 track
|
beq .2 we are on 0/4 or 2/4 track
|
||||||
|
@ -179,8 +175,10 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
|
||||||
lda IO.D2.Ph0Off,x
|
lda IO.D2.Ph0Off,x
|
||||||
|
|
||||||
.10 jsr D2.Wait25600usec
|
.10 jsr D2.Wait25600usec
|
||||||
|
|
||||||
rts
|
plp
|
||||||
|
clc
|
||||||
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
D2.SeekPhOnY and #6
|
D2.SeekPhOnY and #6
|
||||||
ora D2.Slotn0
|
ora D2.Slotn0
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
NEW
|
||||||
|
AUTO 3,1
|
||||||
|
.LIST OFF
|
||||||
|
.OR $0
|
||||||
|
.TF lib/libtui.o
|
||||||
|
*--------------------------------------
|
||||||
|
.INB inc/macros.i
|
||||||
|
.INB inc/libtui.i
|
||||||
|
*--------------------------------------
|
||||||
|
>PSTR "tuiInit"
|
||||||
|
.DA #LIBTUI.Init
|
||||||
|
>PSTR "tuiClose"
|
||||||
|
.DA #LIBTUI.Close
|
||||||
|
|
||||||
|
>PSTR "tuiNewScrn"
|
||||||
|
.DA #LIBTUI.NewScrn
|
||||||
|
>PSTR "tuiNewDlg"
|
||||||
|
.DA #LIBTUI.NewDlg
|
||||||
|
>PSTR "tuiNewLabel"
|
||||||
|
.DA #LIBTUI.NewLabel
|
||||||
|
>PSTR "tuiNewTLine"
|
||||||
|
.DA #LIBTUI.NewTLine
|
||||||
|
>PSTR "tuiNewTBox"
|
||||||
|
.DA #LIBTUI.NewTBox
|
||||||
|
>PSTR "tuiNewLBox"
|
||||||
|
.DA #LIBTUI.NewLBox
|
||||||
|
>PSTR "tuiNewCBox"
|
||||||
|
.DA #LIBTUI.NewCBox
|
||||||
|
>PSTR "tuiNewBut"
|
||||||
|
.DA #LIBTUI.NewBut
|
||||||
|
>PSTR "tuiNewRadio"
|
||||||
|
.DA #LIBTUI.NewRadio
|
||||||
|
|
||||||
|
>PSTR "tuiExec"
|
||||||
|
.DA #LIBTUI.Exec
|
||||||
|
>PSTR "tuiDestroy"
|
||||||
|
.DA #LIBTUI.Destroy
|
||||||
|
>PSTR "tuiRun"
|
||||||
|
.DA #LIBTUI.Run
|
||||||
|
>PSTR "tuiDraw"
|
||||||
|
.DA #LIBTUI.Draw
|
||||||
|
>PSTR "tuiGetProp"
|
||||||
|
.DA #LIBTUI.GetProp
|
||||||
|
>PSTR "tuiSetProp"
|
||||||
|
.DA #LIBTUI.SetProp
|
||||||
|
>PSTR "tuiActivate"
|
||||||
|
.DA #LIBTUI.Activate
|
||||||
|
>PSTR "tuiDeactivate"
|
||||||
|
.DA #LIBTUI.Deactivate
|
||||||
|
.DA #0
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE usr/src/lib/libtui.o.s
|
||||||
|
ASM
|
|
@ -4,7 +4,8 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* BUT.New hParent,X1,Y1,HK,EV,pLabel 7
|
* BUT.New hParent,X1,Y1,HK,EV,pLabel 7
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
BUT.New jsr OBJ.Create a = Class
|
BUT.New lda #S.OBJ.T.BUT
|
||||||
|
jsr OBJ.Create
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.BUT.pLabel
|
ldy #S.BUT.pLabel
|
||||||
|
@ -38,7 +39,12 @@ BUT.New jsr OBJ.Create a = Class
|
||||||
|
|
||||||
jsr OBJ.PullY1X1hParent
|
jsr OBJ.PullY1X1hParent
|
||||||
|
|
||||||
jmp OBJ.Insert
|
jsr OBJ.Insert
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
lda hObj
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
.9 >POP 7
|
.9 >POP 7
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,8 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* CBOX.New hParent,X1,Y1,HK,EV,pLabel,pVar 9
|
* CBOX.New hParent,X1,Y1,HK,EV,pLabel,pVar 9
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CBOX.New jsr OBJ.Create a = Class
|
CBOX.New lda #S.OBJ.T.CBOX
|
||||||
|
jsr OBJ.Create
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.CBOX.pVar
|
ldy #S.CBOX.pVar
|
||||||
|
@ -44,11 +45,16 @@ CBOX.New jsr OBJ.Create a = Class
|
||||||
|
|
||||||
jsr OBJ.PullY1X1hParent
|
jsr OBJ.PullY1X1hParent
|
||||||
|
|
||||||
jmp OBJ.Insert
|
jsr OBJ.Insert
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
lda hObj
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
.9 >POP 9
|
.9 >POP 9
|
||||||
|
|
||||||
rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CBOX.Destroy clc
|
CBOX.Destroy clc
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -1,7 +1,16 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*/--------------------------------------
|
||||||
|
* # tuiInit
|
||||||
|
* Initialize screen & create a new context
|
||||||
|
* ## C
|
||||||
|
* `short int hCTX tuiInit();`
|
||||||
|
* ## ASM
|
||||||
|
* `>LIBCALL hLIBTUI,LIBTUI.Init`
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* CC = success, A = hCTX
|
||||||
|
*\--------------------------------------
|
||||||
CTX.Init >LDYA L.SEQ.INIT
|
CTX.Init >LDYA L.SEQ.INIT
|
||||||
jsr CTX.fputs
|
jsr CTX.fputs
|
||||||
bcs .99
|
bcs .99
|
||||||
|
@ -66,7 +75,17 @@ CTX.Init >LDYA L.SEQ.INIT
|
||||||
sec
|
sec
|
||||||
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*/--------------------------------------
|
||||||
|
* # tuiClose
|
||||||
|
* destroy context
|
||||||
|
* ## C
|
||||||
|
* `void fastcall tuiClose(short int hCTX);`
|
||||||
|
* ## ASM
|
||||||
|
* `lda hCTX`
|
||||||
|
* `>LIBCALL hLIBTUI,LIBTUI.Close`
|
||||||
|
* ## RETURN VALUE
|
||||||
|
* CC = success
|
||||||
|
*\--------------------------------------
|
||||||
CTX.Close >SYSCALL2 FreeMem
|
CTX.Close >SYSCALL2 FreeMem
|
||||||
|
|
||||||
>LDYA L.SEQ.CLOSE
|
>LDYA L.SEQ.CLOSE
|
||||||
|
|
|
@ -4,7 +4,8 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* DLG.New hParent,W,H,pTitle 5
|
* DLG.New hParent,W,H,pTitle 5
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
DLG.New jsr OBJ.Create A = Class
|
DLG.New lda #S.OBJ.T.DLG
|
||||||
|
jsr OBJ.Create
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.OBJ.pTitle
|
ldy #S.OBJ.pTitle
|
||||||
|
@ -41,7 +42,11 @@ DLG.New jsr OBJ.Create A = Class
|
||||||
ldy #S.OBJ.Y1
|
ldy #S.OBJ.Y1
|
||||||
sta (ZPObjPtr),y
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
jmp OBJ.SetX2Y2
|
jsr OBJ.SetX2Y2
|
||||||
|
|
||||||
|
lda hObj
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
.9 >POP 5
|
.9 >POP 5
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -4,7 +4,8 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* LABEL.New hParent,X1,Y1,pLabel 5
|
* LABEL.New hParent,X1,Y1,pLabel 5
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LABEL.New jsr OBJ.Create A = Class
|
LABEL.New lda #S.OBJ.T.LABEL
|
||||||
|
jsr OBJ.Create
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.OBJ.S
|
ldy #S.OBJ.S
|
||||||
|
@ -20,10 +21,15 @@ LABEL.New jsr OBJ.Create A = Class
|
||||||
|
|
||||||
jsr OBJ.PullY1X1hParent
|
jsr OBJ.PullY1X1hParent
|
||||||
|
|
||||||
jmp OBJ.Insert
|
jsr OBJ.Insert
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
lda hObj
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
.9 >POP 5
|
.9 >POP 5
|
||||||
rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LABEL.Draw ldy #S.LABEL.pLabel
|
LABEL.Draw ldy #S.LABEL.pLabel
|
||||||
lda (ZPObjPtr),y
|
lda (ZPObjPtr),y
|
||||||
|
|
|
@ -55,17 +55,17 @@ LB.SetColor >PUSHW ZPLineBufPtr
|
||||||
>PUSHBI 2
|
>PUSHBI 2
|
||||||
jmp LB.PrintF
|
jmp LB.PrintF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LB.YAOut ldx #0
|
LB.Ptr1OutEscMaxX
|
||||||
*--------------------------------------
|
ldy #0
|
||||||
LB.YAOutX >STYA ZPPtr1 X = MaxLen
|
|
||||||
|
|
||||||
ldy #$ff
|
.1 lda (ZPPtr1),y
|
||||||
|
beq .8
|
||||||
|
|
||||||
.1 iny
|
cmp #C.CR
|
||||||
lda (ZPPtr1),y
|
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
jsr LB.COut
|
jsr LB.COut
|
||||||
|
iny
|
||||||
dex
|
dex
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
|
|
|
@ -4,13 +4,14 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* LBOX.New hParent,X1,Y1,W,H,F,pList,pVar 10
|
* LBOX.New hParent,X1,Y1,W,H,F,pList,pVar 10
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LBOX.New jsr OBJ.Create A = Class
|
LBOX.New lda #S.OBJ.T.LBOX
|
||||||
|
jsr OBJ.Create
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.LBOX.pVar
|
ldy #S.LBOX.pVar
|
||||||
jsr OBJ.PullWordY
|
jsr OBJ.PullWordY
|
||||||
|
|
||||||
ldy #S.LBOX.pList
|
ldy #S.OBJ.pBuf
|
||||||
jsr OBJ.PullWordY
|
jsr OBJ.PullWordY
|
||||||
|
|
||||||
>PULLA
|
>PULLA
|
||||||
|
@ -21,11 +22,16 @@ LBOX.New jsr OBJ.Create A = Class
|
||||||
|
|
||||||
jsr OBJ.PullY1X1hParent
|
jsr OBJ.PullY1X1hParent
|
||||||
|
|
||||||
jmp OBJ.Insert
|
jsr OBJ.Insert
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
lda hObj
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
.9 >POP 10
|
.9 >POP 10
|
||||||
|
|
||||||
rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LBOX.Destroy
|
LBOX.Destroy
|
||||||
clc
|
clc
|
||||||
|
@ -44,7 +50,7 @@ LBOX.Run ldy #S.OBJ.S
|
||||||
inc
|
inc
|
||||||
tax
|
tax
|
||||||
|
|
||||||
ldy #S.LBOX.pList
|
ldy #S.OBJ.pBuf
|
||||||
jsr OBJ.GetLineXAtY
|
jsr OBJ.GetLineXAtY
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
|
@ -108,7 +114,7 @@ LBOX.Draw ldy #S.LBOX.VScroll
|
||||||
adc (pStack) Relative Y
|
adc (pStack) Relative Y
|
||||||
tax
|
tax
|
||||||
|
|
||||||
ldy #S.LBOX.pList
|
ldy #S.OBJ.pBuf
|
||||||
jsr OBJ.GetLineXAtY
|
jsr OBJ.GetLineXAtY
|
||||||
bcs .5
|
bcs .5
|
||||||
|
|
||||||
|
@ -128,24 +134,13 @@ LBOX.Draw ldy #S.LBOX.VScroll
|
||||||
lda (ZPObjPtr),y
|
lda (ZPObjPtr),y
|
||||||
tax
|
tax
|
||||||
|
|
||||||
ldy #0
|
jsr LB.Ptr1OutEscMaxX
|
||||||
|
txa
|
||||||
.2 lda (ZPPtr1),y
|
|
||||||
beq .3
|
|
||||||
|
|
||||||
jsr LB.COut
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
.3 txa
|
|
||||||
beq .8
|
beq .8
|
||||||
|
bne .6
|
||||||
bra .6
|
|
||||||
|
|
||||||
.5 ldy #S.OBJ.InnerW
|
.5 ldy #S.OBJ.InnerW
|
||||||
lda (ZPObjPtr),y
|
lda (ZPObjPtr),y
|
||||||
|
|
||||||
tax
|
tax
|
||||||
|
|
||||||
.6 lda #C.SPACE
|
.6 lda #C.SPACE
|
||||||
|
|
|
@ -2,9 +2,6 @@ NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OBJ.New tax
|
|
||||||
jmp (J.ObjNew,x)
|
|
||||||
*--------------------------------------
|
|
||||||
OBJ.Create pha Type
|
OBJ.Create pha Type
|
||||||
tax
|
tax
|
||||||
|
|
||||||
|
@ -31,7 +28,6 @@ OBJ.Create pha Type
|
||||||
dey
|
dey
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda hObj
|
|
||||||
* clc
|
* clc
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
@ -39,6 +35,11 @@ OBJ.Create pha Type
|
||||||
.9 plx
|
.9 plx
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
OBJ.PullBuf ldy #S.OBJ.BufSize
|
||||||
|
jsr OBJ.PullWordY
|
||||||
|
|
||||||
|
ldy #S.OBJ.pBuf
|
||||||
|
*--------------------------------------
|
||||||
OBJ.PullWordY >PULLA
|
OBJ.PullWordY >PULLA
|
||||||
sta (ZPObjPtr),y
|
sta (ZPObjPtr),y
|
||||||
tax
|
tax
|
||||||
|
@ -90,9 +91,13 @@ OBJ.Insert >SYSCALL2 GetMemPtr A = hParent
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.2 lda hObj
|
.2 lda hObj
|
||||||
|
|
||||||
sta (ZPPtr2),y
|
sta (ZPPtr2),y
|
||||||
|
|
||||||
|
ldy #S.OBJ.S
|
||||||
|
lda (ZPPtr2),y
|
||||||
|
ora #S.OBJ.S.bHasChilds
|
||||||
|
sta (ZPPtr2),y
|
||||||
|
|
||||||
ldy #S.OBJ.InnerX
|
ldy #S.OBJ.InnerX
|
||||||
lda (ZPPtr2),y
|
lda (ZPPtr2),y
|
||||||
|
|
||||||
|
@ -181,9 +186,7 @@ OBJ.SetX2Y2 ldy #S.OBJ.X1
|
||||||
dec
|
dec
|
||||||
sta (ZPObjPtr),y
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
.8 lda hOBJ
|
.8 clc
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.7 lda (ZPObjPtr),y S.OBJ.X1/Y1
|
.7 lda (ZPObjPtr),y S.OBJ.X1/Y1
|
||||||
|
@ -220,8 +223,6 @@ OBJ.SetX2Y2 ldy #S.OBJ.X1
|
||||||
OBJ.Exec >PUSHA hOBJ
|
OBJ.Exec >PUSHA hOBJ
|
||||||
jsr LIB.GetOBJ
|
jsr LIB.GetOBJ
|
||||||
|
|
||||||
ldy #S.OBJ.hParent
|
|
||||||
lda (ZPObjPtr),y
|
|
||||||
jsr LIB.GetCTX
|
jsr LIB.GetCTX
|
||||||
|
|
||||||
.1 jsr CTX.GetC
|
.1 jsr CTX.GetC
|
||||||
|
@ -359,13 +360,19 @@ OBJ.Run ldx ZPObjPtr
|
||||||
OBJ.Draw >PUSHA hObj
|
OBJ.Draw >PUSHA hObj
|
||||||
|
|
||||||
jsr OBJ.Draw.Top
|
jsr OBJ.Draw.Top
|
||||||
bcs .9
|
bcs .99
|
||||||
|
|
||||||
jsr OBJ.Draw.Body
|
jsr OBJ.Draw.Body
|
||||||
bcs .9
|
bcs .99
|
||||||
|
|
||||||
jsr OBJ.Draw.Bottom
|
jsr OBJ.Draw.Bottom
|
||||||
bcs .9
|
bcs .99
|
||||||
|
|
||||||
|
ldy #S.OBJ.S
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
and #S.OBJ.S.bHasChilds
|
||||||
|
* clc
|
||||||
|
beq .99
|
||||||
|
|
||||||
lda #S.OBJ.Childs
|
lda #S.OBJ.Childs
|
||||||
>PUSHA
|
>PUSHA
|
||||||
|
@ -380,7 +387,7 @@ OBJ.Draw >PUSHA hObj
|
||||||
beq .7
|
beq .7
|
||||||
|
|
||||||
jsr OBJ.Draw
|
jsr OBJ.Draw
|
||||||
bcs .99
|
bcs .98
|
||||||
|
|
||||||
.7 lda (pStack)
|
.7 lda (pStack)
|
||||||
inc
|
inc
|
||||||
|
@ -390,9 +397,9 @@ OBJ.Draw >PUSHA hObj
|
||||||
|
|
||||||
clc
|
clc
|
||||||
|
|
||||||
.99 inc pStack
|
.98 inc pStack
|
||||||
|
|
||||||
.9 inc pStack
|
.99 inc pStack
|
||||||
|
|
||||||
OBJ.Draw.RTS rts
|
OBJ.Draw.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -436,7 +443,7 @@ OBJ.Draw.Top lda (pStack)
|
||||||
lda (ZPObjPtr),y
|
lda (ZPObjPtr),y
|
||||||
tax
|
tax
|
||||||
|
|
||||||
ldy #S.OBJ.pTITLE
|
ldy #S.OBJ.pTitle
|
||||||
lda (ZPObjPtr),y
|
lda (ZPObjPtr),y
|
||||||
sta ZPPtr1
|
sta ZPPtr1
|
||||||
iny
|
iny
|
||||||
|
@ -698,6 +705,7 @@ OBJ.GetProp ldy #1 hObj
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
OBJ.SetProp ldy #3 hObj
|
OBJ.SetProp ldy #3 hObj
|
||||||
lda (pStack),y
|
lda (pStack),y
|
||||||
|
|
||||||
jsr LIB.GetOBJ
|
jsr LIB.GetOBJ
|
||||||
|
|
||||||
ldy #2
|
ldy #2
|
||||||
|
@ -892,6 +900,14 @@ OBJ.DecWordAtY clc
|
||||||
sta (ZPObjPtr),y
|
sta (ZPObjPtr),y
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
OBJ.GetBuf ldy #S.OBJ.pBuf
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
sta ZPPtr1
|
||||||
|
iny
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
sta ZPPtr1+1
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
OBJ.GetLineXAtY lda (ZPObjPtr),y
|
OBJ.GetLineXAtY lda (ZPObjPtr),y
|
||||||
sta ZPPtr1
|
sta ZPPtr1
|
||||||
iny
|
iny
|
||||||
|
@ -912,10 +928,15 @@ OBJ.GetLineXAtY lda (ZPObjPtr),y
|
||||||
|
|
||||||
.4 iny
|
.4 iny
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
|
clc
|
||||||
|
beq .5
|
||||||
|
|
||||||
|
cmp #C.CR
|
||||||
bne .4
|
bne .4
|
||||||
|
|
||||||
tya
|
* sec
|
||||||
sec
|
|
||||||
|
.5 tya
|
||||||
adc ZPPtr1
|
adc ZPPtr1
|
||||||
sta ZPPtr1
|
sta ZPPtr1
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
|
@ -4,13 +4,14 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* RADIO.New hParent,X1,Y1,HK,EV,pList,pVar 9
|
* RADIO.New hParent,X1,Y1,HK,EV,pList,pVar 9
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
RADIO.New jsr OBJ.Create A = Class
|
RADIO.New lda #S.OBJ.T.RADIO
|
||||||
|
jsr OBJ.Create
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.RADIO.pVar
|
ldy #S.RADIO.pVar
|
||||||
jsr OBJ.PullWordY
|
jsr OBJ.PullWordY
|
||||||
|
|
||||||
ldy #S.RADIO.pList
|
ldy #S.OBJ.pBuf
|
||||||
jsr OBJ.PullWordY
|
jsr OBJ.PullWordY
|
||||||
stx ZPPtr1
|
stx ZPPtr1
|
||||||
sta ZPPtr1+1
|
sta ZPPtr1+1
|
||||||
|
@ -26,13 +27,20 @@ RADIO.New jsr OBJ.Create A = Class
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.1 ldy #$ff
|
.1 ldy #$ff
|
||||||
|
|
||||||
.2 iny
|
.2 iny
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
|
clc
|
||||||
|
beq .20
|
||||||
|
|
||||||
|
cmp #C.CR
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
tya
|
* sec
|
||||||
sec
|
|
||||||
|
.20 tya
|
||||||
|
beq .5 empty line
|
||||||
|
|
||||||
adc ZPPtr1
|
adc ZPPtr1
|
||||||
sta ZPPtr1
|
sta ZPPtr1
|
||||||
bcc .3
|
bcc .3
|
||||||
|
@ -40,11 +48,8 @@ RADIO.New jsr OBJ.Create A = Class
|
||||||
inc ZPPtr1+1
|
inc ZPPtr1+1
|
||||||
|
|
||||||
.3 tya
|
.3 tya
|
||||||
inc
|
clc
|
||||||
inc
|
adc #5 room for " ( ) "
|
||||||
inc
|
|
||||||
inc
|
|
||||||
inc
|
|
||||||
ldy #S.OBJ.W
|
ldy #S.OBJ.W
|
||||||
cmp (ZPObjPtr),y
|
cmp (ZPObjPtr),y
|
||||||
bcc .4
|
bcc .4
|
||||||
|
@ -56,13 +61,18 @@ RADIO.New jsr OBJ.Create A = Class
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
ldy #S.OBJ.H
|
.5 ldy #S.OBJ.H
|
||||||
txa
|
txa
|
||||||
sta (ZPObjPtr),y
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
jsr OBJ.PullY1X1hParent
|
jsr OBJ.PullY1X1hParent
|
||||||
|
|
||||||
jmp OBJ.Insert
|
jsr OBJ.Insert
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
lda hObj
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
.9 >POP 9
|
.9 >POP 9
|
||||||
|
|
||||||
|
@ -143,7 +153,7 @@ RADIO.Run ldy #S.OBJ.S
|
||||||
RADIO.Draw lda (pStack) Relative Y
|
RADIO.Draw lda (pStack) Relative Y
|
||||||
tax
|
tax
|
||||||
|
|
||||||
ldy #S.RADIO.pList
|
ldy #S.OBJ.pBuf
|
||||||
jsr OBJ.GetLineXAtY
|
jsr OBJ.GetLineXAtY
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
|
@ -211,27 +221,12 @@ RADIO.Draw lda (pStack) Relative Y
|
||||||
dex
|
dex
|
||||||
dex
|
dex
|
||||||
|
|
||||||
ldy #0
|
jsr LB.Ptr1OutEscMaxX
|
||||||
|
|
||||||
.2 lda (ZPPtr1),y
|
|
||||||
beq .3
|
|
||||||
|
|
||||||
jsr LB.COut
|
|
||||||
iny
|
|
||||||
dex
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
.3 txa
|
.3 txa
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
bra .6
|
lda #C.SPACE
|
||||||
|
|
||||||
.5 ldy #S.OBJ.InnerW
|
|
||||||
lda (ZPObjPtr),y
|
|
||||||
|
|
||||||
tax
|
|
||||||
|
|
||||||
.6 lda #C.SPACE
|
|
||||||
|
|
||||||
.7 jsr LB.COut
|
.7 jsr LB.COut
|
||||||
dex
|
dex
|
||||||
|
|
|
@ -4,7 +4,8 @@ NEW
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* SCRN.New hCTX,F 2
|
* SCRN.New hCTX,F 2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SCRN.New jsr OBJ.Create A = Class
|
SCRN.New lda #S.OBJ.T.SCRN
|
||||||
|
jsr OBJ.Create
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PULLA
|
>PULLA
|
||||||
|
@ -28,7 +29,11 @@ SCRN.New jsr OBJ.Create A = Class
|
||||||
ldy #S.OBJ.H
|
ldy #S.OBJ.H
|
||||||
sta (ZPObjPtr),y
|
sta (ZPObjPtr),y
|
||||||
|
|
||||||
jmp OBJ.SetX2Y2
|
jsr OBJ.SetX2Y2
|
||||||
|
|
||||||
|
lda hObj
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
.9 >POP 2
|
.9 >POP 2
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -2,17 +2,13 @@ NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* TBOX.New hParent,X1,Y1,W,H,F,hBuf,BufSize 9
|
* TBOX.New hParent,X1,Y1,W,H,F,pBuf,BufSize 10
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TBOX.New jsr OBJ.Create A = Class
|
TBOX.New lda #S.OBJ.T.TBOX
|
||||||
|
jsr OBJ.Create
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
ldy #S.TBOX.BufSize
|
jsr OBJ.PullBuf
|
||||||
jsr OBJ.PullWordY
|
|
||||||
|
|
||||||
>PULLA
|
|
||||||
ldy #S.TBOX.hBuf
|
|
||||||
sta (ZPObjPtr),y
|
|
||||||
|
|
||||||
>PULLA
|
>PULLA
|
||||||
ora #S.OBJ.F.bCursor
|
ora #S.OBJ.F.bCursor
|
||||||
|
@ -23,11 +19,16 @@ TBOX.New jsr OBJ.Create A = Class
|
||||||
|
|
||||||
jsr OBJ.PullY1X1hParent
|
jsr OBJ.PullY1X1hParent
|
||||||
|
|
||||||
jmp OBJ.Insert
|
jsr OBJ.Insert
|
||||||
|
bcs .99
|
||||||
.9 >POP 9
|
|
||||||
|
lda hObj
|
||||||
|
* clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.9 >POP 10
|
||||||
|
|
||||||
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TBOX.Destroy clc
|
TBOX.Destroy clc
|
||||||
rts
|
rts
|
||||||
|
@ -433,18 +434,15 @@ TBOX.Activate
|
||||||
TBOX.Deactivate clc
|
TBOX.Deactivate clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TBOX.GetBuf ldy #S.TBOX.hBuf
|
TBOX.GetBuf jsr OBJ.GetBuf
|
||||||
lda (ZPObjPtr),y
|
|
||||||
>SYSCALL2 GetMemPtr
|
|
||||||
>STYA ZPPtr1
|
|
||||||
|
|
||||||
pha
|
|
||||||
tya
|
|
||||||
ldy #S.TBOX.BufPtr
|
ldy #S.TBOX.BufPtr
|
||||||
|
lda ZPPtr1
|
||||||
clc
|
clc
|
||||||
adc (ZPObjPtr),y
|
adc (ZPObjPtr),y
|
||||||
sta ZPPtr2
|
sta ZPPtr2
|
||||||
pla
|
|
||||||
|
lda ZPPtr1+1
|
||||||
iny
|
iny
|
||||||
adc (ZPObjPtr),y
|
adc (ZPObjPtr),y
|
||||||
sta ZPPtr2+1
|
sta ZPPtr2+1
|
||||||
|
@ -463,10 +461,7 @@ TBOX.GetCurlineInAX
|
||||||
TBOX.GetLineAX stx TempW
|
TBOX.GetLineAX stx TempW
|
||||||
sta TempW+1 Req Line Num
|
sta TempW+1 Req Line Num
|
||||||
|
|
||||||
ldy #S.TBOX.hBuf
|
jsr OBJ.GetBuf get pBuf in ZPPtr1
|
||||||
lda (ZPObjPtr),y
|
|
||||||
>SYSCALL2 GetMemPtr
|
|
||||||
>STYA ZPPtr1
|
|
||||||
|
|
||||||
stz TempI Current Line Num
|
stz TempI Current Line Num
|
||||||
stz TempI+1
|
stz TempI+1
|
||||||
|
@ -577,12 +572,12 @@ TBOX.GetLineLenInAXC
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TBOX.ToBuf1 ldy #S.TBOX.BufCnt
|
TBOX.ToBuf1 ldy #S.TBOX.BufCnt
|
||||||
lda (ZPObjPtr),y
|
lda (ZPObjPtr),y
|
||||||
ldy #S.TBOX.BufSize
|
ldy #S.OBJ.BufSize
|
||||||
cmp (ZPObjPtr),y
|
cmp (ZPObjPtr),y
|
||||||
|
|
||||||
ldy #S.TBOX.BufCnt+1
|
ldy #S.TBOX.BufCnt+1
|
||||||
lda (ZPObjPtr),y
|
lda (ZPObjPtr),y
|
||||||
ldy #S.TBOX.BufSize+1
|
ldy #S.OBJ.BufSize+1
|
||||||
sbc (ZPObjPtr),y
|
sbc (ZPObjPtr),y
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
|
|
|
@ -2,19 +2,13 @@ NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* TLINE.New hParent,X1,Y1,W,pBuf,MaxLen 7
|
* TLINE.New hParent,X1,Y1,W,pBuf,MaxLen 8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TLINE.New jsr OBJ.Create A = Class
|
TLINE.New lda #S.OBJ.T.TLINE
|
||||||
|
jsr OBJ.Create
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PULLA
|
jsr OBJ.PullBuf
|
||||||
ldy #S.TLINE.MaxLen
|
|
||||||
sta (ZPObjPtr),y
|
|
||||||
|
|
||||||
ldy #S.TLINE.pBuf
|
|
||||||
jsr OBJ.PullWordY
|
|
||||||
stx ZPPtr1
|
|
||||||
sta ZPPtr1+1
|
|
||||||
|
|
||||||
ldy #S.OBJ.F
|
ldy #S.OBJ.F
|
||||||
lda #S.OBJ.F.bHScroll+S.OBJ.F.bCursor
|
lda #S.OBJ.F.bHScroll+S.OBJ.F.bCursor
|
||||||
|
@ -33,11 +27,16 @@ TLINE.New jsr OBJ.Create A = Class
|
||||||
|
|
||||||
jsr OBJ.PullY1X1hParent
|
jsr OBJ.PullY1X1hParent
|
||||||
|
|
||||||
jmp OBJ.Insert
|
jsr OBJ.Insert
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
lda hObj
|
||||||
|
* clc
|
||||||
|
rts
|
||||||
|
|
||||||
.9 >POP 7
|
.9 >POP 7
|
||||||
|
|
||||||
rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TLINE.Destroy clc
|
TLINE.Destroy clc
|
||||||
rts
|
rts
|
||||||
|
@ -46,7 +45,7 @@ TLINE.Run ldy #S.OBJ.S
|
||||||
lda (ZPObjPtr),y
|
lda (ZPObjPtr),y
|
||||||
bpl .9 S.OBJ.S.bActive
|
bpl .9 S.OBJ.S.bActive
|
||||||
|
|
||||||
jsr TLINE.GetBuf
|
jsr OBJ.GetBuf
|
||||||
|
|
||||||
lda (pStack) Event
|
lda (pStack) Event
|
||||||
cmp #C.DEL
|
cmp #C.DEL
|
||||||
|
@ -65,7 +64,7 @@ TLINE.Run ldy #S.OBJ.S
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.2 ldy #S.TLINE.MaxLen
|
.2 ldy #S.OBJ.BufSize
|
||||||
lda (ZPObjPtr),y
|
lda (ZPObjPtr),y
|
||||||
|
|
||||||
ldy #S.TLINE.Len
|
ldy #S.TLINE.Len
|
||||||
|
@ -160,7 +159,7 @@ TLINE.RUN.DEL ldy #S.TLINE.Ptr
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TLINE.Draw jsr TLINE.GetBuf
|
TLINE.Draw jsr OBJ.GetBuf
|
||||||
|
|
||||||
ldx #C.SPACE
|
ldx #C.SPACE
|
||||||
|
|
||||||
|
@ -226,14 +225,6 @@ TLINE.Activate
|
||||||
TLINE.Deactivate
|
TLINE.Deactivate
|
||||||
jmp OBJ.Draw.Body
|
jmp OBJ.Draw.Body
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TLINE.GetBuf ldy #S.TLINE.pBuf
|
|
||||||
lda (ZPObjPtr),y
|
|
||||||
sta ZPPtr1
|
|
||||||
iny
|
|
||||||
lda (ZPObjPtr),y
|
|
||||||
sta ZPPtr1+1
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
TLINE.GetLineChar
|
TLINE.GetLineChar
|
||||||
lda (ZPPtr1)
|
lda (ZPPtr1)
|
||||||
beq .8
|
beq .8
|
||||||
|
|
|
@ -52,17 +52,7 @@ CS.START cld
|
||||||
.DA CTX.Init
|
.DA CTX.Init
|
||||||
.DA CTX.Close
|
.DA CTX.Close
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DA OBJ.New
|
.DA SCRN.New
|
||||||
.DA OBJ.Exec
|
|
||||||
.DA OBJ.Destroy
|
|
||||||
.DA OBJ.Run
|
|
||||||
.DA OBJ.Draw
|
|
||||||
.DA OBJ.GetProp
|
|
||||||
.DA OBJ.SetProp
|
|
||||||
.DA OBJ.Activate
|
|
||||||
.DA OBJ.Deactivate
|
|
||||||
*--------------------------------------
|
|
||||||
J.ObjNew .DA SCRN.New
|
|
||||||
.DA DLG.New
|
.DA DLG.New
|
||||||
.DA LABEL.New
|
.DA LABEL.New
|
||||||
.DA TLINE.New
|
.DA TLINE.New
|
||||||
|
@ -71,6 +61,14 @@ J.ObjNew .DA SCRN.New
|
||||||
.DA CBOX.New
|
.DA CBOX.New
|
||||||
.DA BUT.New
|
.DA BUT.New
|
||||||
.DA RADIO.New
|
.DA RADIO.New
|
||||||
|
.DA OBJ.Exec
|
||||||
|
.DA OBJ.Destroy
|
||||||
|
.DA OBJ.Run
|
||||||
|
.DA OBJ.Draw
|
||||||
|
.DA OBJ.GetProp
|
||||||
|
.DA OBJ.SetProp
|
||||||
|
.DA OBJ.Activate
|
||||||
|
.DA OBJ.Deactivate
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
J.ObjDestroy .DA SCRN.Destroy
|
J.ObjDestroy .DA SCRN.Destroy
|
||||||
.DA DLG.Destroy
|
.DA DLG.Destroy
|
||||||
|
@ -187,9 +185,21 @@ LIB.UNLOAD dec LibCnt
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIB.GetCTX >SYSCALL2 GetMemPtr
|
LIB.GetCTX ldy #S.OBJ.hParent
|
||||||
|
lda (ZPObjPtr),y
|
||||||
|
|
||||||
|
.1 >SYSCALL2 GetMemPtr
|
||||||
>STYA ZPCtxPtr
|
>STYA ZPCtxPtr
|
||||||
rts
|
|
||||||
|
lda (ZPCtxPtr)
|
||||||
|
* cmp #S.OBJ.T.SCRN
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
ldy #S.OBJ.hParent
|
||||||
|
lda (ZPCtxPtr),y
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIB.GetOBJ >SYSCALL2 GetMemPtr
|
LIB.GetOBJ >SYSCALL2 GetMemPtr
|
||||||
>STYA ZPObjPtr
|
>STYA ZPObjPtr
|
||||||
|
|
|
@ -1,73 +0,0 @@
|
||||||
NEW
|
|
||||||
AUTO 3,1
|
|
||||||
.LIST OFF
|
|
||||||
.OP 65C02
|
|
||||||
.OR $2000
|
|
||||||
.TF lib/string.o
|
|
||||||
*--------------------------------------
|
|
||||||
.INB inc/macros.i
|
|
||||||
.INB inc/a2osx.i
|
|
||||||
*--------------------------------------
|
|
||||||
.DA #0 KERNEL
|
|
||||||
*--------------------------------------
|
|
||||||
>PSTR "strlen"
|
|
||||||
.DA CODE.strlen
|
|
||||||
>PSTR "strcat"
|
|
||||||
.DA CODE.strcat
|
|
||||||
>PSTR "strcpy"
|
|
||||||
.DA CODE.strcpy
|
|
||||||
>PSTR "strdup"
|
|
||||||
.DA CODE.strdup
|
|
||||||
>PSTR "strupr"
|
|
||||||
.DA CODE.strupr
|
|
||||||
>PSTR "strlwr"
|
|
||||||
.DA CODE.strlwr
|
|
||||||
>PSTR "strcmp"
|
|
||||||
.DA CODE.strcmp
|
|
||||||
>PSTR "strcasecmp"
|
|
||||||
.DA CODE.strcasecmp
|
|
||||||
.DA 0
|
|
||||||
*--------------------------------------
|
|
||||||
CODE.strlen .DA #CODE.strlen.L
|
|
||||||
>SYSCALL strlen
|
|
||||||
CODE.strlen.L .EQ *-CODE.strlen
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CODE.strcat .DA #CODE.strcat.L
|
|
||||||
>SYSCALL strcat
|
|
||||||
CODE.strcat.L .EQ *-CODE.strcat
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CODE.strcpy .DA #CODE.strcpy.L
|
|
||||||
>SYSCALL strcpy
|
|
||||||
CODE.strcpy.L .EQ *-CODE.strcpy
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CODE.strdup .DA #CODE.strdup.L
|
|
||||||
>SYSCALL strdup
|
|
||||||
CODE.strdup.L .EQ *-CODE.strdup
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CODE.strupr .DA #CODE.strupr.L
|
|
||||||
>SYSCALL strupr
|
|
||||||
CODE.strupr.L .EQ *-CODE.strupr
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CODE.strlwr .DA #CODE.strlwr.L
|
|
||||||
>SYSCALL strlwr
|
|
||||||
CODE.strlwr.L .EQ *-CODE.strlwr
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CODE.strcmp .DA #CODE.strcmp.L
|
|
||||||
>SYSCALL strcmp
|
|
||||||
CODE.strcmp.L .EQ *-CODE.strcmp
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CODE.strcasecmp .DA #CODE.strcasecmp.L
|
|
||||||
>SYSCALL strcasecmp
|
|
||||||
CODE.strcasecmp.L .EQ *-CODE.strcasecmp
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
|
||||||
SAVE usr/src/lib/string.o.s
|
|
||||||
ASM
|
|
Loading…
Reference in New Issue