A2osX/BIN/CC.S.txt

995 lines
20 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
*--------------------------------------
CC.T.VOID .EQ 1
CC.T.UCHAR .EQ 2
CC.T.SCHAR .EQ 3
CC.T.UINT .EQ 4
CC.T.SINT .EQ 5
CC.T.ULONG .EQ 6
CC.T.SLONG .EQ 7
CC.T.FLOAT .EQ 8
CC.T.VARIADIC .EQ $FF
*--------------------------------------
CC.Q.POINTER .EQ %01000000
CC.Q.PPOINTER .EQ %10000000
CC.Q.PPPOINTER .EQ %11000000
CC.Q.ARRAY .EQ %00010000
CC.Q.AARRAY .EQ %00100000
CC.Q.AAARRAY .EQ %00110000
*
CC.Q.CONST .EQ %00000100
CC.Q.FUNC .EQ %00000010
CC.Q.FASTCALL .EQ %00000001
*--------------------------------------
* Zero Page Segment, up to 32 bytes
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZPCCCode .BS 2
ZPCCConst .BS 2
ZPCCData .BS 2
ZPCCStack .BS 2
ZPCCfDecl .BS 2
ZPLineBufPtr .BS 2
ZPSymID .BS 2
hDefine .BS 1
StackPtr .BS 1
ZPSymDef .EQ *
ZPSymType .BS 1
ZPSymQual .BS 1
ZPSymSizeOf .BS 2
ZPSymDataPtr .BS 2
ZPSymDefPtr .BS 2
SYMDEFSIZE .EQ *-ZPSymDef
ZPPtr1 .BS 2
ZPPtr2 .BS 2
ZPPtr3 .BS 2
ArgIndex .BS 1
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)
.DA DS.END-DS.START Data SegmentSize
.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
L.MSG.COMPILING .DA MSG.COMPILING
L.MSG.DEBUG .DA MSG.DEBUG
L.MSG.TRACE .DA MSG.TRACE
L.MSG.ERROR .DA MSG.ERROR
L.MSG.RUN .DA MSG.RUN
L.ENV.INCLUDE .DA ENV.INCLUDE
*--------------------------------------
L.CC.PREOPS .DA CC.PREOPS
J.CC.PREOPS .DA CC.ExpGet.Ref
.DA CC.ExpGet.Deref
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
L.CC.TMODS .DA CC.TMODS
L.CC.TMODS2 .DA CC.TMODS2
L.CC.TYPES .DA CC.TYPES
L.CC.FTYPES .DA CC.FTYPES
J.CC.DIRS .DA CC.DIR.DEFINE
.DA CC.DIR.INCLUDE
J.CC.KW .DA CC.IF
.DA CC.WHILE
.DA CC.ELSE
.DA CC.DO
.DA CC.FOR
.DA CC.SWITCH
.DA CC.CASE
.DA CC.BREAK
.DA CC.CONTINUE
.DA CC.SIZEOF
*--------------------------------------
.DA CC.TYPEDEF
.DA CC.STRUCT
*--------------------------------------
J.CC.TMODS .DA CC.CONST
J.CC.TMODS2 .DA CC.SIGNED
.DA CC.UNSIGNED
.DA CC.SHORT
J.CC.TYPES .DA CC.VOID
.DA CC.CHAR
.DA CC.INT
.DA CC.LONG
.DA CC.FLOAT
J.CC.UTYPES .DA CC.UCHAR
.DA CC.UINT
.DA CC.ULONG
J.CC.STYPES .DA CC.SCHAR
.DA CC.SINT
.DA CC.SLONG
*--------------------------------------
J.CC.KW.END .DA CC.IF.END
.DA CC.WHILE.END
*--------------------------------------
L.CC.LIBC .DA CC.LIBC
.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
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
jsr CC.Init
bcs CS.INIT.RTS
*--------------------------------------
CS.RUN.LOOP >SLEEP
>LDA.G bDebug
bpl .2
jsr PrintDebugMsg
.2 jsr CS.RUN.FGetS
bcs .4
>LDA.G bTrace
bpl .3
jsr PrintTraceMsg
.3 jsr CC.Run
bcc CS.RUN.LOOP
*--------------------------------------
.4 cmp #MLI.E.EOF
bne .9
.7 jsr CS.RUN.FClose
bne CS.RUN.LOOP
jsr CS.RUN.EXEC
bcs .9
.8 lda #0 Exit Code = Success
sec
rts
.9 pha
jsr PrintErrorMsg
pla
sec
rts
*--------------------------------------
CS.RUN.EXEC lda #$60 RTS
sta (ZPCCCode)
>DEBUG
>LDA.G CC.hCode
>SYSCALL GetMemPtr
>STYA ZPCCCode
jmp (ZPCCCode)
*--------------------------------------
CS.RUN.ARGS inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
bcs .7
>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
.4 >LDA.G hFilePtr
cmp #hFilePtr
bne .90
>LDYA ZPPtr1
jsr CS.RUN.FOpen
bcc CS.RUN.ARGS
rts
.7 >LDA.G hFilePtr
cmp #hFilePtr
beq .90
clc
.9 rts
.90 >PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
lda #E.SYN
sec
rts
*--------------------------------------
CS.RUN.FOpen >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
>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
iny
lda (pData),y
inc
sta (pData),y
.1 >LDA.G hFilePtr
tay
lda (pData),y
>PUSHA
>PUSHW ZPLineBufPtr
>PUSHWI 255
>SYSCALL FGetS
rts
*--------------------------------------
CS.RUN.FClose >LDA.G hFilePtr
cmp #hFilePtr
beq .8
tay
lda (pData),y
>SYSCALL FClose
>LDA.G hFilePtr
dec
sta (pData),y
cmp #hFilePtr
beq .8
>LDA.G LineCntPtr
dec
dec
sta (pData),y NZ
.8 rts
*--------------------------------------
CS.DOEVENT sec
rts
*--------------------------------------
CS.QUIT jsr CC.Quit
clc
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
>PUSHBI 8
>SYSCALL PrintF
>DEBUG
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
*--------------------------------------
PrintErrorMsg lda hDefine
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
*--------------------------------------
.INB usr/src/bin/cc.s.code
.INB usr/src/bin/cc.s.core
.INB usr/src/bin/cc.s.dir
.INB usr/src/bin/cc.s.kw
.INB usr/src/bin/cc.s.exp
.INB usr/src/bin/cc.s.exec
*--------------------------------------
CS.END
*--------------------------------------
* Initialized DATA
*--------------------------------------
MSG.GREETINGS .AZ "\r\nA2osX C Compiler %d.%d\r\n\r\n"
MSG.USAGE .AS "Usage : CC <option> srcfile\r\n"
.AS " -D : Debug Mode\r\n"
.AS " -T : Trace On"
.AZ "\r\n"
MSG.COMPILING .AZ "***Compiling : %s...\r\n"
MSG.DEBUG .AZ "***pCode=%H, pConst=%H, pData=%H, pStack=%H\r\n"
MSG.TRACE .AZ "%5D> %s\r\n"
MSG.ERROR .AZ " %s^\r\n"
MSG.RUN .AZ "***Code size: %D, Data Size: %D, Running...\r\n"
*--------------------------------------
ENV.INCLUDE .AZ "INCLUDE"
ENV.LIB .AZ "LIB"
*--------------------------------------
OptionList .AS "DdTt"
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
*--------------------------------------
PCC.DEBUG >DEBUG
PCC.DEBUG.L .EQ *-PCC.DEBUG
*--------------------------------------
PCC.SLEEP >SLEEP
PCC.SLEEP.L .EQ *-PCC.SLEEP
*--------------------------------------
PCC.PushXFromYA >STYA ZPPtr1
txa
dec
tay
.1 lda (ZPPtr1),y
>PUSHA
dey
bpl .1
PCC.PushXFromYA.L .EQ *-PCC.PushXFromYA
*--------------------------------------
PCC.PopXToYA >STYA ZPPtr1
ldy #0
.1 >PULLA
sta (ZPPtr1),y
iny
dex
bne .1
PCC.PopXToYA.L .EQ *-PCC.PopXToYA
*--------------------------------------
PCC.Test0X lda #0
.1 ora (pStack)
inc pStack
dex
bne .1
tay
.2 bne .2+5
.HS 4C JMP abs
PCC.Test0X.L .EQ *-PCC.Test0X
*--------------------------------------
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
* >PSTR "(" type cast
.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"
>PSTR "sizeof"
>PSTR "typedef"
>PSTR "struct"
.HS 00
*--------------------------------------
* Type Declaration
*--------------------------------------
CC.TMODS >PSTR "const" ALL
CC.TMODS2 >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
*--------------------------------------
CC.LIBC >PSTR "chtyp"
.DA #2,#0,#SYS.ChTyp
>PSTR "chmod"
.DA #2,#0,#SYS.ChMod
>PSTR "fstat"
.DA #2,#0,#SYS.FStat
>PSTR "stat"
.DA #2,#0,#SYS.Stat
>PSTR "mkdir"
.DA #2,#0,#SYS.MKDir
>PSTR "mknod"
.DA #2,#0,#SYS.MKNod
>PSTR "mkfifo"
.DA #2,#0,#SYS.MKFIFO
>PSTR "pipe"
.DA #2,#0,#SYS.Pipe
>PSTR "opendir"
.DA #2,#0,#SYS.OpenDir
>PSTR "readdir"
.DA #2,#0,#SYS.ReadDir
>PSTR "closedir"
.DA #2,#0,#SYS.CloseDir
>PSTR "open"
.DA #2,#0,#SYS.Open
>PSTR "close"
.DA #2,#0,#SYS.Close
>PSTR "read"
.DA #2,#0,#SYS.Read
>PSTR "write"
.DA #2,#0,#SYS.Write
>PSTR "chown"
.DA #2,#0,#SYS.ChOwn
>PSTR "fputc"
.DA #2,#0,#SYS.FPutC
>PSTR "putchar"
.DA #2,#0,#SYS.PutChar
>PSTR "getc"
.DA #2,#0,#SYS.GetC
>PSTR "getchar"
.DA #2,#0,#SYS.GetChar
>PSTR "fputs"
.DA #2,#0,#SYS.FPutS
>PSTR "puts"
.DA #2,#0,#SYS.PutS
>PSTR "fgets"
.DA #2,#0,#SYS.FGetS
>PSTR "ungetc"
.DA #2,#0,#SYS.UngetC
>PSTR "fopen"
.DA #2,#0,#SYS.FOpen
>PSTR "fclose"
.DA #2,#0,#SYS.FClose
>PSTR "fread"
.DA #2,#0,#SYS.FRead
>PSTR "fwrite"
.DA #2,#0,#SYS.FWrite
>PSTR "fflush"
.DA #2,#0,#SYS.FFlush
>PSTR "fseek"
.DA #2,#0,#SYS.FSeek
>PSTR "ftell"
.DA #2,#0,#SYS.FTell
>PSTR "feof"
.DA #2,#0,#SYS.FEOF
>PSTR "remove"
.DA #2,#0,#SYS.Remove
>PSTR "rename"
.DA #2,#0,#SYS.Rename
>PSTR "printf"
.DA #2,#0,#SYS.PrintF
>PSTR "fprintf"
.DA #2,#0,#SYS.FPrintF
>PSTR "sprintf"
.DA #2,#0,#SYS.SPrintF
>PSTR "scanf"
.DA #2,#0,#SYS.ScanF
>PSTR "fscanf"
.DA #2,#0,#SYS.FScanF
>PSTR "sscanf"
.DA #2,#0,#SYS.SScanF
* >PSTR "$50"
* .DA #2,#0,#0
* >PSTR "$52"
* .DA #2,#0,#0
* >PSTR "$54"
* .DA #2,#0,#0
* >PSTR "$56"
* .DA #2,#0,#0
* >PSTR "$58"
* .DA #2,#0,#0
* >PSTR "$5A"
* .DA #2,#0,#0
* >PSTR "$5C"
* .DA #2,#0,#0
>PSTR "setattr"
.DA #2,#0,#SYS.SetAttr
* >PSTR "mount"
* .DA #2,#0,#0
* >PSTR "umount"
* .DA #2,#0,#0
* >PSTR "online"
* .DA #2,#0,#0
* >PSTR "getstkobj"
* .DA #2,#0,#0
* >PSTR "shift"
* .DA #2,#0,#0
* >PSTR "argv"
* .DA #2,#0,#0
* >PSTR "argvDup"
* .DA #2,#0,#0
* >PSTR "geterrmsg"
* .DA #2,#0,#0
>PSTR "atof"
.DA #2,#0,#SYS.AToF
>PSTR "atoi"
.DA #2,#0,#SYS.AToI
>PSTR "atol"
.DA #2,#0,#SYS.AToL
>PSTR "strtof"
.DA #2,#0,#SYS.StrToF
>PSTR "strtol"
.DA #2,#0,#SYS.StrToL
>PSTR "strtoul"
.DA #2,#0,#SYS.StrToUL
* >PSTR "realpath"
* .DA #2,#0,#0
* >PSTR "expand"
* .DA #2,#0,#0
>PSTR "strlen"
.DA #2,#0,#SYS.StrLen
>PSTR "strcpy"
.DA #2,#0,#SYS.StrCpy
>PSTR "strcat"
.DA #2,#0,#SYS.StrCat
>PSTR "strdup"
.DA #2,#0,#SYS.StrDup
>PSTR "strupr"
.DA #2,#0,#SYS.StrUpr
>PSTR "strlwr"
.DA #2,#0,#SYS.StrLwr
>PSTR "strcmp"
.DA #2,#0,#SYS.StrCmp
>PSTR "strcasecmp"
.DA #2,#0,#SYS.StrCaseCmp
* >PSTR "getdevbyname"
* .DA #2,#0,#0
* >PSTR "getdevstatus"
* .DA #2,#0,#0
* >PSTR "mkdev"
* .DA #2,#0,#0
* >PSTR "ioctl"
* .DA #2,#0,#0
* >PSTR "loadlib"
* .DA #2,#0,#0
* >PSTR "unloadlib"
* .DA #2,#0,#0
* >PSTR "loaddrv"
* .DA #2,#0,#0
* >PSTR "insdrv"
* .DA #2,#0,#0
>PSTR "execl"
.DA #2,#0,#SYS.ExecL
* >PSTR "execv"
* .DA #2,#0,#0
>PSTR "fork"
.DA #2,#0,#SYS.Fork
>PSTR "kill"
.DA #2,#0,#SYS.Kill
* >PSTR "loadfile"
* .DA #2,#0,#0
* >PSTR "loadtxtfile"
* .DA #2,#0,#0
* >PSTR "filesearch"
* .DA #2,#0,#0
* >PSTR "getmemstat"
* .DA #2,#0,#0
* >PSTR "strvnew"
* .DA #2,#0,#0
* >PSTR "strvset"
* .DA #2,#0,#0
* >PSTR "strvget"
* .DA #2,#0,#0
* >PSTR "strvfree"
* .DA #2,#0,#0
>PSTR "putenv"
.DA #2,#0,#SYS.PutEnv
>PSTR "setenv"
.DA #2,#0,#SYS.SetEnv
>PSTR "getenv"
.DA #2,#0,#SYS.GetEnv
>PSTR "unsetenv"
.DA #2,#0,#SYS.UnsetEnv
>PSTR "time"
.DA #2,#0,#SYS.Time
>PSTR "strftime"
.DA #2,#0,#SYS.StrFTime
* >PSTR "ptime2time"
* .DA #2,#0,#0
>PSTR "ctime2time"
.DA #2,#0,#SYS.CTime2Time
>PSTR "md5"
.DA #2,#0,#SYS.MD5
>PSTR "md5init"
.DA #2,#0,#SYS.MD5Init
>PSTR "md5update"
.DA #2,#0,#SYS.MD5Update
>PSTR "md5finalize"
.DA #2,#0,#SYS.MD5Finalize
>PSTR "getpwuid"
.DA #2,#0,#SYS.GetPWUID
>PSTR "getpwname"
.DA #2,#0,#SYS.GetPWName
>PSTR "putpw"
.DA #2,#0,#SYS.PutPW
>PSTR "getgrpgid"
.DA #2,#0,#SYS.GetGRGID
>PSTR "getgrpname"
.DA #2,#0,#SYS.GetGRName
>PSTR "putgr"
.DA #2,#0,#SYS.PutGR
* >PSTR "opensession"
* .DA #2,#0,#0
* >PSTR "closesession"
* .DA #2,#0,#0
* >PSTR "slistgetdata"
* .DA #2,#0,#0
* >PSTR "slistadddata"
* .DA #2,#0,#0
* >PSTR "slistsetdata"
* .DA #2,#0,#0
* >PSTR "slistgetbyid"
* .DA #2,#0,#0
* >PSTR "slistnewkey"
* .DA #2,#0,#0
* >PSTR "slistlookup"
* .DA #2,#0,#0
* >PSTR "slistfree"
* .DA #2,#0,#0
* >PSTR "slistnew"
* .DA #2,#0,#0
>PSTR "malloc"
.DA #2,#0,#SYS.GetMem
>PSTR "realloc"
.DA #2,#0,#SYS.Realloc
* >PSTR "getmemptr"
* .DA #2,#0,#0
>PSTR "free"
.DA #2,#0,#SYS.FreeMem
* >PSTR "newstkobj"
* .DA #2,#0,#0
* >PSTR "loadstkobj"
* .DA #2,#0,#0
* >PSTR "getstkobjptr"
* .DA #2,#0,#0
* >PSTR "freestkobj"
* .DA #2,#0,#0
*--------------------------------------
>PSTR "pwr"
.DA #2,#64,#FPU.PWR
>PSTR "log"
.DA #2,#64,#FPU.LOG
>PSTR "sqr"
.DA #2,#64,#FPU.SQR
>PSTR "exp"
.DA #2,#64,#FPU.EXP
>PSTR "cos"
.DA #2,#64,#FPU.COS
>PSTR "sin"
.DA #2,#64,#FPU.SIN
>PSTR "tan"
.DA #2,#64,#FPU.TAN
>PSTR "atan"
.DA #2,#64,#FPU.ATAN
.HS 00
*--------------------------------------
.DUMMY
.OR 0
DS.START
PathBuf .BS MLI.MAXPATH+1
hFilePtr .BS 1
hFiles .BS FILES.MAX
LineCntPtr .BS 1
.BS 1 for inc inc
LineCnts .BS FILES.MAX+2
hLineBuf .BS 1
LineBufPtr .BS 2
CC.CmdSave .BS 1
CC.hDefines .BS 1
CC.hSymbols .BS 1
CC.hTags .BS 1
CC.hCode .BS 1
CC.hConst .BS 1
CC.hData .BS 1
CC.DataSize .BS 2
CC.hStack .BS 1
CC.hfDecl .BS 1
CC.fDeclBuf .BS 2
CC.SaveDefine .BS 2
CC.VarDef .EQ *
CC.VarType .BS 1
CC.VarQual .BS 1
CC.VarSizeOf .BS 2
CC.VarDataPtr .BS 2
CC.VarDefPtr .BS 2
bDebug .BS 1
bTrace .BS 1
DS.END .ED
*--------------------------------------
MAN
SAVE usr/src/bin/cc.s
ASM