CC stuff, new LIBTUI, some .h to complete....

This commit is contained in:
burniouf 2022-09-04 22:12:49 +02:00
parent fdd4c69416
commit 037fc870a5
41 changed files with 1657 additions and 1031 deletions

View File

@ -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

46
.Docs/LIBTUI.md Normal file
View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
*-------------------------------------- *--------------------------------------

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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

31
INCLUDE/SYS/stat.h.txt Normal file
View File

@ -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

7
INCLUDE/SYS/types.h.txt Normal file
View File

@ -0,0 +1,7 @@
NEW
AUTO 3,1
typedef short int dev_t;
MAN
TEXT include/sys/types.h

View File

@ -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

23
INCLUDE/time.h.txt Normal file
View File

@ -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

View File

@ -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

54
LIB/LIBTUI.O.S .txt Normal file
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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