mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-10 06:29:33 +00:00
CC stuff, new LIBTUI, some .h to complete....
This commit is contained in:
parent
fdd4c69416
commit
037fc870a5
|
@ -3,11 +3,22 @@
|
|||
## Copyright
|
||||
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
|
||||
Write a track (16 sectors)
|
||||
PUSHB = DSSS0000
|
||||
PUSHB = TrackNum * 4 : 0->136+
|
||||
PUSHW = Ptr to 16*256 buffer
|
||||
PUSHB DSSS0000
|
||||
PUSHB TrackNum
|
||||
PUSHW Ptr to 16*256 buffer
|
||||
|
||||
## RETURN VALUE
|
||||
CC : success, A = VolNum
|
||||
|
@ -15,10 +26,9 @@ Write a track (16 sectors)
|
|||
|
||||
# D2TrkWrite16s
|
||||
Write a track (16 sectors)
|
||||
PUSHB = DSSS0000
|
||||
PUSHB = VolNum
|
||||
PUSHB = HeadNum (0,1)
|
||||
PUSHB = TrackNum * 4 : 0->136+
|
||||
PUSHB DSSS0000
|
||||
PUSHB VolNum
|
||||
PUSHB TrackNum
|
||||
PUSHW = Ptr to 16*256 buffer
|
||||
|
||||
## RETURN VALUE
|
||||
|
|
46
.Docs/LIBTUI.md
Normal file
46
.Docs/LIBTUI.md
Normal 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.
|
@ -9,7 +9,7 @@ for /f %%a in ('copy /Z "%~f0" nul') do set "CR=%%a"
|
|||
mode con:cols=80 lines=24
|
||||
|
||||
cls
|
||||
echo Apple //e
|
||||
echo Apple //e
|
||||
|
||||
set /a c=0
|
||||
|
||||
|
@ -25,6 +25,11 @@ set SRCDIR=%~dp0..\LIB
|
|||
set FILTER=LIBBLKDEV.S*.txt
|
||||
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 SRCDIR=%~dp0..\LIB
|
||||
set FILTER=LIBGUI.S*.txt
|
||||
|
|
|
@ -22,7 +22,7 @@ CODE.Init stz ZPCCConst
|
|||
sta (pData),y
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CODE.Quit >LDA.G CC.hOutFile
|
||||
beq .8
|
||||
|
@ -59,13 +59,7 @@ CODE.PUSHAXI pha
|
|||
|
||||
pla
|
||||
*--------------------------------------
|
||||
CODE.PUSHI pha
|
||||
lda #$A9 LDA #imm
|
||||
jsr CODE.EmitByte
|
||||
bcs CODE.LDAXI.RTS
|
||||
|
||||
pla
|
||||
jsr CODE.EmitByte
|
||||
CODE.PUSHI jsr CODE.LDAI
|
||||
bcs CODE.LDAXI.RTS
|
||||
|
||||
bra CODE.PUSHA
|
||||
|
@ -153,25 +147,13 @@ CODE.INCPSTACK lda #$E6 INC zp
|
|||
lda #pStack
|
||||
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
|
||||
bcs .9
|
||||
|
||||
lda #$20 JSR
|
||||
jsr CODE.EmitByte
|
||||
bcs .9
|
||||
|
||||
lda #A2osX.SYSCALL
|
||||
jsr CODE.EmitByte
|
||||
bcs .9
|
||||
|
||||
lda /A2osX.SYSCALL
|
||||
bra CODE.EmitByte
|
||||
ldx #A2osX.SYSCALL
|
||||
ldy /A2osX.SYSCALL
|
||||
bra CODE.TOABSYX
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
@ -179,14 +161,40 @@ CODE.FPUCALL jsr CODE.LDXI
|
|||
bcs .9
|
||||
|
||||
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
|
||||
bcs .9
|
||||
|
||||
lda #A2osX.FPUCALL
|
||||
jsr CODE.EmitByte
|
||||
bcs .9
|
||||
|
||||
lda /A2osX.FPUCALL
|
||||
tya
|
||||
bra CODE.EmitByte
|
||||
|
||||
.9 rts
|
||||
|
@ -256,6 +264,41 @@ CODE.EmitDATA clc
|
|||
|
||||
.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
|
||||
bit bPass2
|
||||
bpl .8
|
||||
|
@ -281,10 +324,10 @@ CODE.DSSelect clc
|
|||
>PUSHWZ
|
||||
lda ZPCCConst
|
||||
clc
|
||||
adc PCC.FH+PCC.FH.IDATA
|
||||
adc PCC.FH+PCC.FH.CONST
|
||||
tay
|
||||
lda ZPCCConst+1
|
||||
adc PCC.FH+PCC.FH.IDATA+1
|
||||
adc PCC.FH+PCC.FH.CONST+1
|
||||
sec
|
||||
sbc #$20
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
CC.CORE.Init >SYSCALL SListNew
|
||||
CORE.Init >SYSCALL SListNew
|
||||
bcs .9
|
||||
|
||||
>STA.G CC.hDefines
|
||||
|
@ -40,8 +40,8 @@ CC.CORE.Init >SYSCALL SListNew
|
|||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CC.CORE.Quit jsr CC.FIO.FClose
|
||||
bne CC.CORE.Quit
|
||||
CORE.Quit jsr CC.FIO.FClose
|
||||
bne CORE.Quit
|
||||
|
||||
ldy ScopeIdx
|
||||
beq .1
|
||||
|
@ -74,7 +74,8 @@ CC.CORE.Quit jsr CC.FIO.FClose
|
|||
>LDA.G CC.hSymBuf
|
||||
jsr .7
|
||||
|
||||
jsr CC.SYM.LookupFreeAll
|
||||
.5 jsr CC.SYM.LookupFree
|
||||
bcc .5
|
||||
|
||||
>LDA.G CC.hStack
|
||||
|
||||
|
@ -185,73 +186,6 @@ CC.CompileStmt >LDYA L.CC.KW
|
|||
sec
|
||||
.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 : /* ... */
|
||||
cmp #'/'
|
||||
bne .90
|
||||
|
@ -567,6 +501,36 @@ CC.CheckCharNB cmp #C.SPACE
|
|||
clc
|
||||
.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
|
||||
bne CC.GetChar
|
||||
|
||||
|
@ -608,6 +572,9 @@ CC.IsEndArg cmp #']'
|
|||
cmp #';'
|
||||
beq .8
|
||||
|
||||
cmp #':'
|
||||
beq .8
|
||||
|
||||
cmp #')'
|
||||
beq .8
|
||||
|
||||
|
|
|
@ -48,7 +48,8 @@ CC.DECL jsr CC.TYPE.Decl
|
|||
jsr CC.SYM.GetAddr1
|
||||
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
|
||||
|
||||
.28 jsr CC.SYM.Store
|
||||
|
@ -69,8 +70,12 @@ CC.SCSPEC.AUTO
|
|||
CC.SCSPEC.REGISTER
|
||||
CC.SCSPEC.STATIC
|
||||
CC.SCSPEC.EXTERN
|
||||
.98 lda #E.CSYN
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.SCSPEC.TYPEDEF
|
||||
|
||||
>DEBUG
|
||||
|
||||
.98 lda #E.CSYN
|
||||
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
|
285
BIN/CC.S.EXP.txt
285
BIN/CC.S.EXP.txt
|
@ -111,19 +111,27 @@ CC.EXP.Eval ldx ZPPtr1 local : returned T/Q
|
|||
.22 jsr CC.IsDigit10 number ?
|
||||
bcs .24
|
||||
|
||||
ldy ZPPtr2
|
||||
ldy ZPPtr2 T
|
||||
bne .23
|
||||
|
||||
ldy #SYM.T.SINT
|
||||
sty ZPPtr2
|
||||
stz ZPPtr2+1
|
||||
stz ZPPtr2+1 Q
|
||||
|
||||
.23 jsr CC.EXP.GetNum
|
||||
bcs .29
|
||||
|
||||
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
|
||||
|
||||
jsr CC.EXP.AddConstCharP
|
||||
|
@ -132,7 +140,7 @@ CC.EXP.Eval ldx ZPPtr1 local : returned T/Q
|
|||
.30 jsr CC.GetCharNB
|
||||
bcs CC.EXP.Eval.ESYN
|
||||
|
||||
.31 jsr CC.IsEndArg , ; ) ?
|
||||
.31 jsr CC.IsEndArg , ; ) ? :
|
||||
bcc CC.EXP.Eval.End
|
||||
|
||||
jsr CC.IsOPChar
|
||||
|
@ -267,55 +275,6 @@ CC.EXP.BOPS bit #SYM.Q.PPPOINTER
|
|||
clc
|
||||
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
|
||||
>PUSHWI ZPLineBufPtr
|
||||
>PUSHBI 10
|
||||
|
@ -336,14 +295,14 @@ CC.EXP.GetNum cpy #SYM.T.FLOAT
|
|||
|
||||
beq .11
|
||||
|
||||
lda #E.TMISMATCH
|
||||
.90 lda #E.TMISMATCH
|
||||
* sec
|
||||
rts
|
||||
|
||||
.11 >PUSHW ZPLineBufPtr
|
||||
>PUSHWI ZPLineBufPtr
|
||||
>SYSCALL StrToF
|
||||
* bcs .9
|
||||
* bcs .99
|
||||
|
||||
ldy #4
|
||||
|
||||
|
@ -368,7 +327,7 @@ CC.EXP.GetNum cpy #SYM.T.FLOAT
|
|||
|
||||
.2 >SYSCALL StrToL
|
||||
|
||||
.3 bcs .9
|
||||
.3 bcs .99
|
||||
|
||||
ldy #1 anticipate 2 bytes if *
|
||||
lda ZPPtr2+1
|
||||
|
@ -388,7 +347,89 @@ CC.EXP.GetNum cpy #SYM.T.FLOAT
|
|||
|
||||
>POP 4
|
||||
* 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
|
||||
* ZPPtr3+1 = PREOPS
|
||||
|
@ -424,40 +465,8 @@ CC.EXP.GetVar stz ExpState
|
|||
.7 jsr CC.EXP.PushValue
|
||||
bcs .99
|
||||
|
||||
.8 lda ZPPtr2 target T
|
||||
beq .3
|
||||
.8 jmp CC.SYM.LookupCheckTQ
|
||||
|
||||
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
|
||||
*--------------------------------------
|
||||
* POSTOPS
|
||||
|
@ -559,17 +568,76 @@ CC.EXP.postdec lda ExpState
|
|||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.EXP.array ldy #SYM.Q
|
||||
CC.EXP.Idx ldy #SYM.Q
|
||||
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
|
||||
iny
|
||||
ora (ZPLookupSymPtr),y
|
||||
beq .1
|
||||
|
||||
* jsr CODE.DEBUG
|
||||
jsr CC.EXP.PushAddr array[int]...
|
||||
bcc .2
|
||||
|
||||
|
@ -589,11 +657,11 @@ CC.EXP.array ldy #SYM.Q
|
|||
jsr CODE.PUSHAXI ...sizeof on stack...
|
||||
bcs .9
|
||||
|
||||
ldx #FPU.iMUL
|
||||
ldx #FPU.wMUL
|
||||
jsr CODE.FPUCALL ...sizeof*int16...
|
||||
bcs .9
|
||||
|
||||
ldx #FPU.iAdd
|
||||
ldx #FPU.wAdd
|
||||
jsr CODE.FPUCALL ...add to base address
|
||||
bcs .9
|
||||
|
||||
|
@ -621,17 +689,17 @@ CC.EXP.array ldy #SYM.Q
|
|||
lda (ZPLookupSymPtr),y
|
||||
jsr CODE.PUSHAXI [][SIZE] on stack
|
||||
|
||||
ldx #FPU.iMUL
|
||||
ldx #FPU.wMUL
|
||||
jsr CODE.FPUCALL [][SIZE] * int16 on stack
|
||||
|
||||
jsr CC.EXP.GetSymSizeOfInAXC
|
||||
jsr CODE.PUSHAXI ...sizeof on stack...
|
||||
bcs .9
|
||||
|
||||
ldx #FPU.iMUL
|
||||
ldx #FPU.wMUL
|
||||
jsr CODE.FPUCALL ...sizeof*int16...
|
||||
|
||||
ldx #FPU.iAdd
|
||||
ldx #FPU.wAdd
|
||||
jsr CODE.FPUCALL ...add to base address
|
||||
bcs .9
|
||||
|
||||
|
@ -698,10 +766,12 @@ CC.EXP.PREOPS bmi .8
|
|||
*--------------------------------------
|
||||
CC.EXP.Ref ldy #SYM.Q
|
||||
lda (ZPLookupSymPtr),y
|
||||
|
||||
clc
|
||||
adc #SYM.Q.POINTER
|
||||
bcs .9 more than ***
|
||||
|
||||
and #%11001111
|
||||
sta (ZPLookupSymPtr),y
|
||||
|
||||
bit ExpState
|
||||
|
@ -906,10 +976,21 @@ CC.EXP.PushValue
|
|||
jsr CC.EXP.GetSymSizeOfInAXC
|
||||
tay
|
||||
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
|
||||
|
||||
>LDYA L.PCC.PushValue
|
||||
>LDYA L.PCC.PushValueY
|
||||
jmp CODE.EmitPCC
|
||||
|
||||
.99 rts
|
||||
|
|
|
@ -165,9 +165,6 @@ CC.F.Def.END >LDYA L.PCC.LEAVE
|
|||
jsr CODE.EmitPCC
|
||||
bcs .9
|
||||
|
||||
jsr CC.Pop T
|
||||
jsr CC.Pop Q
|
||||
|
||||
jsr CC.SYM.FreeScope
|
||||
|
||||
stz LocalPtr back to global
|
||||
|
@ -208,33 +205,11 @@ CC.F.CallRetV sec
|
|||
jsr CODE.nAddLocal
|
||||
|
||||
.20 jsr CC.GetNextCharNB skip '('
|
||||
bcs .10
|
||||
bcs .90
|
||||
|
||||
ldy #SYM.Q
|
||||
* >DEBUG
|
||||
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
|
||||
jsr CC.SYM.LookupCheckTQ
|
||||
bcs .93
|
||||
*--------------------------------------
|
||||
.2 sta ZPPtr2+1
|
||||
|
||||
stz ZPPtr1 Reset VARIADIC byte count
|
||||
|
||||
lda #SYM.Def
|
||||
|
@ -274,12 +249,12 @@ CC.F.CallRetV sec
|
|||
|
||||
.5 jsr CC.GetCharNB
|
||||
|
||||
.10 bcs .90
|
||||
bcs .90
|
||||
|
||||
cmp #','
|
||||
bne .6
|
||||
|
||||
jsr CC.GetNextCharNB Skip ','
|
||||
jsr CC.GetNextCharNBNL Skip ','
|
||||
|
||||
jsr CC.F.GetTQ
|
||||
bne .3 Another ARG....
|
||||
|
@ -310,9 +285,6 @@ CC.F.CallRetV sec
|
|||
bra .93
|
||||
|
||||
.90 lda #E.CSYN
|
||||
bra .92
|
||||
|
||||
.91 lda #E.TMISMATCH
|
||||
|
||||
.92 sec
|
||||
|
||||
|
@ -375,8 +347,8 @@ CC.F.Call2 ldy #SYM.Q
|
|||
.5
|
||||
ldy #SYM.Addr+1
|
||||
lda (ZPLookupSymPtr),y
|
||||
cmp #3
|
||||
bcs .8 not a SYS/FPU call...Ret value on stack
|
||||
cmp #3+LIBS.MAX
|
||||
bcs .8 not a SYS/FPU/LIB call...Ret value on stack
|
||||
|
||||
>LDYA ZPPtr2 function T/Q
|
||||
jsr CC.TYPE.SizeOf
|
||||
|
@ -419,7 +391,12 @@ CC.F.Call3 ldy #SYM.Addr+1
|
|||
|
||||
jmp CODE.FPUCALL
|
||||
|
||||
.2 lda #$EA NOP
|
||||
.2 cpy #3+LIBS.MAX
|
||||
bcs .3
|
||||
|
||||
jmp CODE.LIBCALL
|
||||
|
||||
.3 lda #$EA NOP
|
||||
jsr CODE.EmitByte
|
||||
bcs .99
|
||||
|
||||
|
|
|
@ -1,6 +1,62 @@
|
|||
NEW
|
||||
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
|
||||
>SYSCALL ArgV
|
||||
|
||||
|
@ -100,7 +156,30 @@ CC.FIO.FClose >LDA.G hFilePtr
|
|||
|
||||
.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
|
||||
>STYA ZPPtr1
|
||||
|
||||
|
|
148
BIN/CC.S.KW.txt
148
BIN/CC.S.KW.txt
|
@ -3,7 +3,7 @@ NEW
|
|||
*--------------------------------------
|
||||
* Built in Keywords
|
||||
*--------------------------------------
|
||||
CC.KW.IF jsr CC.KW.BEGIN
|
||||
CC.KW.IF jsr CC.KW.BEGIN00
|
||||
bcs .99
|
||||
|
||||
jsr CC.GetCharNB
|
||||
|
@ -96,7 +96,7 @@ CC.KW.ELSE.END lda #'X' define EXIT Label
|
|||
clv pop context
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.KW.WHILE jsr CC.KW.BEGIN
|
||||
CC.KW.WHILE jsr CC.KW.BEGIN00
|
||||
bcs .99
|
||||
|
||||
lda #'C' define CONT Label
|
||||
|
@ -153,7 +153,7 @@ CC.KW.WHILE.END lda #'C'
|
|||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.KW.DO jsr CC.KW.BEGIN
|
||||
CC.KW.DO jsr CC.KW.BEGIN00
|
||||
bcs .99
|
||||
|
||||
lda #'C' define CONT Label
|
||||
|
@ -233,7 +233,7 @@ CC.KW.FOR jsr CC.GetCharNB
|
|||
cmp #'('
|
||||
bne .29
|
||||
|
||||
jsr CC.KW.BEGIN
|
||||
jsr CC.KW.BEGIN00
|
||||
bcs .29
|
||||
|
||||
jsr CC.GetNextCharNB skip '('
|
||||
|
@ -340,12 +340,123 @@ CC.KW.FOR.END lda #$60
|
|||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.KW.SWITCH
|
||||
CC.KW.CASE
|
||||
CC.KW.DEFAULT
|
||||
lda #E.CSYN
|
||||
CC.KW.SWITCH jsr CC.GetCharNB
|
||||
bcs .98
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
.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'
|
||||
|
||||
|
@ -375,8 +486,6 @@ CC.KW.RETURN ldy CStackPtr
|
|||
beq .9
|
||||
|
||||
.1 iny skip ; or }
|
||||
beq .9
|
||||
|
||||
lda (ZPCCStack),y
|
||||
bmi .7 f()
|
||||
|
||||
|
@ -457,6 +566,19 @@ CC.KW.STRUCT >ENTER 4
|
|||
.99 >LEAVE
|
||||
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
|
||||
bcs .99
|
||||
|
||||
|
@ -479,7 +601,8 @@ CC.KW.BEGIN jsr CC.SYM.NewCPSID
|
|||
>LDA.G CC.CmdSave
|
||||
jmp CC.Push
|
||||
|
||||
.99 rts
|
||||
.99
|
||||
CC.KW.BEGIN.RTS rts
|
||||
*--------------------------------------
|
||||
CC.KW.STMT jsr CC.GetNextCharNBNL
|
||||
bcs .9
|
||||
|
@ -558,6 +681,9 @@ CC.KW.LookupLabel
|
|||
lda (ZPCCStack),y
|
||||
iny
|
||||
|
||||
iny
|
||||
iny
|
||||
|
||||
sty ArgIndex
|
||||
|
||||
ply
|
||||
|
|
|
@ -24,7 +24,7 @@ CC.Link >LDYA L.MSG.LINKING
|
|||
>PUSHWI $ffff All
|
||||
>PUSHWZ from Start
|
||||
>SYSCALL SListGetData
|
||||
bcs .9
|
||||
bcs .99
|
||||
|
||||
ldy #SYM.Addr+1
|
||||
lda (ZPSymBufPtr),y
|
||||
|
@ -32,74 +32,124 @@ CC.Link >LDYA L.MSG.LINKING
|
|||
ora (ZPSymBufPtr),y
|
||||
bne .6
|
||||
|
||||
jsr CC.Link.LIBC
|
||||
bcc .6
|
||||
jsr CC.Link.Lookup
|
||||
bcs .9
|
||||
|
||||
jsr CC.Link.Dump
|
||||
lda #E.FUNDEF
|
||||
sec
|
||||
bra .9
|
||||
jsr CC.Link.Update
|
||||
bcs .99
|
||||
|
||||
.6 >LDA.G bTrace
|
||||
bpl .7
|
||||
|
||||
jsr CC.Link.Dump
|
||||
bcs .9
|
||||
bcs .99
|
||||
|
||||
.7 >LDYA ZPPtr2
|
||||
jmp .1
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 rts
|
||||
.9 jsr CC.Link.Dump
|
||||
lda #E.FUNDEF
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
* 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
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.10 iny
|
||||
.1 iny
|
||||
lda (pData),y
|
||||
bne .10
|
||||
bne .1
|
||||
|
||||
phy Symbol Len
|
||||
tya
|
||||
tax Symbol Len
|
||||
|
||||
ldx #0
|
||||
|
||||
.1 lda (ZPLookupPtr)
|
||||
.2 lda (ZPLookupPtr)
|
||||
beq .9 Ending 0, not found....
|
||||
|
||||
pla
|
||||
pha Get Back Len
|
||||
txa Get Back Len
|
||||
cmp (ZPLookupPtr) Same Len ?
|
||||
bne .4
|
||||
|
||||
tay
|
||||
|
||||
.2 lda (ZPLookupPtr),y
|
||||
.3 lda (ZPLookupPtr),y
|
||||
|
||||
dey
|
||||
cmp (pData),y
|
||||
bne .4
|
||||
|
||||
tya
|
||||
bne .2
|
||||
bne .3
|
||||
|
||||
lda (ZPLookupPtr)
|
||||
jsr CC.ZPLookupPtrAddAp1 Skip LEN\Symbol
|
||||
tay
|
||||
iny
|
||||
lda (ZPLookupPtr),y get fID
|
||||
|
||||
ldy #2 Skip LEN
|
||||
lda (ZPLookupPtr),y
|
||||
pha
|
||||
dey
|
||||
lda (ZPLookupPtr),y
|
||||
ply
|
||||
clc
|
||||
rts
|
||||
|
||||
jsr CC.SYM.SetAddrYA
|
||||
.4 lda (ZPLookupPtr)
|
||||
inc
|
||||
jsr CC.ZPLookupPtrAddAp1 Skip LEN\Symbol\ID
|
||||
bra .2
|
||||
|
||||
plx
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* A=ID X=SYS|FPU|LIB
|
||||
*--------------------------------------
|
||||
CC.Link.Update ldy #SYM.Addr
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
iny
|
||||
txa
|
||||
sta (ZPSymBufPtr),y
|
||||
|
||||
>PUSHB.G CC.hScopes
|
||||
>PUSHW ZPPtr1 SymID
|
||||
|
@ -110,20 +160,6 @@ CC.Link.LIBC >LDYA L.CC.LIBC
|
|||
>PUSHA
|
||||
>SYSCALL SListSetData
|
||||
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
|
||||
|
||||
|
|
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
|
||||
*--------------------------------------
|
||||
PCC.FH .PH $2000
|
||||
PCC.FH.2000 cld
|
||||
PCC.FH.ORG cld
|
||||
jmp (PCC.FH.JMP,x)
|
||||
.DA #$61 6502,Level 1 (65c02)
|
||||
.DA #1 BIN Layout Version 1
|
||||
.DA #0 S.PS.F.EVENT
|
||||
.DA #0
|
||||
PCC.FH.CSSIZE .EQ *-PCC.FH.2000
|
||||
.DA $FFFF * Code Size (without Constants)
|
||||
PCC.FH.DSSIZE .EQ *-PCC.FH.2000
|
||||
.DA $FFFF * Data Size
|
||||
PCC.FH.CSSIZE .EQ *-PCC.FH.ORG
|
||||
.DA $FFFF Code Size (without Constants)
|
||||
PCC.FH.DSSIZE .EQ *-PCC.FH.ORG
|
||||
.DA $FFFF Data Size
|
||||
.DA #256 Stack Size
|
||||
.DA #4 ZP Size
|
||||
.DA 0
|
||||
|
@ -25,15 +25,83 @@ PCC.FH.JMP .DA PCC.FH.INIT
|
|||
.DA PCC.FH.RUN
|
||||
.DA PCC.FH.DOEVENT
|
||||
.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 0
|
||||
|
||||
PCC.FH.INIT
|
||||
* TODO : LoadLib code
|
||||
PCC.FH.QUIT
|
||||
* TODO : UnloadLib code
|
||||
PCC.FH.DOEVENT clc
|
||||
PCC.FH.INIT >LDYA PCC.FH.ORG+PCC.FH.LIBS
|
||||
>STYA ZS.RT.Ptr1
|
||||
|
||||
ldx #0
|
||||
|
||||
.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
|
||||
|
||||
* int main(int argc, char *argv[]) ;
|
||||
|
@ -66,17 +134,20 @@ PCC.FH.RUN lda #0
|
|||
|
||||
jsr PCC.FH.CS Execute INIT code
|
||||
|
||||
>PUSHWZ returned int=0
|
||||
|
||||
lda #0
|
||||
>PUSHA returned int=0
|
||||
>PUSHA
|
||||
|
||||
>PUSHA int ARGC (hi byte)
|
||||
|
||||
ldy #S.PS.ARGC
|
||||
lda (pPS),y
|
||||
>PUSHA int ARGC
|
||||
>PUSHA int ARGC (lo byte)
|
||||
|
||||
>PUSHW pData *char[] ARGV
|
||||
* >DEBUG
|
||||
PCC.FH.MAIN .EQ *-PCC.FH.2000+1
|
||||
jsr $FFFF * jsr main
|
||||
PCC.FH.MAIN .EQ *-PCC.FH.ORG+1
|
||||
jsr $FFFF jsr main
|
||||
>PULLA
|
||||
inc pStack pull returned int
|
||||
sec
|
||||
|
@ -213,12 +284,12 @@ PCC.PushLAddrL.L .EQ *-PCC.PushLAddrL
|
|||
*--------------------------------------
|
||||
PCC.PushIAddr .DA #PCC.PushIAddr.L
|
||||
clc
|
||||
adc PCC.FH.2000+PCC.FH.IDATA
|
||||
adc PCC.FH.ORG+PCC.FH.CONST
|
||||
dec pStack
|
||||
>PUSHA
|
||||
|
||||
txa
|
||||
adc PCC.FH.2000+PCC.FH.IDATA+1
|
||||
adc PCC.FH.ORG+PCC.FH.CONST+1
|
||||
ldy #1
|
||||
sta (pStack),y
|
||||
|
||||
|
@ -248,10 +319,10 @@ PCC.GetLAddr1.L .EQ *-PCC.GetLAddr1
|
|||
*--------------------------------------
|
||||
PCC.GetIAddr1 .DA #PCC.GetIAddr1.L
|
||||
clc
|
||||
adc PCC.FH.2000+PCC.FH.IDATA
|
||||
adc PCC.FH.ORG+PCC.FH.CONST
|
||||
sta ZS.RT.Ptr1
|
||||
txa
|
||||
adc PCC.FH.2000+PCC.FH.IDATA+1
|
||||
adc PCC.FH.ORG+PCC.FH.CONST+1
|
||||
sta ZS.RT.Ptr1+1
|
||||
|
||||
PCC.GetIAddr1.L .EQ *-PCC.GetIAddr1
|
||||
|
@ -274,13 +345,32 @@ PCC.PopAddr1 .DA #PCC.PopAddr1.L
|
|||
|
||||
PCC.PopAddr1.L .EQ *-PCC.PopAddr1
|
||||
*--------------------------------------
|
||||
PCC.SetValue .DA #PCC.SetValue.L
|
||||
.1 lda (pStack),y
|
||||
PCC.PopValue1 .DA #PCC.PopValue1.L
|
||||
>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
|
||||
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
|
||||
|
||||
PCC.SetValue.L .EQ *-PCC.SetValue
|
||||
PCC.PopValueX.L .EQ *-PCC.PopValueX
|
||||
*--------------------------------------
|
||||
PCC.GetLAddr2 .DA #PCC.GetLAddr2.L
|
||||
clc
|
||||
|
@ -293,10 +383,10 @@ PCC.GetLAddr2.L .EQ *-PCC.GetLAddr2
|
|||
*--------------------------------------
|
||||
PCC.GetIAddr2 .DA #PCC.GetIAddr2.L
|
||||
clc
|
||||
adc PCC.FH.2000+PCC.FH.IDATA
|
||||
adc PCC.FH.ORG+PCC.FH.CONST
|
||||
sta ZS.RT.Ptr2
|
||||
txa
|
||||
adc PCC.FH.2000+PCC.FH.IDATA+1
|
||||
adc PCC.FH.ORG+PCC.FH.CONST+1
|
||||
sta ZS.RT.Ptr2+1
|
||||
|
||||
PCC.GetIAddr2.L .EQ *-PCC.GetIAddr2
|
||||
|
@ -337,14 +427,31 @@ PCC.PushDeref2 .DA #PCC.PushDeref2.L
|
|||
|
||||
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
|
||||
>PUSHA
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
PCC.PushValue.L .EQ *-PCC.PushValue
|
||||
PCC.PushValueY.L .EQ *-PCC.PushValueY
|
||||
*--------------------------------------
|
||||
PCC.Inc1 .DA #PCC.Inc1.L
|
||||
lda (ZS.RT.Ptr2)
|
||||
|
@ -433,7 +540,33 @@ PCC.Dec4 .DA #PCC.Dec4.L
|
|||
|
||||
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
|
||||
*--------------------------------------
|
||||
|
|
|
@ -28,7 +28,7 @@ CC.STMT jsr CC.GetCharNB
|
|||
|
||||
jmp CC.SYM.LookupFree
|
||||
|
||||
.60 jsr CC.CORE.SetVar
|
||||
.60 jsr STMT.SetVar
|
||||
bcs .99
|
||||
|
||||
jmp CC.SYM.LookupFree
|
||||
|
@ -36,6 +36,68 @@ CC.STMT jsr CC.GetCharNB
|
|||
.9 lda #E.CSYN
|
||||
sec
|
||||
.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
|
||||
*--------------------------------------
|
||||
|
@ -73,7 +135,7 @@ CC.STMT.Stmt.END
|
|||
beq .8
|
||||
|
||||
cmp #';' must be ';' on stack....
|
||||
bra CC.STMT.CPStmt.POP
|
||||
bra CC.STMT.POP
|
||||
|
||||
.8 clc
|
||||
|
||||
|
@ -85,8 +147,8 @@ CC.STMT.CPStmt.END
|
|||
bcs CC.STMT.Stmt.RTS
|
||||
|
||||
cmp #'}' must be '}' on stack....
|
||||
CC.STMT.CPStmt.POP
|
||||
bne .98
|
||||
|
||||
CC.STMT.POP bne .98
|
||||
|
||||
iny
|
||||
lda (ZPCCStack),y
|
||||
|
@ -98,7 +160,7 @@ CC.STMT.CPStmt.POP
|
|||
|
||||
lda CStackPtr
|
||||
* clc
|
||||
adc #5
|
||||
adc #7
|
||||
sta CStackPtr
|
||||
|
||||
jsr CC.Pop Locals
|
||||
|
|
|
@ -613,53 +613,72 @@ CC.SYM.LookupFree
|
|||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CC.SYM.LookupFreeAll
|
||||
* ZPPtr2 = expected T/Q
|
||||
* ZPLookupSymPtr
|
||||
*--------------------------------------
|
||||
CC.SYM.LookupCheckTQ
|
||||
lda ZPPtr2 target T
|
||||
bne .1
|
||||
|
||||
.1 jsr CC.SYM.LookupFree
|
||||
bcc .1
|
||||
lda (ZPLookupSymPtr) SYM.T
|
||||
sta ZPPtr2 T
|
||||
|
||||
ldy #SYM.Q
|
||||
lda (ZPLookupSymPtr),y
|
||||
and #$F8 ignore VOLATILE|FUNC|FASTCALL
|
||||
sta ZPPtr2+1 Q
|
||||
|
||||
clc
|
||||
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
|
||||
*--------------------------------------
|
||||
CC.SYM.SetValue jsr CC.SYM.GetSymSizeOfInAXC
|
||||
tay
|
||||
dey
|
||||
jsr CODE.LDYI
|
||||
CC.SYM.PopValue jsr CC.SYM.GetYASizeOfInAXC
|
||||
tax
|
||||
dex
|
||||
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
|
||||
|
||||
>LDYA L.PCC.SetValue
|
||||
>LDYA L.PCC.PopValueX
|
||||
jmp CODE.EmitPCC
|
||||
|
||||
.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
|
||||
*--------------------------------------
|
||||
CC.SYM.GetTypeInYA
|
||||
|
@ -671,16 +690,6 @@ CC.SYM.GetTypeInYA
|
|||
pla
|
||||
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
|
||||
*--------------------------------------
|
||||
CC.SYM.GetSymSizeOfInAXC
|
||||
|
|
395
BIN/CC.S.txt
395
BIN/CC.S.txt
|
@ -11,6 +11,7 @@ NEW
|
|||
.INB inc/mli.e.i
|
||||
*--------------------------------------
|
||||
FILES.MAX .EQ 4
|
||||
LIBS.MAX .EQ 4
|
||||
SCOPE.MAX .EQ 16
|
||||
LOOKUP.MAX .EQ 16
|
||||
*--------------------------------------
|
||||
|
@ -23,6 +24,9 @@ SYM.T.SINT .EQ 5
|
|||
SYM.T.ULONG .EQ 6
|
||||
SYM.T.SLONG .EQ 7
|
||||
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.Q .EQ 1
|
||||
SYM.Q.POINTER .EQ %01000000
|
||||
|
@ -50,6 +54,12 @@ SYM.Def .EQ 8 Funtions : fTQ,a1TQ,a2TQ....
|
|||
*
|
||||
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
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
|
@ -120,6 +130,8 @@ L.MSG.ERROR .DA MSG.ERROR
|
|||
L.MSG.SUMMARY .DA MSG.SUMMARY
|
||||
L.MSG.NOMAIN .DA MSG.NOMAIN
|
||||
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.PREOPS .DA CC.PREOPS
|
||||
|
@ -134,7 +146,7 @@ J.CC.PREOPS .DA CC.EXP.Ref
|
|||
L.CC.POSTOPS .DA CC.POSTOPS
|
||||
J.CC.POSTOPS .DA CC.EXP.postinc
|
||||
.DA CC.EXP.postdec
|
||||
.DA CC.EXP.array
|
||||
.DA CC.EXP.idx
|
||||
.DA CC.EXP.Struct
|
||||
.DA CC.EXP.pStruct
|
||||
L.CC.BOPS .DA CC.BOPS
|
||||
|
@ -164,12 +176,15 @@ J.CC.KW .DA CC.KW.IF
|
|||
*--------------------------------------
|
||||
.DA CC.KW.SIZEOF
|
||||
.DA CC.KW.STRUCT
|
||||
.DA CC.KW.UNION
|
||||
.DA CC.KW.ENUM
|
||||
*--------------------------------------
|
||||
J.CC.KW.END .DA CC.KW.IF.END
|
||||
.DA CC.KW.WHILE.END
|
||||
.DA CC.KW.ELSE.END
|
||||
.DA CC.KW.DO.END
|
||||
.DA CC.KW.FOR.END
|
||||
.DA CC.KW.SWITCH.END
|
||||
*--------------------------------------
|
||||
J.CC.SCSPEC .DA CC.SCSPEC.AUTO
|
||||
.DA CC.SCSPEC.REGISTER
|
||||
|
@ -194,7 +209,8 @@ J.CC.STYPES .DA CC.TYPE.SCHAR
|
|||
.DA CC.TYPE.SLONG
|
||||
*--------------------------------------
|
||||
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.DEBUG .DA PCC.DEBUG
|
||||
|
@ -217,14 +233,18 @@ L.PCC.GetLAddr1 .DA PCC.GetLAddr1
|
|||
L.PCC.GetIAddr1 .DA PCC.GetIAddr1
|
||||
L.PCC.GetUAddr1 .DA PCC.GetUAddr1
|
||||
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.GetIAddr2 .DA PCC.GetIAddr2
|
||||
L.PCC.GetUAddr2 .DA PCC.GetUAddr2
|
||||
L.PCC.PopAddr2 .DA PCC.PopAddr2
|
||||
L.PCC.Deref2 .DA PCC.Deref2
|
||||
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.Inc2 .DA PCC.Inc2
|
||||
L.PCC.Inc4 .DA PCC.Inc4
|
||||
|
@ -304,10 +324,11 @@ CS.RUN >PUSHW L.MSG.GREETINGS
|
|||
jsr CS.RUN.ARGS
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
jsr CC.CORE.Init
|
||||
jsr CORE.Init
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
jsr CODE.Init
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
jsr CC.FIO.FOpen1st
|
||||
bcs CS.INIT.RTS
|
||||
|
@ -345,6 +366,9 @@ CS.RUN.CLOOP jsr CC.CompileFile
|
|||
cmp #MLI.E.EOF
|
||||
bne .9
|
||||
|
||||
jsr CODE.EmitTail
|
||||
bcs .9
|
||||
|
||||
jsr CC.FIO.FClose
|
||||
bne .2
|
||||
*--------------------------------------
|
||||
|
@ -371,6 +395,7 @@ CS.RUN.ARGS inc ArgIndex
|
|||
|
||||
ldy #1
|
||||
lda (ZPPtr1),y
|
||||
beq .90
|
||||
|
||||
ldx #OptionVars-OptionList-1
|
||||
|
||||
|
@ -382,7 +407,21 @@ CS.RUN.ARGS inc ArgIndex
|
|||
|
||||
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
|
||||
sta (pData),y
|
||||
bra CS.RUN.ARGS
|
||||
|
@ -422,9 +461,22 @@ CS.DOEVENT sec
|
|||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT jsr CODE.Quit
|
||||
jsr CC.CORE.Quit
|
||||
jsr CORE.Quit
|
||||
|
||||
>LDA.G hLineBuf
|
||||
.1 >LDA.G LibCount
|
||||
beq .6
|
||||
|
||||
dec
|
||||
sta (pData),y
|
||||
|
||||
clc
|
||||
adc #hLibOs
|
||||
tay
|
||||
lda (pData),y
|
||||
>SYSCALL FreeMem
|
||||
bra .1
|
||||
|
||||
.6 >LDA.G hLineBuf
|
||||
beq .8
|
||||
|
||||
>SYSCALL FreeMem
|
||||
|
@ -540,29 +592,14 @@ PrintErrorMsg >LDA.G CC.hDefineBuf
|
|||
>SYSCALL FPrintF
|
||||
rts
|
||||
*--------------------------------------
|
||||
PrintSummary lda ZPCCCode+1
|
||||
sta PCC.FH+PCC.FH.IDATA+1
|
||||
PrintSummary >PUSHW L.MSG.SUMMARY
|
||||
lda ZPCCCode+1
|
||||
sec
|
||||
sbc #$20
|
||||
sta PCC.FH+PCC.FH.CSSIZE+1
|
||||
|
||||
lda ZPCCCode
|
||||
sta PCC.FH+PCC.FH.CSSIZE
|
||||
sta PCC.FH+PCC.FH.IDATA
|
||||
|
||||
>PUSHW L.MSG.SUMMARY
|
||||
|
||||
>PUSHW PCC.FH+PCC.FH.CSSIZE
|
||||
|
||||
>PUSHA
|
||||
>PUSHB ZPCCCode
|
||||
>PUSHW ZPCCConst
|
||||
|
||||
lda ZPCCData+1
|
||||
>PUSHA
|
||||
sta PCC.FH+PCC.FH.DSSIZE+1
|
||||
lda ZPCCData
|
||||
>PUSHA
|
||||
sta PCC.FH+PCC.FH.DSSIZE
|
||||
|
||||
>PUSHW ZPCCData
|
||||
>PUSHBI 6
|
||||
>SYSCALL PrintF
|
||||
* >DEBUG
|
||||
|
@ -588,8 +625,8 @@ CS.END
|
|||
MSG.GREETINGS .AZ "\r\nA2osX C Compiler %d.%d\r\n\r\n"
|
||||
MSG.USAGE .AS "Usage : CC <option> srcfile.c dstfile\r\n"
|
||||
.AS " -D : Debug Mode\r\n"
|
||||
.AS " -T : Trace On"
|
||||
.AZ "\r\n"
|
||||
.AS " -T : Trace On\r\n"
|
||||
.AZ " -L Libname1 -O Libname2 ...\r\n"
|
||||
MSG.READING .AZ "*** Reading file: %s\r\n"
|
||||
MSG.LINKING .AZ "*** Linking..."
|
||||
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.RTSTK .AZ "<pBase=%H, pVar=%H, (pVar)=%H, pStack=%H>\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."
|
||||
*--------------------------------------
|
||||
OptionList .AS "DdTt"
|
||||
OptionList .AS "DdTtLl"
|
||||
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
|
||||
*--------------------------------------
|
||||
ENV.INCLUDE .AZ "INCLUDE"
|
||||
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.Cnt .EQ *-CC.OPChars
|
||||
|
@ -695,6 +739,8 @@ CC.KW >PSTR "if"
|
|||
>PSTR "return"
|
||||
>PSTR "sizeof"
|
||||
>PSTR "struct"
|
||||
>PSTR "union"
|
||||
>PSTR "enum"
|
||||
.HS 00
|
||||
CC.KW2.IF >PSTR "else"
|
||||
.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.LEN .EQ *-CC.MAIN.DEF
|
||||
*--------------------------------------
|
||||
CC.LIBC >PSTR "chtyp"
|
||||
.DA #2,#1,#SYS.ChTyp
|
||||
CC.SYSCALL >PSTR "chtyp"
|
||||
.DA #SYS.ChTyp
|
||||
>PSTR "chmod"
|
||||
.DA #2,#1,#SYS.ChMod
|
||||
.DA #SYS.ChMod
|
||||
>PSTR "fstat"
|
||||
.DA #2,#1,#SYS.FStat
|
||||
.DA #SYS.FStat
|
||||
>PSTR "stat"
|
||||
.DA #2,#1,#SYS.Stat
|
||||
.DA #SYS.Stat
|
||||
>PSTR "mkdir"
|
||||
.DA #2,#1,#SYS.MKDir
|
||||
.DA #SYS.MKDir
|
||||
>PSTR "mknod"
|
||||
.DA #2,#1,#SYS.MKNod
|
||||
.DA #SYS.MKNod
|
||||
>PSTR "mkfifo"
|
||||
.DA #2,#1,#SYS.MKFIFO
|
||||
.DA #SYS.MKFIFO
|
||||
>PSTR "pipe"
|
||||
.DA #2,#1,#SYS.Pipe
|
||||
.DA #SYS.Pipe
|
||||
>PSTR "opendir"
|
||||
.DA #2,#1,#SYS.OpenDir
|
||||
.DA #SYS.OpenDir
|
||||
>PSTR "readdir"
|
||||
.DA #2,#1,#SYS.ReadDir
|
||||
.DA #SYS.ReadDir
|
||||
>PSTR "closedir"
|
||||
.DA #2,#1,#SYS.CloseDir
|
||||
.DA #SYS.CloseDir
|
||||
>PSTR "open"
|
||||
.DA #2,#1,#SYS.Open
|
||||
.DA #SYS.Open
|
||||
>PSTR "close"
|
||||
.DA #2,#1,#SYS.Close
|
||||
.DA #SYS.Close
|
||||
>PSTR "read"
|
||||
.DA #2,#1,#SYS.Read
|
||||
.DA #SYS.Read
|
||||
>PSTR "write"
|
||||
.DA #2,#1,#SYS.Write
|
||||
.DA #SYS.Write
|
||||
>PSTR "chown"
|
||||
.DA #2,#1,#SYS.ChOwn
|
||||
.DA #SYS.ChOwn
|
||||
>PSTR "fputc"
|
||||
.DA #2,#1,#SYS.FPutC
|
||||
.DA #SYS.FPutC
|
||||
>PSTR "putchar"
|
||||
.DA #2,#1,#SYS.PutChar
|
||||
.DA #SYS.PutChar
|
||||
>PSTR "getc"
|
||||
.DA #2,#1,#SYS.GetC
|
||||
.DA #SYS.GetC
|
||||
>PSTR "getchar"
|
||||
.DA #2,#1,#SYS.GetChar
|
||||
.DA #SYS.GetChar
|
||||
>PSTR "fputs"
|
||||
.DA #2,#1,#SYS.FPutS
|
||||
.DA #SYS.FPutS
|
||||
>PSTR "puts"
|
||||
.DA #2,#1,#SYS.PutS
|
||||
.DA #SYS.PutS
|
||||
>PSTR "fgets"
|
||||
.DA #2,#1,#SYS.FGetS
|
||||
.DA #SYS.FGetS
|
||||
>PSTR "ungetc"
|
||||
.DA #2,#1,#SYS.UngetC
|
||||
.DA #SYS.UngetC
|
||||
>PSTR "fopen"
|
||||
.DA #2,#1,#SYS.FOpen
|
||||
.DA #SYS.FOpen
|
||||
>PSTR "fclose"
|
||||
.DA #2,#1,#SYS.FClose
|
||||
.DA #SYS.FClose
|
||||
>PSTR "fread"
|
||||
.DA #2,#1,#SYS.FRead
|
||||
.DA #SYS.FRead
|
||||
>PSTR "fwrite"
|
||||
.DA #2,#1,#SYS.FWrite
|
||||
.DA #SYS.FWrite
|
||||
>PSTR "fflush"
|
||||
.DA #2,#1,#SYS.FFlush
|
||||
.DA #SYS.FFlush
|
||||
>PSTR "fseek"
|
||||
.DA #2,#1,#SYS.FSeek
|
||||
.DA #SYS.FSeek
|
||||
>PSTR "ftell"
|
||||
.DA #2,#1,#SYS.FTell
|
||||
.DA #SYS.FTell
|
||||
>PSTR "feof"
|
||||
.DA #2,#1,#SYS.FEOF
|
||||
.DA #SYS.FEOF
|
||||
>PSTR "remove"
|
||||
.DA #2,#1,#SYS.Remove
|
||||
.DA #SYS.Remove
|
||||
>PSTR "rename"
|
||||
.DA #2,#1,#SYS.Rename
|
||||
.DA #SYS.Rename
|
||||
>PSTR "printf"
|
||||
.DA #2,#1,#SYS.PrintF
|
||||
.DA #SYS.PrintF
|
||||
>PSTR "fprintf"
|
||||
.DA #2,#1,#SYS.FPrintF
|
||||
.DA #SYS.FPrintF
|
||||
>PSTR "sprintf"
|
||||
.DA #2,#1,#SYS.SPrintF
|
||||
.DA #SYS.SPrintF
|
||||
>PSTR "scanf"
|
||||
.DA #2,#1,#SYS.ScanF
|
||||
.DA #SYS.ScanF
|
||||
>PSTR "fscanf"
|
||||
.DA #2,#1,#SYS.FScanF
|
||||
.DA #SYS.FScanF
|
||||
>PSTR "sscanf"
|
||||
.DA #2,#1,#SYS.SScanF
|
||||
.DA #SYS.SScanF
|
||||
* >PSTR "$50"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "$52"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "$54"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "$56"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "$58"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "$5A"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "$5C"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
>PSTR "setattr"
|
||||
.DA #2,#1,#SYS.SetAttr
|
||||
.DA #SYS.SetAttr
|
||||
* >PSTR "mount"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "umount"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "online"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "getstkobj"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "shift"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "argv"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "argvDup"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "geterrmsg"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
>PSTR "atof"
|
||||
.DA #2,#1,#SYS.AToF
|
||||
.DA #SYS.AToF
|
||||
>PSTR "atoi"
|
||||
.DA #2,#1,#SYS.AToI
|
||||
.DA #SYS.AToI
|
||||
>PSTR "atol"
|
||||
.DA #2,#1,#SYS.AToL
|
||||
.DA #SYS.AToL
|
||||
>PSTR "strtof"
|
||||
.DA #2,#1,#SYS.StrToF
|
||||
.DA #SYS.StrToF
|
||||
>PSTR "strtol"
|
||||
.DA #2,#1,#SYS.StrToL
|
||||
.DA #SYS.StrToL
|
||||
>PSTR "strtoul"
|
||||
.DA #2,#1,#SYS.StrToUL
|
||||
.DA #SYS.StrToUL
|
||||
>PSTR "realpath"
|
||||
.DA #2,#1,#SYS.RealPath
|
||||
.DA #SYS.RealPath
|
||||
>PSTR "expand"
|
||||
.DA #2,#1,#SYS.Expand
|
||||
.DA #SYS.Expand
|
||||
>PSTR "strlen"
|
||||
.DA #2,#1,#SYS.StrLen
|
||||
.DA #SYS.StrLen
|
||||
>PSTR "strcpy"
|
||||
.DA #2,#1,#SYS.StrCpy
|
||||
.DA #SYS.StrCpy
|
||||
>PSTR "strcat"
|
||||
.DA #2,#1,#SYS.StrCat
|
||||
.DA #SYS.StrCat
|
||||
>PSTR "strdup"
|
||||
.DA #2,#1,#SYS.StrDup
|
||||
.DA #SYS.StrDup
|
||||
>PSTR "strupr"
|
||||
.DA #2,#1,#SYS.StrUpr
|
||||
.DA #SYS.StrUpr
|
||||
>PSTR "strlwr"
|
||||
.DA #2,#1,#SYS.StrLwr
|
||||
.DA #SYS.StrLwr
|
||||
>PSTR "strcmp"
|
||||
.DA #2,#1,#SYS.StrCmp
|
||||
.DA #SYS.StrCmp
|
||||
>PSTR "strcasecmp"
|
||||
.DA #2,#1,#SYS.StrCaseCmp
|
||||
.DA #SYS.StrCaseCmp
|
||||
* >PSTR "getdevbyname"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "getdevstatus"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "mkdev"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "ioctl"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "loadlib"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "unloadlib"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "loaddrv"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "insdrv"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
>PSTR "execl"
|
||||
.DA #2,#1,#SYS.ExecL
|
||||
.DA #SYS.ExecL
|
||||
* >PSTR "execv"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
>PSTR "fork"
|
||||
.DA #2,#1,#SYS.Fork
|
||||
.DA #SYS.Fork
|
||||
>PSTR "kill"
|
||||
.DA #2,#1,#SYS.Kill
|
||||
.DA #SYS.Kill
|
||||
* >PSTR "loadfile"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "loadtxtfile"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "filesearch"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "getmemstat"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "strvnew"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "strvset"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "strvget"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "strvfree"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
>PSTR "putenv"
|
||||
.DA #2,#1,#SYS.PutEnv
|
||||
.DA #SYS.PutEnv
|
||||
>PSTR "setenv"
|
||||
.DA #2,#1,#SYS.SetEnv
|
||||
.DA #SYS.SetEnv
|
||||
>PSTR "getenv"
|
||||
.DA #2,#1,#SYS.GetEnv
|
||||
.DA #SYS.GetEnv
|
||||
>PSTR "unsetenv"
|
||||
.DA #2,#1,#SYS.UnsetEnv
|
||||
.DA #SYS.UnsetEnv
|
||||
>PSTR "time"
|
||||
.DA #2,#1,#SYS.Time
|
||||
.DA #SYS.Time
|
||||
>PSTR "strftime"
|
||||
.DA #2,#1,#SYS.StrFTime
|
||||
.DA #SYS.StrFTime
|
||||
* >PSTR "ptime2time"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
>PSTR "ctime2time"
|
||||
.DA #2,#1,#SYS.CTime2Time
|
||||
.DA #SYS.CTime2Time
|
||||
>PSTR "md5"
|
||||
.DA #2,#1,#SYS.MD5
|
||||
.DA #SYS.MD5
|
||||
>PSTR "md5init"
|
||||
.DA #2,#1,#SYS.MD5Init
|
||||
.DA #SYS.MD5Init
|
||||
>PSTR "md5update"
|
||||
.DA #2,#1,#SYS.MD5Update
|
||||
.DA #SYS.MD5Update
|
||||
>PSTR "md5finalize"
|
||||
.DA #2,#1,#SYS.MD5Finalize
|
||||
.DA #SYS.MD5Finalize
|
||||
>PSTR "getpwuid"
|
||||
.DA #2,#1,#SYS.GetPWUID
|
||||
.DA #SYS.GetPWUID
|
||||
>PSTR "getpwname"
|
||||
.DA #2,#1,#SYS.GetPWName
|
||||
.DA #SYS.GetPWName
|
||||
>PSTR "putpw"
|
||||
.DA #2,#1,#SYS.PutPW
|
||||
.DA #SYS.PutPW
|
||||
>PSTR "getgrpgid"
|
||||
.DA #2,#1,#SYS.GetGRGID
|
||||
.DA #SYS.GetGRGID
|
||||
>PSTR "getgrpname"
|
||||
.DA #2,#1,#SYS.GetGRName
|
||||
.DA #SYS.GetGRName
|
||||
>PSTR "putgr"
|
||||
.DA #2,#1,#SYS.PutGR
|
||||
.DA #SYS.PutGR
|
||||
* >PSTR "opensession"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "closesession"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "slistgetdata"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "slistadddata"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "slistsetdata"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "slistgetbyid"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "slistnewkey"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "slistlookup"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "slistfree"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "slistnew"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
>PSTR "malloc"
|
||||
.DA #2,#1,#SYS.GetMem
|
||||
.DA #SYS.GetMem
|
||||
>PSTR "realloc"
|
||||
.DA #2,#1,#SYS.Realloc
|
||||
.DA #SYS.Realloc
|
||||
* >PSTR "getmemptr"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
>PSTR "free"
|
||||
.DA #2,#1,#SYS.FreeMem
|
||||
.DA #SYS.FreeMem
|
||||
* >PSTR "newstkobj"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "loadstkobj"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "getstkobjptr"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
* >PSTR "freestkobj"
|
||||
* .DA #2,#1,#0
|
||||
* .DA #0
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
>PSTR "pwr"
|
||||
.DA #2,#2,#FPU.PWR
|
||||
CC.FPUCALL >PSTR "pwr"
|
||||
.DA #FPU.PWR
|
||||
>PSTR "log"
|
||||
.DA #2,#2,#FPU.LOG
|
||||
.DA #FPU.LOG
|
||||
>PSTR "sqr"
|
||||
.DA #2,#2,#FPU.SQR
|
||||
.DA #FPU.SQR
|
||||
>PSTR "exp"
|
||||
.DA #2,#2,#FPU.EXP
|
||||
.DA #FPU.EXP
|
||||
>PSTR "cos"
|
||||
.DA #2,#2,#FPU.COS
|
||||
.DA #FPU.COS
|
||||
>PSTR "sin"
|
||||
.DA #2,#2,#FPU.SIN
|
||||
.DA #FPU.SIN
|
||||
>PSTR "tan"
|
||||
.DA #2,#2,#FPU.TAN
|
||||
.DA #FPU.TAN
|
||||
>PSTR "atan"
|
||||
.DA #2,#2,#FPU.ATAN
|
||||
.DA #FPU.ATAN
|
||||
>PSTR "lrintf"
|
||||
.DA #2,#2,#FPU.QINT
|
||||
.HS 00
|
||||
.DA #FPU.QINT
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
.INB usr/src/bin/cc.s.pcc
|
||||
*--------------------------------------
|
||||
|
@ -1019,6 +1066,10 @@ PathBuf .BS MLI.MAXPATH+1
|
|||
bDebug .BS 1
|
||||
bTrace .BS 1
|
||||
|
||||
LibCount .BS 1
|
||||
hLibNs .BS LIBS.MAX
|
||||
hLibOs .BS LIBS.MAX
|
||||
|
||||
CC.InFileArg .BS 1
|
||||
CC.OutFileArg .BS 1
|
||||
CC.hOutFile .BS 1
|
||||
|
|
|
@ -133,8 +133,7 @@ CS.RUN.RTS rts
|
|||
*--------------------------------------
|
||||
CS.SCRN.Init >PUSHB hCTX hParent
|
||||
>PUSHBI S.OBJ.F.bTitle+S.OBJ.F.bStatus
|
||||
lda #S.OBJ.T.SCRN
|
||||
>LIBCALL hLIBTUI,LIBTUI.New
|
||||
>LIBCALL hLIBTUI,LIBTUI.NewScrn
|
||||
bcs .9
|
||||
|
||||
sta hSCRN
|
||||
|
@ -169,10 +168,11 @@ CS.TBOX1.Init >LDYAI 1024
|
|||
>PUSHBI 44 W
|
||||
>PUSHBI 20 H
|
||||
>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
|
||||
lda #S.OBJ.T.TBOX
|
||||
>LIBCALL hLIBTUI,LIBTUI.New
|
||||
>LIBCALL hLIBTUI,LIBTUI.NewTBox
|
||||
bcs .9
|
||||
|
||||
sta hTBOX1
|
||||
|
@ -197,16 +197,14 @@ CS.LBOX1.Init >PUSHB hSCRN hParent
|
|||
>PUSHBI S.OBJ.F.bHBorder+S.OBJ.F.bVBorder
|
||||
>PUSHW L.LBOX1.List
|
||||
>PUSHEA.G LBOX1.Var
|
||||
lda #S.OBJ.T.LBOX
|
||||
>LIBCALL hLIBTUI,LIBTUI.New
|
||||
>LIBCALL hLIBTUI,LIBTUI.NewLBox
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.TLINE.Init >PUSHB hSCRN hParent
|
||||
>PUSHBI 50 X1
|
||||
>PUSHBI 11 Y1
|
||||
>PUSHW L.LABEL.Label
|
||||
lda #S.OBJ.T.LABEL
|
||||
>LIBCALL hLIBTUI,LIBTUI.New
|
||||
>LIBCALL hLIBTUI,LIBTUI.NewLabel
|
||||
bcs .9
|
||||
|
||||
>PUSHB hSCRN hParent
|
||||
|
@ -214,9 +212,8 @@ CS.TLINE.Init >PUSHB hSCRN hParent
|
|||
>PUSHBI 12 Y1
|
||||
>PUSHBI 25 W
|
||||
>PUSHEA.G TLINE.Buf
|
||||
>PUSHBI 65 Len
|
||||
lda #S.OBJ.T.TLINE
|
||||
>LIBCALL hLIBTUI,LIBTUI.New
|
||||
>PUSHWI 65 Len
|
||||
>LIBCALL hLIBTUI,LIBTUI.NewTLine
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
@ -227,8 +224,7 @@ CS.RADIO.Init >PUSHB hSCRN hParent
|
|||
>PUSHBI 0
|
||||
>PUSHW L.RADIO1.List
|
||||
>PUSHEA.G RADIO1.Var
|
||||
lda #S.OBJ.T.RADIO
|
||||
>LIBCALL hLIBTUI,LIBTUI.New
|
||||
>LIBCALL hLIBTUI,LIBTUI.NewRadio
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.CBOX.Init >PUSHB hSCRN hParent
|
||||
|
@ -238,8 +234,7 @@ CS.CBOX.Init >PUSHB hSCRN hParent
|
|||
>PUSHBI 0
|
||||
>PUSHW L.CBOX1.Label
|
||||
>PUSHEA.G CBOX1.Var
|
||||
lda #S.OBJ.T.CBOX
|
||||
>LIBCALL hLIBTUI,LIBTUI.New
|
||||
>LIBCALL hLIBTUI,LIBTUI.NewCBox
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.BUT.Init >PUSHB hSCRN hParent
|
||||
|
@ -248,8 +243,7 @@ CS.BUT.Init >PUSHB hSCRN hParent
|
|||
>PUSHBI 19 Ctrl-S
|
||||
>PUSHBI EV.SAVE
|
||||
>PUSHW L.BUTS.Label
|
||||
lda #S.OBJ.T.BUT
|
||||
>LIBCALL hLIBTUI,LIBTUI.New
|
||||
>LIBCALL hLIBTUI,LIBTUI.NewBut
|
||||
bcs .9
|
||||
|
||||
>PUSHB hSCRN hParent
|
||||
|
@ -258,8 +252,7 @@ CS.BUT.Init >PUSHB hSCRN hParent
|
|||
>PUSHBI 17 Ctrl-Q
|
||||
>PUSHBI EV.QUIT
|
||||
>PUSHW L.BUTQ.Label
|
||||
lda #S.OBJ.T.BUT
|
||||
>LIBCALL hLIBTUI,LIBTUI.New
|
||||
>LIBCALL hLIBTUI,LIBTUI.NewBut
|
||||
.9
|
||||
CS.BUT.Init.RTS rts
|
||||
*--------------------------------------
|
||||
|
@ -267,8 +260,7 @@ CS.RUN.DLGSAVE >PUSHB hCTX hParent
|
|||
>PUSHBI 70 W
|
||||
>PUSHBI 11 H
|
||||
>PUSHW L.DLGS.Title
|
||||
lda #S.OBJ.T.DLG
|
||||
>LIBCALL hLIBTUI,LIBTUI.New
|
||||
>LIBCALL hLIBTUI,LIBTUI.NewDlg
|
||||
bcs CS.BUT.Init.RTS
|
||||
|
||||
sta hDLGS
|
||||
|
@ -279,8 +271,7 @@ CS.RUN.DLGSAVE >PUSHB hCTX hParent
|
|||
>PUSHBI C.CR
|
||||
>PUSHBI EV.OK
|
||||
>PUSHW L.BUT.OK
|
||||
lda #S.OBJ.T.BUT
|
||||
>LIBCALL hLIBTUI,LIBTUI.New
|
||||
>LIBCALL hLIBTUI,LIBTUI.NewBut
|
||||
bcs .9
|
||||
|
||||
sta ZPPtr1
|
||||
|
@ -291,8 +282,7 @@ CS.RUN.DLGSAVE >PUSHB hCTX hParent
|
|||
>PUSHBI 3 Ctrl-C
|
||||
>PUSHBI EV.CANCEL
|
||||
>PUSHW L.BUT.Cancel
|
||||
lda #S.OBJ.T.BUT
|
||||
>LIBCALL hLIBTUI,LIBTUI.New
|
||||
>LIBCALL hLIBTUI,LIBTUI.NewBut
|
||||
bcs .9
|
||||
|
||||
lda hDLGS
|
||||
|
@ -370,30 +360,45 @@ SCRN.Status .AZ "Status bar..."
|
|||
TBOX1.Title .AZ "Text Box Title"
|
||||
TBOX1.Status .AZ "Text Box Status"
|
||||
*--------------------------------------
|
||||
LBOX1.List .AZ "Item 1"
|
||||
.AZ "Item 2"
|
||||
.AZ "Item 3"
|
||||
.AZ "Item 4"
|
||||
.AZ "Item 5"
|
||||
.AZ "Item 6 very long line"
|
||||
.AZ "Item 7"
|
||||
.AZ "Item 8"
|
||||
.AZ "Item 9"
|
||||
.AZ "Item 10"
|
||||
.AZ "Item 11"
|
||||
.AZ "Item 12"
|
||||
.AZ "Item 13"
|
||||
.AZ "Item 14 last one"
|
||||
LBOX1.List .AS "Item 1"
|
||||
.DA #C.CR
|
||||
.AS "Item 2"
|
||||
.DA #C.CR
|
||||
.AS "Item 3"
|
||||
.DA #C.CR
|
||||
.AS "Item 4"
|
||||
.DA #C.CR
|
||||
.AS "Item 5"
|
||||
.DA #C.CR
|
||||
.AS "Item 6 very long line"
|
||||
.DA #C.CR
|
||||
.AS "Item 7"
|
||||
.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
|
||||
*--------------------------------------
|
||||
LABEL.Label .AZ "This is a label."
|
||||
*--------------------------------------
|
||||
RADIO1.List .DA #C.ESC
|
||||
.AZ "[91mRed"
|
||||
.AS "[91mRed"
|
||||
.DA #C.CR
|
||||
.DA #C.ESC
|
||||
.AZ "[92mGreen"
|
||||
.AS "[92mGreen"
|
||||
.DA #C.CR
|
||||
.DA #C.ESC
|
||||
.AZ "[96mBlue"
|
||||
.AS "[96mBlue"
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
CBOX1.Label .AZ "Check Me"
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
IO.D2.SeekTimeR .EQ 45 LIBBLKDEV Recalibration
|
||||
IO.D2.SeekTimeF .EQ 75 LIBBLKDEV Track Formatter
|
||||
IO.D2.SeekTimeB .EQ 52 LIBBLKDEV Boot Block
|
||||
IO.D2.SeekTimeP .EQ 32 ProDOS.FX initial
|
||||
IO.D2.SeekTimeR .EQ 55 LIBBLKDEV Recalibration
|
||||
IO.D2.SeekTimeF .EQ 55 LIBBLKDEV Track Formatter
|
||||
IO.D2.SeekTimeB .EQ 55 LIBBLKDEV Boot Block
|
||||
IO.D2.SeekTimeP .EQ 25 ProDOS.FX initial
|
||||
IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
|
||||
*--------------------------------------
|
||||
IO.D2.Ph0Off .EQ $C080
|
||||
|
|
|
@ -3,15 +3,23 @@ NEW
|
|||
*--------------------------------------
|
||||
LIBTUI.Init .EQ 4
|
||||
LIBTUI.Close .EQ 6
|
||||
LIBTUI.New .EQ 8
|
||||
LIBTUI.Exec .EQ 10
|
||||
LIBTUI.Destroy .EQ 12
|
||||
LIBTUI.Run .EQ 14
|
||||
LIBTUI.Draw .EQ 16
|
||||
LIBTUI.GetProp .EQ 18
|
||||
LIBTUI.SetProp .EQ 20
|
||||
LIBTUI.Activate .EQ 22
|
||||
LIBTUI.Deactivate .EQ 24
|
||||
LIBTUI.NewScrn .EQ 8
|
||||
LIBTUI.NewDlg .EQ 10
|
||||
LIBTUI.NewLabel .EQ 12
|
||||
LIBTUI.NewTLine .EQ 14
|
||||
LIBTUI.NewTBox .EQ 16
|
||||
LIBTUI.NewLBox .EQ 18
|
||||
LIBTUI.NewCBox .EQ 20
|
||||
LIBTUI.NewBut .EQ 22
|
||||
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.hClipBrd .EQ 1
|
||||
|
@ -47,6 +55,7 @@ S.OBJ.F.bCursor .EQ %00000001
|
|||
S.OBJ.S .EQ 2
|
||||
S.OBJ.S.bActive .EQ %10000000
|
||||
S.OBJ.S.bDisabled .EQ %01000000
|
||||
S.OBJ.S.bHasChilds .EQ %00100000
|
||||
S.OBJ.S.bCurOn .EQ %00000001
|
||||
S.OBJ.hParent .EQ 3
|
||||
S.OBJ.X1 .EQ 4
|
||||
|
@ -63,9 +72,11 @@ S.OBJ.InnerH .EQ 13
|
|||
S.OBJ.CurX .EQ 14
|
||||
S.OBJ.CurY .EQ 15
|
||||
*--------------------------------------
|
||||
S.OBJ.pTITLE .EQ 16
|
||||
S.OBJ.pMENU .EQ 18
|
||||
S.OBJ.pSTATUS .EQ 20
|
||||
S.OBJ.pTitle .EQ 16
|
||||
S.OBJ.pMenu .EQ 18
|
||||
S.OBJ.pStatus .EQ 20
|
||||
S.OBJ.pBuf .EQ 22
|
||||
S.OBJ.BufSize .EQ 24
|
||||
*
|
||||
*--------------------------------------
|
||||
S.OBJ.Childs .EQ 32
|
||||
|
@ -80,33 +91,27 @@ S.LABEL.pLabel .EQ S.OBJ+0
|
|||
*
|
||||
S.LABEL .EQ S.OBJ+2
|
||||
*--------------------------------------
|
||||
S.TLINE.pBuf .EQ S.OBJ+0
|
||||
S.TLINE.Ptr .EQ S.OBJ+2
|
||||
S.TLINE.Len .EQ S.OBJ+3
|
||||
S.TLINE.MaxLen .EQ S.OBJ+4
|
||||
S.TLINE.HScroll .EQ S.OBJ+5
|
||||
S.TLINE.Ptr .EQ S.OBJ
|
||||
S.TLINE.Len .EQ S.OBJ+1
|
||||
S.TLINE.HScroll .EQ S.OBJ+2
|
||||
*
|
||||
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.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.TBOX .EQ S.OBJ+17
|
||||
*--------------------------------------
|
||||
S.LBOX.Idx .EQ S.OBJ+0
|
||||
S.LBOX.VScroll .EQ S.OBJ+1
|
||||
S.LBOX.pList .EQ S.OBJ+2
|
||||
S.LBOX.pVar .EQ S.OBJ+4
|
||||
S.LBOX.pVar .EQ S.OBJ+2
|
||||
*
|
||||
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.EV .EQ S.OBJ+1
|
||||
S.RADIO.pList .EQ S.OBJ+2
|
||||
S.RADIO.pVar .EQ S.OBJ+4
|
||||
S.RADIO.Idx .EQ S.OBJ+6
|
||||
S.RADIO.pVar .EQ S.OBJ+2
|
||||
S.RADIO.Idx .EQ S.OBJ+4
|
||||
*
|
||||
S.RADIO .EQ S.OBJ+8
|
||||
S.RADIO .EQ S.OBJ+6
|
||||
*--------------------------------------
|
||||
EV.RESIZE .EQ $80
|
||||
EV.QUIT .EQ $81
|
||||
|
|
31
INCLUDE/SYS/stat.h.txt
Normal file
31
INCLUDE/SYS/stat.h.txt
Normal 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
7
INCLUDE/SYS/types.h.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
|
||||
typedef short int dev_t;
|
||||
|
||||
MAN
|
||||
TEXT include/sys/types.h
|
|
@ -1,12 +1,55 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
|
||||
short int tuiInit();
|
||||
int fastcall tuiClose(short int);
|
||||
#define T_SCRN 0
|
||||
#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,...);
|
||||
short int tuiRun(short int);
|
||||
short int tuiClose(short int);
|
||||
#define F_bTitle 128
|
||||
#define F_bMenu 64
|
||||
#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
|
||||
TEXT include/libtui.h
|
23
INCLUDE/time.h.txt
Normal file
23
INCLUDE/time.h.txt
Normal 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
|
|
@ -97,16 +97,12 @@ D2.MoveHead >PULLB D2.TargetQTrack
|
|||
>PULLB D2.CurrentQTrack
|
||||
>PULLB D2.DrvSlt
|
||||
jsr D2.CheckDiskII
|
||||
bcs .9
|
||||
bcs .99
|
||||
|
||||
php
|
||||
sei
|
||||
jsr D2.MoveHead.SEI
|
||||
plp
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
D2.MoveHead.SEI lda D2.CurrentQTrack
|
||||
lda D2.CurrentQTrack
|
||||
|
||||
bit #1 A = Current QT
|
||||
beq .2 we are on 0/4 or 2/4 track
|
||||
|
@ -180,7 +176,9 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
|
|||
|
||||
.10 jsr D2.Wait25600usec
|
||||
|
||||
rts
|
||||
plp
|
||||
clc
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
D2.SeekPhOnY and #6
|
||||
ora D2.Slotn0
|
||||
|
|
54
LIB/LIBTUI.O.S .txt
Normal file
54
LIB/LIBTUI.O.S .txt
Normal 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
|
|
@ -4,7 +4,8 @@ NEW
|
|||
*--------------------------------------
|
||||
* 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
|
||||
|
||||
ldy #S.BUT.pLabel
|
||||
|
@ -38,7 +39,12 @@ BUT.New jsr OBJ.Create a = Class
|
|||
|
||||
jsr OBJ.PullY1X1hParent
|
||||
|
||||
jmp OBJ.Insert
|
||||
jsr OBJ.Insert
|
||||
bcs .99
|
||||
|
||||
lda hObj
|
||||
* clc
|
||||
rts
|
||||
|
||||
.9 >POP 7
|
||||
|
||||
|
|
|
@ -4,7 +4,8 @@ NEW
|
|||
*--------------------------------------
|
||||
* 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
|
||||
|
||||
ldy #S.CBOX.pVar
|
||||
|
@ -44,11 +45,16 @@ CBOX.New jsr OBJ.Create a = Class
|
|||
|
||||
jsr OBJ.PullY1X1hParent
|
||||
|
||||
jmp OBJ.Insert
|
||||
jsr OBJ.Insert
|
||||
bcs .99
|
||||
|
||||
lda hObj
|
||||
* clc
|
||||
rts
|
||||
|
||||
.9 >POP 9
|
||||
|
||||
rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CBOX.Destroy clc
|
||||
rts
|
||||
|
|
|
@ -1,7 +1,16 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
.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
|
||||
jsr CTX.fputs
|
||||
bcs .99
|
||||
|
@ -66,7 +75,17 @@ CTX.Init >LDYA L.SEQ.INIT
|
|||
sec
|
||||
|
||||
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
|
||||
|
||||
>LDYA L.SEQ.CLOSE
|
||||
|
|
|
@ -4,7 +4,8 @@ NEW
|
|||
*--------------------------------------
|
||||
* 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
|
||||
|
||||
ldy #S.OBJ.pTitle
|
||||
|
@ -41,7 +42,11 @@ DLG.New jsr OBJ.Create A = Class
|
|||
ldy #S.OBJ.Y1
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
jmp OBJ.SetX2Y2
|
||||
jsr OBJ.SetX2Y2
|
||||
|
||||
lda hObj
|
||||
* clc
|
||||
rts
|
||||
|
||||
.9 >POP 5
|
||||
rts
|
||||
|
|
|
@ -4,7 +4,8 @@ NEW
|
|||
*--------------------------------------
|
||||
* 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
|
||||
|
||||
ldy #S.OBJ.S
|
||||
|
@ -20,10 +21,15 @@ LABEL.New jsr OBJ.Create A = Class
|
|||
|
||||
jsr OBJ.PullY1X1hParent
|
||||
|
||||
jmp OBJ.Insert
|
||||
jsr OBJ.Insert
|
||||
bcs .99
|
||||
|
||||
lda hObj
|
||||
* clc
|
||||
rts
|
||||
|
||||
.9 >POP 5
|
||||
rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
LABEL.Draw ldy #S.LABEL.pLabel
|
||||
lda (ZPObjPtr),y
|
||||
|
|
|
@ -55,17 +55,17 @@ LB.SetColor >PUSHW ZPLineBufPtr
|
|||
>PUSHBI 2
|
||||
jmp LB.PrintF
|
||||
*--------------------------------------
|
||||
LB.YAOut ldx #0
|
||||
*--------------------------------------
|
||||
LB.YAOutX >STYA ZPPtr1 X = MaxLen
|
||||
LB.Ptr1OutEscMaxX
|
||||
ldy #0
|
||||
|
||||
ldy #$ff
|
||||
.1 lda (ZPPtr1),y
|
||||
beq .8
|
||||
|
||||
.1 iny
|
||||
lda (ZPPtr1),y
|
||||
cmp #C.CR
|
||||
beq .8
|
||||
|
||||
jsr LB.COut
|
||||
iny
|
||||
dex
|
||||
bne .1
|
||||
|
||||
|
|
|
@ -4,13 +4,14 @@ NEW
|
|||
*--------------------------------------
|
||||
* 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
|
||||
|
||||
ldy #S.LBOX.pVar
|
||||
jsr OBJ.PullWordY
|
||||
|
||||
ldy #S.LBOX.pList
|
||||
ldy #S.OBJ.pBuf
|
||||
jsr OBJ.PullWordY
|
||||
|
||||
>PULLA
|
||||
|
@ -21,11 +22,16 @@ LBOX.New jsr OBJ.Create A = Class
|
|||
|
||||
jsr OBJ.PullY1X1hParent
|
||||
|
||||
jmp OBJ.Insert
|
||||
jsr OBJ.Insert
|
||||
bcs .99
|
||||
|
||||
lda hObj
|
||||
* clc
|
||||
rts
|
||||
|
||||
.9 >POP 10
|
||||
|
||||
rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
LBOX.Destroy
|
||||
clc
|
||||
|
@ -44,7 +50,7 @@ LBOX.Run ldy #S.OBJ.S
|
|||
inc
|
||||
tax
|
||||
|
||||
ldy #S.LBOX.pList
|
||||
ldy #S.OBJ.pBuf
|
||||
jsr OBJ.GetLineXAtY
|
||||
bcs .8
|
||||
|
||||
|
@ -108,7 +114,7 @@ LBOX.Draw ldy #S.LBOX.VScroll
|
|||
adc (pStack) Relative Y
|
||||
tax
|
||||
|
||||
ldy #S.LBOX.pList
|
||||
ldy #S.OBJ.pBuf
|
||||
jsr OBJ.GetLineXAtY
|
||||
bcs .5
|
||||
|
||||
|
@ -128,24 +134,13 @@ LBOX.Draw ldy #S.LBOX.VScroll
|
|||
lda (ZPObjPtr),y
|
||||
tax
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda (ZPPtr1),y
|
||||
beq .3
|
||||
|
||||
jsr LB.COut
|
||||
iny
|
||||
dex
|
||||
bne .2
|
||||
|
||||
.3 txa
|
||||
jsr LB.Ptr1OutEscMaxX
|
||||
txa
|
||||
beq .8
|
||||
|
||||
bra .6
|
||||
bne .6
|
||||
|
||||
.5 ldy #S.OBJ.InnerW
|
||||
lda (ZPObjPtr),y
|
||||
|
||||
tax
|
||||
|
||||
.6 lda #C.SPACE
|
||||
|
|
|
@ -2,9 +2,6 @@ NEW
|
|||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
OBJ.New tax
|
||||
jmp (J.ObjNew,x)
|
||||
*--------------------------------------
|
||||
OBJ.Create pha Type
|
||||
tax
|
||||
|
||||
|
@ -31,7 +28,6 @@ OBJ.Create pha Type
|
|||
dey
|
||||
bne .1
|
||||
|
||||
lda hObj
|
||||
* clc
|
||||
|
||||
rts
|
||||
|
@ -39,6 +35,11 @@ OBJ.Create pha Type
|
|||
.9 plx
|
||||
rts
|
||||
*--------------------------------------
|
||||
OBJ.PullBuf ldy #S.OBJ.BufSize
|
||||
jsr OBJ.PullWordY
|
||||
|
||||
ldy #S.OBJ.pBuf
|
||||
*--------------------------------------
|
||||
OBJ.PullWordY >PULLA
|
||||
sta (ZPObjPtr),y
|
||||
tax
|
||||
|
@ -90,7 +91,11 @@ OBJ.Insert >SYSCALL2 GetMemPtr A = hParent
|
|||
rts
|
||||
|
||||
.2 lda hObj
|
||||
sta (ZPPtr2),y
|
||||
|
||||
ldy #S.OBJ.S
|
||||
lda (ZPPtr2),y
|
||||
ora #S.OBJ.S.bHasChilds
|
||||
sta (ZPPtr2),y
|
||||
|
||||
ldy #S.OBJ.InnerX
|
||||
|
@ -181,9 +186,7 @@ OBJ.SetX2Y2 ldy #S.OBJ.X1
|
|||
dec
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
.8 lda hOBJ
|
||||
|
||||
clc
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
.7 lda (ZPObjPtr),y S.OBJ.X1/Y1
|
||||
|
@ -220,8 +223,6 @@ OBJ.SetX2Y2 ldy #S.OBJ.X1
|
|||
OBJ.Exec >PUSHA hOBJ
|
||||
jsr LIB.GetOBJ
|
||||
|
||||
ldy #S.OBJ.hParent
|
||||
lda (ZPObjPtr),y
|
||||
jsr LIB.GetCTX
|
||||
|
||||
.1 jsr CTX.GetC
|
||||
|
@ -359,13 +360,19 @@ OBJ.Run ldx ZPObjPtr
|
|||
OBJ.Draw >PUSHA hObj
|
||||
|
||||
jsr OBJ.Draw.Top
|
||||
bcs .9
|
||||
bcs .99
|
||||
|
||||
jsr OBJ.Draw.Body
|
||||
bcs .9
|
||||
bcs .99
|
||||
|
||||
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
|
||||
>PUSHA
|
||||
|
@ -380,7 +387,7 @@ OBJ.Draw >PUSHA hObj
|
|||
beq .7
|
||||
|
||||
jsr OBJ.Draw
|
||||
bcs .99
|
||||
bcs .98
|
||||
|
||||
.7 lda (pStack)
|
||||
inc
|
||||
|
@ -390,9 +397,9 @@ OBJ.Draw >PUSHA hObj
|
|||
|
||||
clc
|
||||
|
||||
.99 inc pStack
|
||||
.98 inc pStack
|
||||
|
||||
.9 inc pStack
|
||||
.99 inc pStack
|
||||
|
||||
OBJ.Draw.RTS rts
|
||||
*--------------------------------------
|
||||
|
@ -436,7 +443,7 @@ OBJ.Draw.Top lda (pStack)
|
|||
lda (ZPObjPtr),y
|
||||
tax
|
||||
|
||||
ldy #S.OBJ.pTITLE
|
||||
ldy #S.OBJ.pTitle
|
||||
lda (ZPObjPtr),y
|
||||
sta ZPPtr1
|
||||
iny
|
||||
|
@ -698,6 +705,7 @@ OBJ.GetProp ldy #1 hObj
|
|||
*--------------------------------------
|
||||
OBJ.SetProp ldy #3 hObj
|
||||
lda (pStack),y
|
||||
|
||||
jsr LIB.GetOBJ
|
||||
|
||||
ldy #2
|
||||
|
@ -892,6 +900,14 @@ OBJ.DecWordAtY clc
|
|||
sta (ZPObjPtr),y
|
||||
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
|
||||
sta ZPPtr1
|
||||
iny
|
||||
|
@ -912,10 +928,15 @@ OBJ.GetLineXAtY lda (ZPObjPtr),y
|
|||
|
||||
.4 iny
|
||||
lda (ZPPtr1),y
|
||||
clc
|
||||
beq .5
|
||||
|
||||
cmp #C.CR
|
||||
bne .4
|
||||
|
||||
tya
|
||||
sec
|
||||
* sec
|
||||
|
||||
.5 tya
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .1
|
||||
|
|
|
@ -4,13 +4,14 @@ NEW
|
|||
*--------------------------------------
|
||||
* 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
|
||||
|
||||
ldy #S.RADIO.pVar
|
||||
jsr OBJ.PullWordY
|
||||
|
||||
ldy #S.RADIO.pList
|
||||
ldy #S.OBJ.pBuf
|
||||
jsr OBJ.PullWordY
|
||||
stx ZPPtr1
|
||||
sta ZPPtr1+1
|
||||
|
@ -29,10 +30,17 @@ RADIO.New jsr OBJ.Create A = Class
|
|||
|
||||
.2 iny
|
||||
lda (ZPPtr1),y
|
||||
clc
|
||||
beq .20
|
||||
|
||||
cmp #C.CR
|
||||
bne .2
|
||||
|
||||
tya
|
||||
sec
|
||||
* sec
|
||||
|
||||
.20 tya
|
||||
beq .5 empty line
|
||||
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .3
|
||||
|
@ -40,11 +48,8 @@ RADIO.New jsr OBJ.Create A = Class
|
|||
inc ZPPtr1+1
|
||||
|
||||
.3 tya
|
||||
inc
|
||||
inc
|
||||
inc
|
||||
inc
|
||||
inc
|
||||
clc
|
||||
adc #5 room for " ( ) "
|
||||
ldy #S.OBJ.W
|
||||
cmp (ZPObjPtr),y
|
||||
bcc .4
|
||||
|
@ -56,13 +61,18 @@ RADIO.New jsr OBJ.Create A = Class
|
|||
lda (ZPPtr1)
|
||||
bne .1
|
||||
|
||||
ldy #S.OBJ.H
|
||||
.5 ldy #S.OBJ.H
|
||||
txa
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
jsr OBJ.PullY1X1hParent
|
||||
|
||||
jmp OBJ.Insert
|
||||
jsr OBJ.Insert
|
||||
bcs .9
|
||||
|
||||
lda hObj
|
||||
* clc
|
||||
rts
|
||||
|
||||
.9 >POP 9
|
||||
|
||||
|
@ -143,7 +153,7 @@ RADIO.Run ldy #S.OBJ.S
|
|||
RADIO.Draw lda (pStack) Relative Y
|
||||
tax
|
||||
|
||||
ldy #S.RADIO.pList
|
||||
ldy #S.OBJ.pBuf
|
||||
jsr OBJ.GetLineXAtY
|
||||
bcs .8
|
||||
|
||||
|
@ -211,27 +221,12 @@ RADIO.Draw lda (pStack) Relative Y
|
|||
dex
|
||||
dex
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda (ZPPtr1),y
|
||||
beq .3
|
||||
|
||||
jsr LB.COut
|
||||
iny
|
||||
dex
|
||||
bne .2
|
||||
jsr LB.Ptr1OutEscMaxX
|
||||
|
||||
.3 txa
|
||||
beq .8
|
||||
|
||||
bra .6
|
||||
|
||||
.5 ldy #S.OBJ.InnerW
|
||||
lda (ZPObjPtr),y
|
||||
|
||||
tax
|
||||
|
||||
.6 lda #C.SPACE
|
||||
lda #C.SPACE
|
||||
|
||||
.7 jsr LB.COut
|
||||
dex
|
||||
|
|
|
@ -4,7 +4,8 @@ NEW
|
|||
*--------------------------------------
|
||||
* SCRN.New hCTX,F 2
|
||||
*--------------------------------------
|
||||
SCRN.New jsr OBJ.Create A = Class
|
||||
SCRN.New lda #S.OBJ.T.SCRN
|
||||
jsr OBJ.Create
|
||||
bcs .9
|
||||
|
||||
>PULLA
|
||||
|
@ -28,7 +29,11 @@ SCRN.New jsr OBJ.Create A = Class
|
|||
ldy #S.OBJ.H
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
jmp OBJ.SetX2Y2
|
||||
jsr OBJ.SetX2Y2
|
||||
|
||||
lda hObj
|
||||
* clc
|
||||
rts
|
||||
|
||||
.9 >POP 2
|
||||
rts
|
||||
|
|
|
@ -2,17 +2,13 @@ NEW
|
|||
AUTO 3,1
|
||||
.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
|
||||
|
||||
ldy #S.TBOX.BufSize
|
||||
jsr OBJ.PullWordY
|
||||
|
||||
>PULLA
|
||||
ldy #S.TBOX.hBuf
|
||||
sta (ZPObjPtr),y
|
||||
jsr OBJ.PullBuf
|
||||
|
||||
>PULLA
|
||||
ora #S.OBJ.F.bCursor
|
||||
|
@ -23,11 +19,16 @@ TBOX.New jsr OBJ.Create A = Class
|
|||
|
||||
jsr OBJ.PullY1X1hParent
|
||||
|
||||
jmp OBJ.Insert
|
||||
|
||||
.9 >POP 9
|
||||
jsr OBJ.Insert
|
||||
bcs .99
|
||||
|
||||
lda hObj
|
||||
* clc
|
||||
rts
|
||||
|
||||
.9 >POP 10
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
TBOX.Destroy clc
|
||||
rts
|
||||
|
@ -433,18 +434,15 @@ TBOX.Activate
|
|||
TBOX.Deactivate clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
TBOX.GetBuf ldy #S.TBOX.hBuf
|
||||
lda (ZPObjPtr),y
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
TBOX.GetBuf jsr OBJ.GetBuf
|
||||
|
||||
pha
|
||||
tya
|
||||
ldy #S.TBOX.BufPtr
|
||||
lda ZPPtr1
|
||||
clc
|
||||
adc (ZPObjPtr),y
|
||||
sta ZPPtr2
|
||||
pla
|
||||
|
||||
lda ZPPtr1+1
|
||||
iny
|
||||
adc (ZPObjPtr),y
|
||||
sta ZPPtr2+1
|
||||
|
@ -463,10 +461,7 @@ TBOX.GetCurlineInAX
|
|||
TBOX.GetLineAX stx TempW
|
||||
sta TempW+1 Req Line Num
|
||||
|
||||
ldy #S.TBOX.hBuf
|
||||
lda (ZPObjPtr),y
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
jsr OBJ.GetBuf get pBuf in ZPPtr1
|
||||
|
||||
stz TempI Current Line Num
|
||||
stz TempI+1
|
||||
|
@ -577,12 +572,12 @@ TBOX.GetLineLenInAXC
|
|||
*--------------------------------------
|
||||
TBOX.ToBuf1 ldy #S.TBOX.BufCnt
|
||||
lda (ZPObjPtr),y
|
||||
ldy #S.TBOX.BufSize
|
||||
ldy #S.OBJ.BufSize
|
||||
cmp (ZPObjPtr),y
|
||||
|
||||
ldy #S.TBOX.BufCnt+1
|
||||
lda (ZPObjPtr),y
|
||||
ldy #S.TBOX.BufSize+1
|
||||
ldy #S.OBJ.BufSize+1
|
||||
sbc (ZPObjPtr),y
|
||||
bcs .9
|
||||
|
||||
|
|
|
@ -2,19 +2,13 @@ NEW
|
|||
AUTO 3,1
|
||||
.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
|
||||
|
||||
>PULLA
|
||||
ldy #S.TLINE.MaxLen
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
ldy #S.TLINE.pBuf
|
||||
jsr OBJ.PullWordY
|
||||
stx ZPPtr1
|
||||
sta ZPPtr1+1
|
||||
jsr OBJ.PullBuf
|
||||
|
||||
ldy #S.OBJ.F
|
||||
lda #S.OBJ.F.bHScroll+S.OBJ.F.bCursor
|
||||
|
@ -33,11 +27,16 @@ TLINE.New jsr OBJ.Create A = Class
|
|||
|
||||
jsr OBJ.PullY1X1hParent
|
||||
|
||||
jmp OBJ.Insert
|
||||
jsr OBJ.Insert
|
||||
bcs .99
|
||||
|
||||
lda hObj
|
||||
* clc
|
||||
rts
|
||||
|
||||
.9 >POP 7
|
||||
|
||||
rts
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
TLINE.Destroy clc
|
||||
rts
|
||||
|
@ -46,7 +45,7 @@ TLINE.Run ldy #S.OBJ.S
|
|||
lda (ZPObjPtr),y
|
||||
bpl .9 S.OBJ.S.bActive
|
||||
|
||||
jsr TLINE.GetBuf
|
||||
jsr OBJ.GetBuf
|
||||
|
||||
lda (pStack) Event
|
||||
cmp #C.DEL
|
||||
|
@ -65,7 +64,7 @@ TLINE.Run ldy #S.OBJ.S
|
|||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
.2 ldy #S.TLINE.MaxLen
|
||||
.2 ldy #S.OBJ.BufSize
|
||||
lda (ZPObjPtr),y
|
||||
|
||||
ldy #S.TLINE.Len
|
||||
|
@ -160,7 +159,7 @@ TLINE.RUN.DEL ldy #S.TLINE.Ptr
|
|||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
TLINE.Draw jsr TLINE.GetBuf
|
||||
TLINE.Draw jsr OBJ.GetBuf
|
||||
|
||||
ldx #C.SPACE
|
||||
|
||||
|
@ -226,14 +225,6 @@ TLINE.Activate
|
|||
TLINE.Deactivate
|
||||
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
|
||||
lda (ZPPtr1)
|
||||
beq .8
|
||||
|
|
|
@ -52,17 +52,7 @@ CS.START cld
|
|||
.DA CTX.Init
|
||||
.DA CTX.Close
|
||||
*--------------------------------------
|
||||
.DA OBJ.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 SCRN.New
|
||||
.DA DLG.New
|
||||
.DA LABEL.New
|
||||
.DA TLINE.New
|
||||
|
@ -71,6 +61,14 @@ J.ObjNew .DA SCRN.New
|
|||
.DA CBOX.New
|
||||
.DA BUT.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
|
||||
.DA DLG.Destroy
|
||||
|
@ -187,9 +185,21 @@ LIB.UNLOAD dec LibCnt
|
|||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
LIB.GetCTX >SYSCALL2 GetMemPtr
|
||||
LIB.GetCTX ldy #S.OBJ.hParent
|
||||
lda (ZPObjPtr),y
|
||||
|
||||
.1 >SYSCALL2 GetMemPtr
|
||||
>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
|
||||
>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
Block a user