A2osX/BIN/CC.S.txt

1406 lines
28 KiB
Plaintext
Raw Normal View History

NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF bin/cc
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/mli.i
.INB inc/mli.e.i
*--------------------------------------
FILES.MAX .EQ 4
2022-01-30 21:47:08 +00:00
SCOPE.MAX .EQ 16
2022-06-22 06:26:44 +00:00
LOOKUP.MAX .EQ 16
2022-01-30 21:47:08 +00:00
*--------------------------------------
SYM.T .EQ 0
SYM.T.VOID .EQ 1
SYM.T.UCHAR .EQ 2
SYM.T.SCHAR .EQ 3
SYM.T.UINT .EQ 4
SYM.T.SINT .EQ 5
SYM.T.ULONG .EQ 6
SYM.T.SLONG .EQ 7
SYM.T.FLOAT .EQ 8
SYM.T.VARIADIC .EQ $FF
SYM.Q .EQ 1
SYM.Q.POINTER .EQ %01000000
SYM.Q.PPOINTER .EQ %10000000
SYM.Q.PPPOINTER .EQ %11000000
SYM.Q.ARRAY .EQ %00010000
SYM.Q.AARRAY .EQ %00100000
SYM.Q.AAARRAY .EQ %00110000
SYM.Q.CONST .EQ %00001000
SYM.Q.VOLATILE .EQ %00000100
SYM.Q.FUNC .EQ %00000010
SYM.Q.FASTCALL .EQ %00000001
SYM.SC .EQ 2
SYM.SC.STATIC .EQ 0
SYM.SC.AUTO .EQ 2
SYM.SC.REGISTER .EQ 4
SYM.SC.EXTERN .EQ 6
SYM.SC.TYPEDEF .EQ 8
2022-06-12 20:42:22 +00:00
SYM.SC.DEFINE .EQ 10
SYM.SC.TAG .EQ 12
2022-06-22 06:26:44 +00:00
SYM.DefSize .EQ 3
2022-01-30 21:47:08 +00:00
SYM.SizeOf .EQ 4
SYM.Addr .EQ 6
2022-06-22 06:26:44 +00:00
SYM.Def .EQ 8 Funtions : fTQ,a1TQ,a2TQ....
*
2022-06-12 20:42:22 +00:00
SYM .EQ 10
*--------------------------------------
CPS.ParentID .EQ 0
CPS.hSYM .EQ 2
*
CPS.Cont .EQ 4
CPS.Break .EQ 6
*
CPS .EQ 8
*--------------------------------------
* Zero Page Segment, up to 32 bytes
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
2022-06-12 20:42:22 +00:00
ZPPtr1 .BS 2
ZPPtr2 .BS 2
ZPPtr3 .BS 2
ArgIndex .BS 1
bPass2 .BS 1
ZPCCCode .BS 2
ZPCCConst .BS 2
ZPCCData .BS 2
ZPCCStack .BS 2
ZPLineBufPtr .BS 2
2022-01-30 21:47:08 +00:00
ZPLookupPtr .BS 2
2022-01-30 21:47:08 +00:00
CStackPtr .BS 1
LocalPtr .BS 1
2022-06-22 06:26:44 +00:00
ScopeIdx .BS 1
bLocalScope .BS 1
ZPSymBufPtr .BS 2
2022-01-30 21:47:08 +00:00
2022-06-12 20:42:22 +00:00
* .BS 1
* .BS 1
2022-06-12 20:42:22 +00:00
ZPLookupSymPtr .BS 2
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
.DA #0 S.PS.F.EVENT
.DA #0
.DA CS.END-CS.START Code Size (without Constants)
2022-01-30 21:47:08 +00:00
.DA DS.END-DS.START Data Size
.DA #256 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
*--------------------------------------
L.MSG.GREETINGS .DA MSG.GREETINGS
L.MSG.USAGE .DA MSG.USAGE
2022-06-22 06:26:44 +00:00
L.MSG.READING .DA MSG.READING
2022-06-12 20:42:22 +00:00
L.MSG.LINKING .DA MSG.LINKING
L.MSG.LINKING2 .DA MSG.LINKING2
L.MSG.GENERATING .DA MSG.GENERATING
L.MSG.DEBUG .DA MSG.DEBUG
L.MSG.TRACE .DA MSG.TRACE
2022-01-30 21:47:08 +00:00
L.MSG.RTSTK .DA MSG.RTSTK
L.MSG.ERROR .DA MSG.ERROR
2022-06-12 20:42:22 +00:00
L.MSG.SUMMARY .DA MSG.SUMMARY
2022-01-30 21:47:08 +00:00
L.MSG.NOMAIN .DA MSG.NOMAIN
L.ENV.INCLUDE .DA ENV.INCLUDE
*--------------------------------------
L.CC.PREOPS .DA CC.PREOPS
2022-01-30 21:47:08 +00:00
J.CC.PREOPS .DA CC.EXP.GetRef
.DA CC.EXP.GetDeref
L.CC.POSTOPS .DA CC.POSTOPS
L.CC.AOPS .DA CC.AOPS
L.CC.BOPS .DA CC.BOPS
J.CC.bBOPS .DA CC.BOPS.bMUL
.DA CC.BOPS.bDIV
.DA CC.BOPS.bMOD
.DA CC.BOPS.ADD
.DA CC.BOPS.SUB
.DA CC.BOPS.SHL
.DA CC.BOPS.SHR
.DA CC.BOPS.L
.DA CC.BOPS.LE
.DA CC.BOPS.G
.DA CC.BOPS.GE
.DA CC.BOPS.EQ
.DA CC.BOPS.NE
.DA CC.BOPS.AND
.DA CC.BOPS.OR
.DA CC.BOPS.EOR
.DA CC.BOPS.LAND
.DA CC.BOPS.LOR
J.CC.cBOPS .DA CC.BOPS.cMUL
.DA CC.BOPS.cDIV
.DA CC.BOPS.cMOD
.DA CC.BOPS.ADD
.DA CC.BOPS.SUB
.DA CC.BOPS.SHL
.DA CC.BOPS.SHR
.DA CC.BOPS.L
.DA CC.BOPS.LE
.DA CC.BOPS.G
.DA CC.BOPS.GE
.DA CC.BOPS.EQ
.DA CC.BOPS.NE
.DA CC.BOPS.AND
.DA CC.BOPS.OR
.DA CC.BOPS.EOR
.DA CC.BOPS.LAND
.DA CC.BOPS.LOR
L.CC.DIRS .DA CC.DIRS
L.CC.KW .DA CC.KW
2022-02-04 14:57:17 +00:00
L.CC.SCSPEC .DA CC.SCSPEC
2022-01-30 21:47:08 +00:00
L.CC.TYPEQUAL .DA CC.TYPEQUAL
L.CC.TYPESPEC .DA CC.TYPESPEC
L.CC.TYPES .DA CC.TYPES
L.CC.FTYPES .DA CC.FTYPES
J.CC.DIRS .DA CC.DIR.DEFINE
.DA CC.DIR.INCLUDE
*--------------------------------------
2022-01-30 21:47:08 +00:00
J.CC.KW .DA CC.KW.IF
.DA CC.KW.WHILE
.DA CC.KW.ELSE
.DA CC.KW.DO
.DA CC.KW.FOR
.DA CC.KW.SWITCH
.DA CC.KW.CASE
.DA CC.KW.BREAK
.DA CC.KW.CONTINUE
.DA CC.KW.RETURN
*--------------------------------------
.DA CC.KW.SIZEOF
.DA CC.KW.STRUCT
*--------------------------------------
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
*--------------------------------------
2022-02-04 14:57:17 +00:00
J.CC.SCSPEC .DA CC.SCSPEC.AUTO
.DA CC.SCSPEC.REGISTER
.DA CC.SCSPEC.STATIC
.DA CC.SCSPEC.EXTERN
.DA CC.SCSPEC.TYPEDEF
2022-01-30 21:47:08 +00:00
J.CC.TYPEQUAL .DA CC.TYPE.CONST
.DA CC.TYPE.VOLATILE
J.CC.TYPESPEC .DA CC.TYPE.SIGNED
.DA CC.TYPE.UNSIGNED
.DA CC.TYPE.SHORT
J.CC.TYPES .DA CC.TYPE.VOID
.DA CC.TYPE.CHAR
.DA CC.TYPE.INT
.DA CC.TYPE.LONG
.DA CC.TYPE.FLOAT
J.CC.UTYPES .DA CC.TYPE.UCHAR
.DA CC.TYPE.UINT
.DA CC.TYPE.ULONG
J.CC.STYPES .DA CC.TYPE.SCHAR
.DA CC.TYPE.SINT
.DA CC.TYPE.SLONG
*--------------------------------------
L.CC.MAIN .DA CC.MAIN
L.CC.LIBC .DA CC.LIBC
2022-06-12 20:42:22 +00:00
L.PCC.FH .DA PCC.FH
.DA 0
*--------------------------------------
* Called once at process creation
* Put code for loading LIB here
*--------------------------------------
CS.INIT clc
CS.INIT.RTS rts
*--------------------------------------
* Called until exit with CS
* if RUN exits with CC, RN entered again
*--------------------------------------
CS.RUN >PUSHW L.MSG.GREETINGS
>PUSHW A2osX.KVER
>PUSHBI 2
>SYSCALL PrintF
bcs CS.INIT.RTS
lda #hFilePtr
>STA.G hFilePtr
2022-01-30 21:47:08 +00:00
lda #LineCntPtr
>STA.G LineCntPtr
>LDYAI 256
>SYSCALL GetMem
bcs CS.INIT.RTS
>STYA.G LineBufPtr
txa
>STA.G hLineBuf
jsr CS.RUN.ARGS
bcs CS.INIT.RTS
2022-06-22 06:26:44 +00:00
jsr CC.CORE.Init
bcs CS.INIT.RTS
2022-06-12 20:42:22 +00:00
jsr CODE.Init
jsr CS.RUN.FOpen1st
bcs CS.INIT.RTS
*--------------------------------------
2022-06-12 20:42:22 +00:00
CS.RUN.CLOOP jsr CC.CompileFile
2022-01-30 21:47:08 +00:00
cmp #MLI.E.EOF
bne .9
2022-01-30 21:47:08 +00:00
jsr CS.RUN.FClose
2022-06-12 20:42:22 +00:00
bne CS.RUN.CLOOP
2022-01-30 21:47:08 +00:00
*--------------------------------------
2022-06-12 20:42:22 +00:00
jsr PrintSummary
bcs .99
2022-06-12 20:42:22 +00:00
jsr CC.Link
bcs .99
jsr CheckMain
bcs .99
dec bPass2
jsr CS.RUN.FCreate
bcs .99
jsr CODE.Init
bcs .99
jsr CS.RUN.FOpen1st
bcs .99
*--------------------------------------
.2 jsr CC.CompileFile
cmp #MLI.E.EOF
bne .9
2022-06-12 20:42:22 +00:00
jsr CS.RUN.FClose
bne .2
*--------------------------------------
.8 lda #0 Exit Code = Success
sec
rts
.9 pha
jsr PrintErrorMsg
pla
sec
2022-06-12 20:42:22 +00:00
.99 rts
*--------------------------------------
CS.RUN.ARGS inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
2022-06-12 20:42:22 +00:00
bcs .8
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
ldx #OptionVars-OptionList-1
.1 cmp OptionList,x
beq .2
dex
bpl .1
bra .90
.2 ldy OptionVars,x
lda #$ff
sta (pData),y
bra CS.RUN.ARGS
2022-06-12 20:42:22 +00:00
.4 >LDA.G CC.InFileArg
bne .5
lda ArgIndex
>STA.G CC.InFileArg
bra CS.RUN.ARGS
.5 >LDA.G CC.OutFileArg
bne .90
2022-06-12 20:42:22 +00:00
lda ArgIndex
>STA.G CC.OutFileArg
bra CS.RUN.ARGS
2022-01-30 21:47:08 +00:00
2022-06-12 20:42:22 +00:00
.8 >LDA.G CC.InFileArg
beq .90
2022-06-12 20:42:22 +00:00
>LDA.G CC.OutFileArg
beq .90
clc
.9 rts
.90 >PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
lda #E.SYN
sec
rts
*--------------------------------------
2022-06-12 20:42:22 +00:00
CS.RUN.FOpen1st >LDA.G CC.InFileArg
>SYSCALL ArgV
CS.RUN.FOpen phy
pha
2022-06-22 06:26:44 +00:00
>PUSHW L.MSG.READING
2022-06-12 20:42:22 +00:00
pla
pha
>PUSHYA
>PUSHBI 2
>SYSCALL PrintF
pla
ply
>PUSHYA
>PUSHBI O.RDONLY
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
>SYSCALL FOpen
bcs .9
tax
>LDA.G hFilePtr
inc
sta (pData),y
tay
txa
sta (pData),y
2022-01-30 21:47:08 +00:00
>LDA.G LineCntPtr
inc
inc
sta (pData),y
tay
lda #0
sta (pData),y
iny
sta (pData),y
.9 rts
*--------------------------------------
CS.RUN.FGetS >LDYA.G LineBufPtr
>STYA ZPLineBufPtr
>LDA.G LineCntPtr
tay
lda (pData),y
inc
sta (pData),y
bne .1
2022-01-30 21:47:08 +00:00
iny
lda (pData),y
inc
sta (pData),y
.1 >LDA.G hFilePtr
tay
lda (pData),y
>PUSHA
>PUSHW ZPLineBufPtr
>PUSHWI 255
>SYSCALL FGetS
2022-01-30 21:47:08 +00:00
bcs .9
2022-01-30 21:47:08 +00:00
>LDA.G bTrace
bpl .8
jsr PrintTraceMsg
.8
.9 rts
*--------------------------------------
CS.RUN.FClose >LDA.G hFilePtr
cmp #hFilePtr
beq .8
2022-01-30 21:47:08 +00:00
tay
lda (pData),y
>SYSCALL FClose
2022-01-30 21:47:08 +00:00
>LDA.G hFilePtr
dec
sta (pData),y
cmp #hFilePtr
beq .8
2022-01-30 21:47:08 +00:00
>LDA.G LineCntPtr
dec
dec
sta (pData),y NZ
2022-01-30 21:47:08 +00:00
.8 rts
*--------------------------------------
2022-06-12 20:42:22 +00:00
CS.RUN.FCreate >LDA.G CC.OutFileArg
>SYSCALL ArgV
>STYA ZPPtr1
>PUSHW L.MSG.GENERATING
>PUSHW ZPPtr1
>PUSHBI 2
>SYSCALL PrintF
>PUSHW ZPPtr1
>PUSHBI O.WRONLY+O.CREATE
>PUSHBI S.FI.T.BIN
>PUSHWI $2000 Aux type
>SYSCALL FOpen
bcs .9
>STA.G CC.hOutFile
>PUSHA A = CC.hOutFile
>PUSHW L.PCC.FH
>PUSHWI PCC.FH.L
>SYSCALL FWrite
.9 rts
*--------------------------------------
CS.DOEVENT sec
rts
*--------------------------------------
2022-06-12 20:42:22 +00:00
CS.QUIT jsr CODE.Quit
2022-06-22 06:26:44 +00:00
jsr CC.CORE.Quit
2022-01-30 21:47:08 +00:00
>LDA.G hLineBuf
beq .8
>SYSCALL FreeMem
.8 clc
rts
*--------------------------------------
PrintTraceMsg ldy #S.PS.hStdErr
lda (pPS),y
>PUSHA
>PUSHW L.MSG.TRACE
>LDA.G LineCntPtr
inc
tay
lda (pData),y
>PUSHA
dey
lda (pData),y
>PUSHA
>PUSHW.G LineBufPtr
>PUSHBI 4
>SYSCALL FPrintF
rts
*--------------------------------------
PrintDebugMsg >PUSHW L.MSG.DEBUG
>PUSHW ZPCCCode
>PUSHW ZPCCConst
>PUSHW ZPCCData
lda pStack
clc
adc #8
pha
lda pStack+1
adc #0
>PUSHA
pla
>PUSHA
2022-01-30 21:47:08 +00:00
>PUSHB LocalPtr
>PUSHW ZPCCStack
2022-06-12 20:42:22 +00:00
2022-01-30 21:47:08 +00:00
>PUSHB CStackPtr
tay
beq .1
lda (ZPCCStack),y
pha
iny
lda (ZPCCStack),y
ply
.1 >PUSHYA
2022-06-22 06:26:44 +00:00
lda ScopeIdx
2022-06-12 20:42:22 +00:00
sec
2022-06-22 06:26:44 +00:00
sbc #CC.hScopes
>PUSHA
2022-01-30 21:47:08 +00:00
2022-06-12 20:42:22 +00:00
>PUSHBI 15
2022-01-30 21:47:08 +00:00
>SYSCALL PrintF
2022-06-12 20:42:22 +00:00
>DEBUG
rts
*--------------------------------------
2022-06-12 20:42:22 +00:00
PrintErrorMsg >LDA.G CC.hDefineBuf
beq .10
>LDYA.G CC.SaveDefine
>STYA ZPLineBufPtr
.10 >LDA.G bTrace
bmi .1
jsr PrintTraceMsg
.1 lda ZPLineBufPtr
sec
>SBC.G LineBufPtr
tax
>LDYA.G LineBufPtr
>STYA ZPLineBufPtr
txa
beq .3
ldy #0
lda #'-'
.2 sta (ZPLineBufPtr),y
iny
dex
bne .2
txa
.3 sta (ZPLineBufPtr),y
.8 ldy #S.PS.hStdErr
lda (pPS),y
>PUSHA
>PUSHW L.MSG.ERROR
>PUSHW ZPLineBufPtr
>PUSHBI 2
>SYSCALL FPrintF
rts
2022-06-12 20:42:22 +00:00
*--------------------------------------
PrintSummary lda ZPCCCode+1
sta PCC.FH+PCC.FH.IDATA+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
>PUSHW ZPCCConst
lda ZPCCData+1
>PUSHA
sta PCC.FH+PCC.FH.DSSIZE+1
lda ZPCCData
>PUSHA
sta PCC.FH+PCC.FH.DSSIZE
>PUSHBI 6
>SYSCALL PrintF
rts
*--------------------------------------
2022-06-22 06:26:44 +00:00
CheckMain >PUSHB.G CC.hScopes
2022-06-12 20:42:22 +00:00
>PUSHW L.CC.MAIN
>SYSCALL SListLookup
bcs .9
>STYA ZPPtr1 SymID
2022-06-22 06:26:44 +00:00
>PUSHB.G CC.hScopes
2022-06-12 20:42:22 +00:00
>PUSHW ZPPtr1 SymID
2022-06-22 06:26:44 +00:00
>PUSHW ZPSymBufPtr
2022-06-12 20:42:22 +00:00
>PUSHWI 65535 all
>PUSHWZ From Start
>SYSCALL SListGetData
2022-06-22 06:26:44 +00:00
bcs .99
2022-06-12 20:42:22 +00:00
ldy #SYM.Addr
2022-06-22 06:26:44 +00:00
lda (ZPSymBufPtr),y
2022-06-12 20:42:22 +00:00
iny
2022-06-22 06:26:44 +00:00
ora (ZPSymBufPtr),y
beq .9
2022-06-12 20:42:22 +00:00
2022-06-22 06:26:44 +00:00
lda (ZPSymBufPtr),y
2022-06-12 20:42:22 +00:00
sta PCC.FH+PCC.FH.MAIN+1
dey
2022-06-22 06:26:44 +00:00
lda (ZPSymBufPtr),y
2022-06-12 20:42:22 +00:00
sta PCC.FH+PCC.FH.MAIN
2022-06-22 06:26:44 +00:00
* clc
2022-06-12 20:42:22 +00:00
rts
2022-06-22 06:26:44 +00:00
.9 >LDYA L.MSG.NOMAIN
2022-06-12 20:42:22 +00:00
>SYSCALL puts
lda #E.CSYN
sec
2022-06-22 06:26:44 +00:00
.99 rts
*--------------------------------------
.INB usr/src/bin/cc.s.code
.INB usr/src/bin/cc.s.core
.INB usr/src/bin/cc.s.dir
2022-01-30 21:47:08 +00:00
.INB usr/src/bin/cc.s.decl
.INB usr/src/bin/cc.s.stmt
.INB usr/src/bin/cc.s.kw
2022-01-30 21:47:08 +00:00
.INB usr/src/bin/cc.s.type
.INB usr/src/bin/cc.s.f
.INB usr/src/bin/cc.s.exp
2022-01-30 21:47:08 +00:00
.INB usr/src/bin/cc.s.sym
2022-06-12 20:42:22 +00:00
.INB usr/src/bin/cc.s.link
.INB usr/src/bin/cc.s.exec
*--------------------------------------
2022-06-12 20:42:22 +00:00
CS.END
*--------------------------------------
* Initialized DATA
*--------------------------------------
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"
2022-06-22 06:26:44 +00:00
MSG.READING .AZ "*** Reading file: %s\r\n"
2022-06-12 20:42:22 +00:00
MSG.LINKING .AZ "*** Linking..."
2022-06-22 06:26:44 +00:00
MSG.LINKING2 .AZ "*** %H:%18s T/Q=%h/%h, SC=%h, Def=%h, SizeOf=%H, @=%H\r\n"
2022-06-12 20:42:22 +00:00
MSG.GENERATING .AZ "*** Generating: %s\r\n"
MSG.DEBUG .AS "*** pCode=%H, pConst=%H, pData=%H, pStack=%H\r\n"
2022-06-22 06:26:44 +00:00
.AZ " LSP=%h, CSP=%H:%h>%h:%h, ScopeIdx=%h\r\n"
2022-06-12 20:42:22 +00:00
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 "\r\n*** Compilation OK : Code size=%5D, iData size=%5D, uData size=%5D\r\n\r\n"
MSG.NOMAIN .AZ "*** No 'main()' function defined."
*--------------------------------------
ENV.INCLUDE .AZ "INCLUDE"
ENV.LIB .AZ "LIB"
*--------------------------------------
OptionList .AS "DdTt"
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
*--------------------------------------
2022-06-22 06:26:44 +00:00
* PCC = Pre Compiled Code
*--------------------------------------
ZS.RT.Ptr1 .EQ ZPBIN
*--------------------------------------
PCC.FH .PH $2000
PCC.FH.2000 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
.DA #256 Stack Size
.DA #2 ZP Size
.DA 0
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
.DA $FFFF
.DA 0
PCC.FH.INIT
* TODO : LoadLib code
PCC.FH.QUIT
* TODO : UnloadLib code
PCC.FH.DOEVENT clc
rts
* int main(int argc, char *argv[]) ;
PCC.FH.RUN ldy #S.PS.ARGC
lda (pPS),y
.1 pha
>SYSCALL ArgV
bcs .2
>STYA ZS.RT.Ptr1
pla
pha
asl
tay
lda ZS.RT.Ptr1
sta (pData),y
lda ZS.RT.Ptr1+1
iny
sta (pData),y
pla
inc
bra .1
.2 pla
>PUSHWI 0 returned int
lda #0
>PUSHA
ldy #S.PS.ARGC
lda (pPS),y
>PUSHA int ARGC
>PUSHW pData *char[] ARGV
>DEBUG
PCC.FH.MAIN .EQ *-PCC.FH.2000+1
jsr $FFFF * jsr main
>PULLA
inc pStack pull returned int
sec
rts
PCC.FH.SYSCALL jsr A2osX.SYSCALL
bcc .8
inc pStack
eor #$ff
inc
>PUSHA int -ERROR code...
ldy #1
lda #$FF
sta (pStack),y on stack
rts
.8
PCC.FH.CS .EP
PCC.FH.L .EQ *-PCC.FH
*--------------------------------------
2022-06-12 20:42:22 +00:00
PCC.DEBUG >DEBUG
2022-01-30 21:47:08 +00:00
PCC.DEBUG.L .EQ *-PCC.DEBUG
*--------------------------------------
2022-06-12 20:42:22 +00:00
PCC.SLEEP >SLEEP
PCC.SLEEP.L .EQ *-PCC.SLEEP
*--------------------------------------
PCC.ENTER ldx pBase
2022-01-30 21:47:08 +00:00
phx
clc
adc pStack A = Local Size
sta pBase
PCC.ENTER.L .EQ *-PCC.ENTER
*--------------------------------------
2022-06-12 20:42:22 +00:00
PCC.LEAVE lda pBase
2022-01-30 21:47:08 +00:00
sta pStack
pla
sta pBase
rts
2022-06-12 20:42:22 +00:00
2022-01-30 21:47:08 +00:00
PCC.LEAVE.L .EQ *-PCC.LEAVE
*--------------------------------------
2022-06-12 20:42:22 +00:00
PCC.ADDLOCAL clc
2022-01-30 21:47:08 +00:00
adc pStack
sta pStack
PCC.ADDLOCAL.L .EQ *-PCC.ADDLOCAL
*--------------------------------------
2022-01-30 21:47:08 +00:00
PCC.GETLOCAL clc
adc pBase
tay
lda pBase+1
2022-06-12 20:42:22 +00:00
2022-01-30 21:47:08 +00:00
PCC.GETLOCAL.L .EQ *-PCC.GETLOCAL
*--------------------------------------
2022-01-30 21:47:08 +00:00
PCC.SETRETVALUE ldy #0
.1 >PULLA
sta (pBase),y
iny
dex
bne .1
PCC.SETRETVALUE.L .EQ *-PCC.SETRETVALUE
*--------------------------------------
2022-06-12 20:42:22 +00:00
PCC.PushXFromYA >STYA ZS.RT.Ptr1
txa
dec
tay
2022-06-12 20:42:22 +00:00
.1 lda (ZS.RT.Ptr1),y
>PUSHA
dey
bpl .1
PCC.PushXFromYA.L .EQ *-PCC.PushXFromYA
*--------------------------------------
2022-06-12 20:42:22 +00:00
PCC.PopXToYA >STYA ZS.RT.Ptr1
2022-01-30 21:47:08 +00:00
ldy #0
.1 >PULLA
2022-06-12 20:42:22 +00:00
sta (ZS.RT.Ptr1),y
iny
dex
bne .1
PCC.PopXToYA.L .EQ *-PCC.PopXToYA
*--------------------------------------
2022-06-12 20:42:22 +00:00
PCC.SetXToYA >STYA ZS.RT.Ptr1
2022-01-30 21:47:08 +00:00
ldy #0
.1 lda (pStack),y
2022-06-12 20:42:22 +00:00
sta (ZS.RT.Ptr1),y
2022-01-30 21:47:08 +00:00
iny
dex
bne .1
PCC.SetXToYA.L .EQ *-PCC.SetXToYA
*--------------------------------------
PCC.Test0X lda #0
2022-01-30 21:47:08 +00:00
.1 ora (pStack)
inc pStack
dex
bne .1
2022-01-30 21:47:08 +00:00
tay
.2 bne .2+5
.HS 4C JMP abs
PCC.Test0X.L .EQ *-PCC.Test0X
*--------------------------------------
2022-01-30 21:47:08 +00:00
PCC.SETpBASEp1 lda pBase+1
2022-06-12 20:42:22 +00:00
sta ZS.RT.Ptr1+1
2022-01-30 21:47:08 +00:00
PCC.SETpBASEp1.L .EQ *-PCC.SETpBASEp1
*--------------------------------------
PCC.SETpBASEpA clc
adc pBase
2022-06-12 20:42:22 +00:00
sta ZS.RT.Ptr1
2022-01-30 21:47:08 +00:00
ldy #1
2022-06-12 20:42:22 +00:00
2022-01-30 21:47:08 +00:00
PCC.SETpBASEpA.L .EQ *-PCC.SETpBASEpA
*--------------------------------------
2022-06-12 20:42:22 +00:00
PCC.Deref >PUSHB (ZS.RT.Ptr1),y
>PUSHB (ZS.RT.Ptr1)
PCC.Deref.L .EQ *-PCC.Deref
2022-01-30 21:47:08 +00:00
*--------------------------------------
PCC.PUSHpBASEp1 >PUSHB pBase+1
2022-06-12 20:42:22 +00:00
2022-01-30 21:47:08 +00:00
PCC.PUSHpBASEp1.L .EQ *-PCC.PUSHpBASEp1
*--------------------------------------
PCC.PUSHpBASEpA clc
adc pBase
>PUSHA
2022-06-12 20:42:22 +00:00
2022-01-30 21:47:08 +00:00
PCC.PUSHpBASEpA.L .EQ *-PCC.PUSHpBASEpA
*--------------------------------------
2022-06-12 20:42:22 +00:00
PCC.PushFromPtr >PULLW ZS.RT.Ptr1
2022-01-30 21:47:08 +00:00
2022-06-12 20:42:22 +00:00
.1 lda (ZS.RT.Ptr1),y
2022-01-30 21:47:08 +00:00
>PUSHA
dey
bpl .1
2022-06-12 20:42:22 +00:00
2022-01-30 21:47:08 +00:00
PCC.PushFromPtr.L .EQ *-PCC.PushFromPtr
*--------------------------------------
2022-06-12 20:42:22 +00:00
PCC.PushConstPAX
clc
2022-06-22 06:26:44 +00:00
adc PCC.FH.2000+PCC.FH.IDATA
2022-06-12 20:42:22 +00:00
tay
txa
2022-06-22 06:26:44 +00:00
adc PCC.FH.2000+PCC.FH.IDATA+1
2022-06-12 20:42:22 +00:00
>PUSHA
tya
>PUSHA
PCC.PushConstPAX.L .EQ *-PCC.PushConstPAX
*--------------------------------------
2022-01-30 21:47:08 +00:00
CC.OPChars .AS "!~+-*/%=&|^<>["
CC.OPChars.Cnt .EQ *-CC.OPChars
*--------------------------------------
* Pre Operators: & * + - ! ~ ++ --
*--------------------------------------
CC.PREOPS >PSTR "&" ref
>PSTR "*" deref
>PSTR "+" abs
>PSTR "-" change sign
>PSTR "!" logical not
>PSTR "~" bitwise not
>PSTR "++" pre increase
>PSTR "--" pre decrease
.HS 00
*--------------------------------------
* Post Operators: ++ --
*--------------------------------------
CC.POSTOPS >PSTR "++"
>PSTR "--"
>PSTR "["
>PSTR "."
>PSTR "->"
.HS 00
*--------------------------------------
* Assignment Operators: = += -= *= /= %= <<= >>= &= ^= |=
*--------------------------------------
CC.AOPS >PSTR "="
>PSTR "+="
>PSTR "-="
>PSTR "*="
>PSTR "/="
>PSTR "%="
>PSTR "<<="
>PSTR ">>="
>PSTR "&="
>PSTR "^="
>PSTR "!="
.HS 00
*-- Binary ---- H to L precedence -----
* Arithmetic Operators: * / %
* Arithmetic Operators: + -
* Shift Operators: << >>
* Relational Operators: < > >= < >= == !=
* Bitwise Operators: & | ^ ~
* Logical Operators: && ||
*--------------------------------------
CC.BOPS >PSTR "*"
>PSTR "/"
>PSTR "%"
>PSTR "+"
>PSTR "-"
>PSTR "<<"
>PSTR ">>"
>PSTR "<"
>PSTR "<="
>PSTR ">"
>PSTR ">="
>PSTR "=="
>PSTR "!="
>PSTR "&"
>PSTR "|"
>PSTR "^"
>PSTR "&&"
>PSTR "||"
.HS 00
*--------------------------------------
* Reserved Directives:
*--------------------------------------
CC.DIRS >PSTR "define"
>PSTR "include"
.HS 00
*--------------------------------------
* Reserved Keywords:
*--------------------------------------
CC.KW >PSTR "if"
>PSTR "while"
>PSTR "else"
>PSTR "do"
>PSTR "for"
>PSTR "switch"
>PSTR "case"
>PSTR "break"
>PSTR "continue"
2022-01-30 21:47:08 +00:00
>PSTR "return"
>PSTR "sizeof"
>PSTR "struct"
.HS 00
*--------------------------------------
2022-02-04 14:57:17 +00:00
CC.SCSPEC >PSTR "auto"
>PSTR "register"
>PSTR "static"
>PSTR "extern"
>PSTR "typedef"
.HS 00
*--------------------------------------
2022-01-30 21:47:08 +00:00
CC.TYPEQUAL >PSTR "const" ALL
>PSTR "volatile"
CC.TYPESPEC >PSTR "signed" char,int,long
>PSTR "unsigned" char,int,long
>PSTR "short" int
CC.TYPES >PSTR "void"
>PSTR "char"
>PSTR "int"
>PSTR "long"
>PSTR "float"
.HS 00
*--------------------------------------
CC.Type2FPU .DA #FPU.wMUL,#FPU.iMUL,#FPU.uMUL,#FPU.lMUL,#FPU.fMUL
*--------------------------------------
CC.FTYPES >PSTR "fastcall"
* .HS 00
*--------------------------------------
CC.TYPESIZE .HS 0001010202040405
CC.TYPESIGN .HS 0000FF00FF00FFFF
*--------------------------------------
2022-01-30 21:47:08 +00:00
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"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.ChTyp
>PSTR "chmod"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.ChMod
>PSTR "fstat"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FStat
>PSTR "stat"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.Stat
>PSTR "mkdir"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.MKDir
>PSTR "mknod"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.MKNod
>PSTR "mkfifo"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.MKFIFO
>PSTR "pipe"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.Pipe
>PSTR "opendir"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.OpenDir
>PSTR "readdir"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.ReadDir
>PSTR "closedir"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.CloseDir
>PSTR "open"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.Open
>PSTR "close"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.Close
>PSTR "read"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.Read
>PSTR "write"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.Write
>PSTR "chown"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.ChOwn
>PSTR "fputc"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FPutC
>PSTR "putchar"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.PutChar
>PSTR "getc"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.GetC
>PSTR "getchar"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.GetChar
>PSTR "fputs"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FPutS
>PSTR "puts"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.PutS
>PSTR "fgets"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FGetS
>PSTR "ungetc"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.UngetC
>PSTR "fopen"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FOpen
>PSTR "fclose"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FClose
>PSTR "fread"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FRead
>PSTR "fwrite"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FWrite
>PSTR "fflush"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FFlush
>PSTR "fseek"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FSeek
>PSTR "ftell"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FTell
>PSTR "feof"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FEOF
>PSTR "remove"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.Remove
>PSTR "rename"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.Rename
>PSTR "printf"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.PrintF
>PSTR "fprintf"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FPrintF
>PSTR "sprintf"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.SPrintF
>PSTR "scanf"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.ScanF
>PSTR "fscanf"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FScanF
>PSTR "sscanf"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.SScanF
* >PSTR "$50"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "$52"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "$54"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "$56"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "$58"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "$5A"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "$5C"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
>PSTR "setattr"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.SetAttr
* >PSTR "mount"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "umount"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "online"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "getstkobj"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "shift"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "argv"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "argvDup"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "geterrmsg"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
>PSTR "atof"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.AToF
>PSTR "atoi"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.AToI
>PSTR "atol"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.AToL
>PSTR "strtof"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.StrToF
>PSTR "strtol"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.StrToL
>PSTR "strtoul"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.StrToUL
* >PSTR "realpath"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "expand"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
>PSTR "strlen"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.StrLen
>PSTR "strcpy"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.StrCpy
>PSTR "strcat"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.StrCat
>PSTR "strdup"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.StrDup
>PSTR "strupr"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.StrUpr
>PSTR "strlwr"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.StrLwr
>PSTR "strcmp"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.StrCmp
>PSTR "strcasecmp"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.StrCaseCmp
* >PSTR "getdevbyname"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "getdevstatus"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "mkdev"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "ioctl"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "loadlib"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "unloadlib"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "loaddrv"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "insdrv"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
>PSTR "execl"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.ExecL
* >PSTR "execv"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
>PSTR "fork"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.Fork
>PSTR "kill"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.Kill
* >PSTR "loadfile"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "loadtxtfile"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "filesearch"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "getmemstat"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "strvnew"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "strvset"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "strvget"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "strvfree"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
>PSTR "putenv"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.PutEnv
>PSTR "setenv"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.SetEnv
>PSTR "getenv"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.GetEnv
>PSTR "unsetenv"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.UnsetEnv
>PSTR "time"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.Time
>PSTR "strftime"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.StrFTime
* >PSTR "ptime2time"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
>PSTR "ctime2time"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.CTime2Time
>PSTR "md5"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.MD5
>PSTR "md5init"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.MD5Init
>PSTR "md5update"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.MD5Update
>PSTR "md5finalize"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.MD5Finalize
>PSTR "getpwuid"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.GetPWUID
>PSTR "getpwname"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.GetPWName
>PSTR "putpw"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.PutPW
>PSTR "getgrpgid"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.GetGRGID
>PSTR "getgrpname"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.GetGRName
>PSTR "putgr"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.PutGR
* >PSTR "opensession"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "closesession"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "slistgetdata"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "slistadddata"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "slistsetdata"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "slistgetbyid"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "slistnewkey"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "slistlookup"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "slistfree"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "slistnew"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
>PSTR "malloc"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.GetMem
>PSTR "realloc"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.Realloc
* >PSTR "getmemptr"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
>PSTR "free"
2022-01-30 21:47:08 +00:00
.DA #2,#1,#SYS.FreeMem
* >PSTR "newstkobj"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "loadstkobj"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "getstkobjptr"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
* >PSTR "freestkobj"
2022-01-30 21:47:08 +00:00
* .DA #2,#1,#0
*--------------------------------------
>PSTR "pwr"
2022-01-30 21:47:08 +00:00
.DA #2,#2,#FPU.PWR
>PSTR "log"
2022-01-30 21:47:08 +00:00
.DA #2,#2,#FPU.LOG
>PSTR "sqr"
2022-01-30 21:47:08 +00:00
.DA #2,#2,#FPU.SQR
>PSTR "exp"
2022-01-30 21:47:08 +00:00
.DA #2,#2,#FPU.EXP
>PSTR "cos"
2022-01-30 21:47:08 +00:00
.DA #2,#2,#FPU.COS
>PSTR "sin"
2022-01-30 21:47:08 +00:00
.DA #2,#2,#FPU.SIN
>PSTR "tan"
2022-01-30 21:47:08 +00:00
.DA #2,#2,#FPU.TAN
>PSTR "atan"
2022-01-30 21:47:08 +00:00
.DA #2,#2,#FPU.ATAN
2022-06-12 20:42:22 +00:00
>PSTR "lrintf"
.DA #2,#2,#FPU.QINT
.HS 00
*--------------------------------------
.DUMMY
.OR 0
DS.START
PathBuf .BS MLI.MAXPATH+1
2022-01-30 21:47:08 +00:00
bDebug .BS 1
bTrace .BS 1
2022-06-22 06:26:44 +00:00
CC.InFileArg .BS 1
CC.OutFileArg .BS 1
CC.hOutFile .BS 1
hFilePtr .BS 1
hFiles .BS FILES.MAX
LineCntPtr .BS 1
.BS 1 for inc inc
2022-06-12 20:42:22 +00:00
LineCnts .BS FILES.MAX*2
hLineBuf .BS 1
LineBufPtr .BS 2
CC.CmdSave .BS 1
2022-06-12 20:42:22 +00:00
CC.hDefineBuf .BS 1
2022-06-12 20:42:22 +00:00
CC.hDefines .BS 1
CC.SaveDefine .BS 2
2022-06-12 20:42:22 +00:00
CC.hTags .BS 1
CC.hStack .BS 1
2022-06-22 06:26:44 +00:00
CC.hScopes .BS 1+SCOPE.MAX 1 Global+ MAX locals
2022-06-12 20:42:22 +00:00
*--------------------------------------
CC.hSymBuf .BS 1
2022-06-22 06:26:44 +00:00
CC.SymID .BS 2
CC.SymIDSave .BS 2
CC.ArgBuf .BS SYM
2022-06-12 20:42:22 +00:00
*--------------------------------------
CC.LookupSymSize .BS 2
2022-06-22 06:26:44 +00:00
CC.LookupSymPtr .BS 2
CC.LookupIdx .BS 1
CC.hLookupBufs .BS LOOKUP.MAX
DS.END .ED
*--------------------------------------
MAN
SAVE usr/src/bin/cc.s
ASM