mirror of
https://github.com/A2osX/A2osX.git
synced 2024-09-28 18:55:10 +00:00
Kernel 0.94+
This commit is contained in:
parent
63486817ca
commit
ee7a7b07a4
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -95,16 +95,6 @@ CODE.FPRINTL ldx #0
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CODE.FPRINTCR ldx #0
|
||||
|
||||
.1 lda CCODE.FPRINTCR,x
|
||||
jsr CODE.EmitByte
|
||||
inx
|
||||
cpx #CCODE.FPRINTCR.LEN
|
||||
bne .1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CODE.FPUCALL lda #$A2 LDX #imm
|
||||
jsr CODE.EmitByte
|
||||
txa
|
||||
@ -116,6 +106,16 @@ CODE.FPUCALL lda #$A2 LDX #imm
|
||||
lda /A2osX.FPUCALL
|
||||
bra CODE.EmitByte
|
||||
*--------------------------------------
|
||||
CODE.FPRINTCRLF ldx #C.CR
|
||||
jsr CODE.PutChar
|
||||
ldx #C.LF
|
||||
*--------------------------------------
|
||||
CODE.PutChar lda #$A9 LDA #imm
|
||||
jsr CODE.EmitByte
|
||||
txa
|
||||
jsr CODE.EmitByte
|
||||
ldx #SYS.PutChar
|
||||
*--------------------------------------
|
||||
CODE.SYSCALL lda #$A2 LDX #imm
|
||||
jsr CODE.EmitByte
|
||||
txa
|
||||
|
@ -78,7 +78,7 @@ CORE.Compile jsr CORE.GetChar
|
||||
beq .80 Comment: skip line...
|
||||
|
||||
cmp #C.CR
|
||||
beq .81 Blank line...
|
||||
beq .88 EOL
|
||||
|
||||
jsr CORE.CheckCharNB
|
||||
bcs .1 CS=SPACE -> go check VAR or KW
|
||||
@ -94,6 +94,8 @@ CORE.Compile jsr CORE.GetChar
|
||||
.1 jsr CORE.GetNextCharNB skip SPACE(s) or ":"
|
||||
bcs .99
|
||||
|
||||
cmp #C.CR
|
||||
beq .88 EOL
|
||||
|
||||
jsr CORE.IsLetter
|
||||
bcs .90
|
||||
@ -124,15 +126,15 @@ CORE.Compile jsr CORE.GetChar
|
||||
.8 jsr CORE.GetCharNB
|
||||
bcs .99
|
||||
|
||||
jsr CORE.IsEndInst
|
||||
bcc .90
|
||||
|
||||
cmp #':'
|
||||
beq .1
|
||||
|
||||
clc
|
||||
cmp #C.CR
|
||||
bne .90
|
||||
|
||||
.81 jmp CORE.GetNextChar skip char
|
||||
.88 clc
|
||||
|
||||
jmp CORE.GetNextChar skip char
|
||||
|
||||
.80 jmp CORE.SkipLine
|
||||
|
||||
@ -161,11 +163,11 @@ CORE.Run lda #$60 RTS
|
||||
sta ZPPtr2
|
||||
|
||||
lda ZPPtr1+1
|
||||
sbc ZPCodeBufPtr
|
||||
sta ZPPtr1+2
|
||||
sbc ZPCodeBufPtr+1
|
||||
sta ZPPtr2+1
|
||||
|
||||
>PUSHW L.MSG.RUN
|
||||
>PUSHW ZPPtr1
|
||||
>PUSHW ZPPtr2
|
||||
>PUSHBI 2
|
||||
>SYSCALL PrintF
|
||||
* >DEBUG
|
||||
@ -356,7 +358,10 @@ CORE.IsAOPSChar ldx #0
|
||||
* clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CORE.IsEndExp cmp #','
|
||||
CORE.IsEndExp cmp #')'
|
||||
beq CORE.ToUpperCase.RTS
|
||||
|
||||
cmp #','
|
||||
beq CORE.ToUpperCase.RTS
|
||||
|
||||
cmp #';'
|
||||
|
@ -5,48 +5,120 @@ NEW
|
||||
* In: A = current CHAR
|
||||
* Out: CC, longint on stack
|
||||
*--------------------------------------
|
||||
EXP.Eval ldx #$FF
|
||||
stx EXP.AOPS1
|
||||
stx EXP.AOPS2
|
||||
EXP.Eval lda EXP.AOPS
|
||||
pha
|
||||
|
||||
lda #$FF
|
||||
>PUSHA Previous OP = none
|
||||
*--------------------------------------
|
||||
.10 jsr CORE.GetCharNB
|
||||
bcs .39
|
||||
|
||||
.11 cmp #'('
|
||||
bne .20
|
||||
|
||||
.10 jsr CORE.IsLetter
|
||||
bcc .1 FN or VAR
|
||||
jsr CORE.GetNextCharNB skip (
|
||||
bcs .90
|
||||
|
||||
jsr CORE.IsDigit10
|
||||
bcs .9
|
||||
|
||||
jsr EXP.Int32
|
||||
jsr EXP.Eval
|
||||
bcs .99
|
||||
|
||||
bra .5
|
||||
jsr CORE.GetCharNB
|
||||
bcs .90
|
||||
|
||||
cmp #')'
|
||||
bne .90
|
||||
|
||||
jsr CORE.GetNextCharNB skip )
|
||||
bra .41
|
||||
*--------------------------------------
|
||||
.1 >LDYA L.ACOS.FN
|
||||
.20 jsr CORE.IsLetter
|
||||
bcs .30 FN or VAR
|
||||
|
||||
>LDYA L.ACOS.FN
|
||||
jsr CORE.Lookup
|
||||
bcs .3
|
||||
bcs .21
|
||||
|
||||
jsr EXP.FNjmpX
|
||||
bcs .99
|
||||
|
||||
bra .40
|
||||
|
||||
|
||||
bra .5
|
||||
*--------------------------------------
|
||||
.3 jsr EXP.VARLookup
|
||||
.21 jsr EXP.VARLookup
|
||||
bcs .99
|
||||
|
||||
>LDYA EXP.ADDR
|
||||
jsr CODE.PUSHfYA
|
||||
|
||||
bra .40
|
||||
*--------------------------------------
|
||||
.5 jsr CORE.GetCharNB
|
||||
bcs .7
|
||||
.30 jsr CORE.IsDigit10
|
||||
.39 bcs .90
|
||||
|
||||
jsr CORE.IsEndExp
|
||||
bcs .7
|
||||
jsr EXP.Int32
|
||||
bcs .99
|
||||
*--------------------------------------
|
||||
.40 jsr CORE.GetCharNB
|
||||
.41 bcs .80
|
||||
|
||||
jsr CORE.IsAOPSChar + - * /
|
||||
bcc .6
|
||||
.50 jsr CORE.IsEndExp
|
||||
bcs .80
|
||||
|
||||
jsr EXP.GetOP
|
||||
bcs .90
|
||||
|
||||
stx EXP.AOPS
|
||||
|
||||
.61 lda (pStack) get op context
|
||||
bmi .62 no prev op, go get arg2
|
||||
|
||||
cmp EXP.AOPS we have arg1 A=op1 arg2 X=op2
|
||||
bcc .62
|
||||
|
||||
inc pStack prev op has precedence
|
||||
|
||||
tax
|
||||
jsr EXP.OPjmpX go compute (arg1 op1 arg2)
|
||||
|
||||
.62 lda EXP.AOPS we must compute arg2 op2 arg3 before
|
||||
>PUSHA
|
||||
|
||||
.63 jsr CORE.GetNextCharNB
|
||||
bcc .11
|
||||
|
||||
bcs .90
|
||||
*--------------------------------------
|
||||
.80 >PULLA
|
||||
tax
|
||||
bmi .88 nothing to do
|
||||
|
||||
jsr EXP.OPjmpX
|
||||
bra .80
|
||||
|
||||
.90 lda #E.ESYN
|
||||
|
||||
.99 tay Save Err code
|
||||
|
||||
>PULLA
|
||||
tax
|
||||
bpl .99
|
||||
|
||||
sec
|
||||
.HS 90 BCC
|
||||
.88 clc
|
||||
|
||||
pla
|
||||
sta EXP.AOPS
|
||||
|
||||
tya
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
EXP.FNjmpX jmp (J.ACOS.FN,x)
|
||||
EXP.OPjmpX jmp (J.ACOS.AOPS,x)
|
||||
*--------------------------------------
|
||||
EXP.GetOP jsr CORE.IsAOPSChar + - * /
|
||||
bcc .9
|
||||
|
||||
>LDYA L.ACOS.AOPS MOD
|
||||
jsr CORE.Lookup
|
||||
@ -57,32 +129,7 @@ EXP.Eval ldx #$FF
|
||||
adc #ACOS.AOPSChars.Cnt*2
|
||||
tax
|
||||
|
||||
lda EXP.AOPS1
|
||||
bmi .6
|
||||
|
||||
cpx EXP.AOPS1
|
||||
|
||||
|
||||
.6 stx EXP.AOPS1
|
||||
|
||||
jsr CORE.GetNextCharNB
|
||||
bcs .9
|
||||
|
||||
jmp .10
|
||||
|
||||
.7 ldx EXP.AOPS1
|
||||
bmi .8
|
||||
|
||||
jsr EXP.AOPSjmpX
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 lda #E.CSYN
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
EXP.FNjmpX jmp (J.ACOS.FN,x)
|
||||
EXP.AOPSjmpX jmp (J.ACOS.AOPS,x)
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
EXP.Int32 >PUSHW ZPInputBufPtr
|
||||
>PUSHWI ZPInputBufPtr
|
||||
|
@ -18,30 +18,42 @@ KW.FLAG
|
||||
KW.FOR
|
||||
KW.FREE
|
||||
KW.GET
|
||||
KW.GOSUB
|
||||
clc
|
||||
lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
KW.GOTO jsr CORE.GetNextCharNB
|
||||
KW.GOSUB sec
|
||||
.HS 90 CLC
|
||||
*--------------------------------------
|
||||
KW.GOTO clc
|
||||
php
|
||||
|
||||
jsr CORE.GetNextCharNB
|
||||
bcs .90
|
||||
|
||||
>LDA.G hLabels
|
||||
jsr CORE.GetAddr
|
||||
bcs .99
|
||||
|
||||
plp
|
||||
|
||||
lda #$4C JMP abs
|
||||
jsr CODE.EmitByte
|
||||
bcc .1
|
||||
|
||||
lda #$20 JSR abs
|
||||
|
||||
.1 jsr CODE.EmitByte
|
||||
lda ZPADDR
|
||||
jsr CODE.EmitByte
|
||||
lda ZPADDR+1
|
||||
jsr CODE.EmitByte
|
||||
|
||||
clc
|
||||
rts
|
||||
jmp CODE.EmitByte
|
||||
|
||||
.90 lda #E.CSYN
|
||||
.99 plp
|
||||
sec
|
||||
.99 rts
|
||||
rts
|
||||
*--------------------------------------
|
||||
KW.HOME
|
||||
KW.IF
|
||||
@ -63,7 +75,8 @@ KW.OPEN
|
||||
KW.POKE
|
||||
KW.POP
|
||||
KW.POSITION
|
||||
clc
|
||||
lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
KW.PRINT stz hOut reset to hStdOut
|
||||
@ -73,15 +86,15 @@ KW.PRINT stz hOut reset to hStdOut
|
||||
* lda (pPS),y
|
||||
* sta hOut Default to screen
|
||||
|
||||
sec
|
||||
ror bFlag put ending CR
|
||||
|
||||
.10 jsr CORE.GetNextCharNB
|
||||
bcs .8
|
||||
|
||||
jsr CORE.IsEndInst
|
||||
.11 jsr CORE.IsEndInst
|
||||
bcs .8
|
||||
|
||||
stz bFlag put ending CR
|
||||
|
||||
cmp #'"'
|
||||
bne .5
|
||||
|
||||
@ -131,23 +144,23 @@ KW.PRINT stz hOut reset to hStdOut
|
||||
cmp #','
|
||||
bne .71
|
||||
|
||||
* TODO : CR ? or not CR ?
|
||||
tax
|
||||
jsr CODE.PutChar
|
||||
|
||||
bra .10 go skip
|
||||
|
||||
.71 cmp #';'
|
||||
bne .90
|
||||
|
||||
* TODO : PRINT ; ? or not ?
|
||||
dec bFlag suppress ending CR
|
||||
|
||||
jsr CORE.GetNextCharNB skip ;
|
||||
stz bFlag
|
||||
|
||||
bcc .11
|
||||
|
||||
.8 bit bFlag
|
||||
bpl .80
|
||||
bmi .80
|
||||
|
||||
jsr CODE.FPRINTCR
|
||||
jsr CODE.FPRINTCRLF
|
||||
|
||||
.80 clc
|
||||
rts
|
||||
@ -162,7 +175,15 @@ KW.RAM
|
||||
KW.RAM2
|
||||
KW.READ
|
||||
KW.READY
|
||||
KW.RETURN
|
||||
lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
KW.RETURN lda #$60 RTS
|
||||
|
||||
clc
|
||||
jmp CODE.EmitByte
|
||||
*--------------------------------------
|
||||
KW.REWIND
|
||||
KW.RIPCO
|
||||
KW.SET
|
||||
@ -174,7 +195,8 @@ KW.UPDATE
|
||||
KW.USE
|
||||
KW.WHENd
|
||||
KW.WRITE
|
||||
clc
|
||||
lda #E.CSYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
@ -5,9 +5,10 @@ NEW
|
||||
.OR $2000
|
||||
.TF bin/acos
|
||||
*--------------------------------------
|
||||
CODESEG .EQ 1024
|
||||
CODESEG .EQ 4096
|
||||
CONSTSEG .EQ 1024
|
||||
DATASEG .EQ 256
|
||||
EXP.DEPTH.MAX .EQ 16
|
||||
*--------------------------------------
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
@ -38,10 +39,8 @@ ArgIndex .BS 1
|
||||
bFlag .BS 1
|
||||
|
||||
EXP.ADDR .BS 2
|
||||
EXP.AOPS1 .BS 1
|
||||
EXP.AOPS2 .BS 1
|
||||
EXP.AOPS .BS 1
|
||||
EXP.DEPTH .BS 1
|
||||
.BS 1
|
||||
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
@ -55,7 +54,7 @@ CS.START cld
|
||||
.DA #0
|
||||
.DA CS.END-CS.START Code Size (without Constants)
|
||||
.DA DS.END-DS.START Data SegmentSize
|
||||
.DA #256 Stack Size
|
||||
.DA #128 Stack Size
|
||||
.DA #ZS.END-ZS.START Zero Page Size
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
@ -448,17 +447,11 @@ CCODE.FPRINTL >PUSHW L.MSG.INT32
|
||||
>PUSHA
|
||||
dex
|
||||
bne .1
|
||||
|
||||
>PUSHBI 4
|
||||
>SYSCALL PrintF
|
||||
>POP 4 Discard long on stack
|
||||
CCODE.FPRINTL.LEN .EQ *-CCODE.FPRINTL
|
||||
*--------------------------------------
|
||||
CCODE.FPRINTCR >PUSHW L.MSG.ECHOCRLF
|
||||
>PUSHBI 0
|
||||
>SYSCALL PrintF
|
||||
CCODE.FPRINTCR.LEN .EQ *-CCODE.FPRINTCR
|
||||
*--------------------------------------
|
||||
|
||||
*--------------------------------------
|
||||
.INB usr/src/bin/acos.s.code
|
||||
.INB usr/src/bin/acos.s.core
|
||||
@ -478,7 +471,7 @@ MSG.ECHOCRLF .AZ "\r\n"
|
||||
MSG.COMPILING .AZ "Compiling : %s...\r\n"
|
||||
MSG.DEBUG .AZ "pStack=%H CodePtr=%H\r\n"
|
||||
MSG.ERR .AZ "-^\r\nLine #%D:"
|
||||
MSG.RUN .AZ "Success, Code size = %d Bytes\r\nExecuting...\r\n"
|
||||
MSG.RUN .AZ "Success, Code size = %D Bytes\r\nExecuting...\r\n"
|
||||
MSG.STR .AZ "%s"
|
||||
MSG.INT32 .AZ "%L"
|
||||
*--------------------------------------
|
||||
|
@ -1,38 +0,0 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
PathBuf .BS 65
|
||||
|
||||
hFileBuf .BS 1
|
||||
|
||||
CSH.BufPtrSave .BS 2
|
||||
|
||||
CSH.CmdSave .BS 1
|
||||
CSH.LookupOpt .BS 1
|
||||
|
||||
CSH.hDefines .BS 1
|
||||
CSH.hSymbols .BS 1
|
||||
CSH.hTags .BS 1
|
||||
|
||||
CSH.hCode .BS 1
|
||||
CSH.CodePtr .BS 2
|
||||
|
||||
CSH.hConst .BS 1
|
||||
CSH.ConstPtr .BS 2
|
||||
|
||||
CSH.hData .BS 1
|
||||
CSH.DataPtr .BS 2
|
||||
|
||||
CSH.hStack .BS 1
|
||||
CSH.StackPtr .BS 1
|
||||
|
||||
CSH.SaveInclude .BS 2
|
||||
CSH.SaveDefine .BS 2
|
||||
|
||||
CSH.VarDef .BS 6
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/csh.d
|
||||
LOAD usr/src/bin/csh.s
|
||||
ASM
|
@ -1,23 +0,0 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CSH.E.SYNTAX .EQ $C0
|
||||
CSH.E.STACKERR .EQ $C2
|
||||
CSH.E.SOVERFLW .EQ $C3
|
||||
*E.NOWHILE .EQ $C4
|
||||
*E.NOFOR .EQ $C5
|
||||
*E.NOIF .EQ $C6
|
||||
CSH.E.UNEXPEOF .EQ $C8
|
||||
CSH.E.UNDEF .EQ $C9
|
||||
CSH.E.INVDIR .EQ $CA
|
||||
*
|
||||
CSH.E.NOVERFLW .EQ $D0
|
||||
CSH.E.TMISMATCH .EQ $D1
|
||||
CSH.E.OOM .EQ $D2
|
||||
CSH.E.DUP .EQ $D3
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/csh.e
|
||||
LOAD usr/src/bin/csh.s
|
||||
ASM
|
206
BIN/CSH.I.txt
206
BIN/CSH.I.txt
@ -1,206 +0,0 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
CSH.T.VOID .EQ 0
|
||||
CSH.T.SCHAR .EQ 1
|
||||
CSH.T.SINT .EQ 2
|
||||
CSH.T.SLONG .EQ 3
|
||||
CSH.T.FLOAT .EQ 4
|
||||
CSH.T.UCHAR .EQ 5
|
||||
CSH.T.UINT .EQ 6
|
||||
CSH.T.ULONG .EQ 7
|
||||
CSH.T.VARIADIC .EQ $FF
|
||||
*--------------------------------------
|
||||
CSH.Q.POINTER .EQ %01000000
|
||||
CSH.Q.PPOINTER .EQ %10000000
|
||||
CSH.Q.PPPOINTER .EQ %11000000
|
||||
CSH.Q.PCONST .EQ %00100000
|
||||
CSH.Q.CONST .EQ %00010000
|
||||
CSH.Q.FUNC .EQ %00001000
|
||||
*--------------------------------------
|
||||
CSH.OPChars .AS "!~+-*/%=&|^<>"
|
||||
CSH.OPChars.Cnt .EQ *-CSH.OPChars
|
||||
*--------------------------------------
|
||||
* Pre Operators: + - ! ~ ++ --
|
||||
*--------------------------------------
|
||||
CSH.PREOPS >PSTR "+"
|
||||
>PSTR "-"
|
||||
>PSTR "!"
|
||||
>PSTR "~"
|
||||
*--------------------------------------
|
||||
* Post Operators: ++ --
|
||||
*--------------------------------------
|
||||
CSH.POSTOPS >PSTR "++"
|
||||
>PSTR "--"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* Assignment Operators: = += -= *= /= %= <<= >>= &= ^= |=
|
||||
*--------------------------------------
|
||||
CSH.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: && ||
|
||||
*--------------------------------------
|
||||
CSH.BOPS >PSTR "+"
|
||||
>PSTR "-"
|
||||
>PSTR "*"
|
||||
>PSTR "/"
|
||||
>PSTR "%"
|
||||
>PSTR "<<"
|
||||
>PSTR ">>"
|
||||
>PSTR "<"
|
||||
>PSTR ">"
|
||||
>PSTR "<="
|
||||
>PSTR ">="
|
||||
>PSTR "=="
|
||||
>PSTR "!="
|
||||
>PSTR "&"
|
||||
>PSTR "|"
|
||||
>PSTR "^"
|
||||
>PSTR "&&"
|
||||
>PSTR "||"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* Reserved Directives:
|
||||
*--------------------------------------
|
||||
CSH.DIRS >PSTR "define"
|
||||
>PSTR "include"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* Reserved Keywords:
|
||||
*--------------------------------------
|
||||
CSH.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"
|
||||
CSH.MTYPES >PSTR "const" ALL
|
||||
>PSTR "signed" char,int,long
|
||||
>PSTR "unsigned" char,int,long
|
||||
>PSTR "short" int
|
||||
CSH.TYPES >PSTR "void"
|
||||
>PSTR "char"
|
||||
>PSTR "int"
|
||||
>PSTR "long"
|
||||
>PSTR "float"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
CSH.FTYPES >PSTR "fastcall"
|
||||
* .HS 00
|
||||
*--------------------------------------
|
||||
CSH.TYPESIZE .HS 0001020405010204
|
||||
*--------------------------------------
|
||||
CSH.FN
|
||||
* float cos ( float x );
|
||||
>PSTR "log"
|
||||
.DA #CSH.T.FLOAT returned value
|
||||
.DA #CSH.T.FLOAT
|
||||
.DA #0
|
||||
>PSTR "sqr"
|
||||
.DA #CSH.T.FLOAT returned value
|
||||
.DA #CSH.T.FLOAT
|
||||
.DA #0
|
||||
>PSTR "exp"
|
||||
.DA #CSH.T.FLOAT returned value
|
||||
.DA #CSH.T.FLOAT
|
||||
.DA #0
|
||||
>PSTR "cos"
|
||||
.DA #CSH.T.FLOAT returned value
|
||||
.DA #CSH.T.FLOAT
|
||||
.DA #0
|
||||
>PSTR "sin"
|
||||
.DA #CSH.T.FLOAT returned value
|
||||
.DA #CSH.T.FLOAT
|
||||
.DA #0
|
||||
>PSTR "tan"
|
||||
.DA #CSH.T.FLOAT returned value
|
||||
.DA #CSH.T.FLOAT
|
||||
.DA #0
|
||||
>PSTR "atan"
|
||||
.DA #CSH.T.FLOAT returned value
|
||||
.DA #CSH.T.FLOAT
|
||||
.DA #0
|
||||
* char getchar ( void );
|
||||
>PSTR "getchar"
|
||||
.DA #CSH.T.UCHAR returned value
|
||||
.DA #0
|
||||
* int puts ( const char * str );
|
||||
>PSTR "puts"
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* int execl(const char* cmdline, short int flags);
|
||||
>PSTR "execl"
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.T.UCHAR
|
||||
.DA #0
|
||||
* int printf ( const char * format, ... );
|
||||
>PSTR "printf"
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.T.VARIADIC
|
||||
.DA #0
|
||||
* int putenv(const char *string);
|
||||
>PSTR "putenv"
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* int setenv(const char *name, const char *value);
|
||||
>PSTR "setenv"
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* char *getenv(const char *name, char *value);
|
||||
>PSTR "getenv"
|
||||
.DA #CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* int unsetenv(const char *name);
|
||||
>PSTR "unsetenv"
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* void md5 (const char* str, char* digest);
|
||||
>PSTR "md5"
|
||||
.DA #CSH.T.VOID
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* void * malloc ( int size );
|
||||
>PSTR "malloc"
|
||||
.DA #CSH.Q.POINTER+CSH.T.VOID returned value
|
||||
.DA #CSH.T.SINT
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/csh.i
|
||||
LOAD usr/src/bin/csh.s
|
||||
ASM
|
109
BIN/CSH.R.txt
109
BIN/CSH.R.txt
@ -1,109 +0,0 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
L.CSH.BOPS .DA CSH.BOPS
|
||||
J.CSH.BOPS .DA CSH.BOPS.ADD
|
||||
.DA CSH.BOPS.SUB
|
||||
.DA CSH.BOPS.MUL
|
||||
.DA CSH.BOPS.DIV
|
||||
.DA CSH.BOPS.MOD
|
||||
.DA CSH.BOPS.SHL
|
||||
.DA CSH.BOPS.SHR
|
||||
.DA CSH.BOPS.L
|
||||
.DA CSH.BOPS.G
|
||||
.DA CSH.BOPS.LE
|
||||
.DA CSH.BOPS.GE
|
||||
.DA CSH.BOPS.EQ
|
||||
.DA CSH.BOPS.NE
|
||||
.DA CSH.BOPS.AND
|
||||
.DA CSH.BOPS.OR
|
||||
.DA CSH.BOPS.EOR
|
||||
.DA CSH.BOPS.LAND
|
||||
.DA CSH.BOPS.LOR
|
||||
J.CSH.BOPS.ADDt .DA CSH.TMISMATCH
|
||||
.DA CSH.BOPS.ADDi8
|
||||
.DA CSH.BOPS.ADDi16
|
||||
.DA CSH.BOPS.ADDi32
|
||||
.DA CSH.BOPS.ADDu8
|
||||
.DA CSH.BOPS.ADDu16
|
||||
.DA CSH.BOPS.ADDu32
|
||||
.DA CSH.BOPS.ADDf
|
||||
J.CSH.BOPS.SUBt .DA CSH.TMISMATCH
|
||||
.DA CSH.BOPS.SUBi8
|
||||
.DA CSH.BOPS.SUBi16
|
||||
.DA CSH.BOPS.SUBi32
|
||||
.DA CSH.BOPS.SUBu8
|
||||
.DA CSH.BOPS.SUBu16
|
||||
.DA CSH.BOPS.SUBu32
|
||||
.DA CSH.BOPS.SUBf
|
||||
J.CSH.BOPS.SHLt .DA CSH.TMISMATCH
|
||||
.DA CSH.BOPS.SHL8
|
||||
.DA CSH.BOPS.SHL16
|
||||
.DA CSH.BOPS.SHL32
|
||||
.DA CSH.BOPS.SHL8
|
||||
.DA CSH.BOPS.SHL16
|
||||
.DA CSH.BOPS.SHL32
|
||||
.DA CSH.TMISMATCH
|
||||
L.CSH.FN .DA CSH.FN
|
||||
L.CSH.DIRS .DA CSH.DIRS
|
||||
L.CSH.KW .DA CSH.KW
|
||||
L.CSH.MTYPES .DA CSH.MTYPES
|
||||
L.CSH.TYPES .DA CSH.TYPES
|
||||
L.CSH.FTYPES .DA CSH.FTYPES
|
||||
J.CSH.DIRS .DA CSH.DIR.DEFINE
|
||||
.DA CSH.DIR.INCLUDE
|
||||
J.CSH.KW .DA CSH.IF
|
||||
.DA CSH.WHILE
|
||||
.DA CSH.ELSE
|
||||
.DA CSH.DO
|
||||
.DA CSH.FOR
|
||||
.DA CSH.SWITCH
|
||||
.DA CSH.CASE
|
||||
.DA CSH.BREAK
|
||||
.DA CSH.CONTINUE
|
||||
.DA CSH.SIZEOF
|
||||
*--------------------------------------
|
||||
.DA CSH.TYPEDEF
|
||||
.DA CSH.STRUCT
|
||||
*--------------------------------------
|
||||
J.CSH.MTYPES .DA CSH.CONST
|
||||
.DA CSH.SIGNED
|
||||
.DA CSH.UNSIGNED
|
||||
.DA CSH.SHORT
|
||||
J.CSH.TYPES .DA CSH.VOID
|
||||
.DA CSH.CHAR
|
||||
.DA CSH.INT
|
||||
.DA CSH.LONG
|
||||
.DA CSH.FLOAT
|
||||
J.CSH.UTYPES .DA CSH.UCHAR
|
||||
.DA CSH.UINT
|
||||
.DA CSH.ULONG
|
||||
J.CSH.STYPES .DA CSH.SCHAR
|
||||
.DA CSH.SINT
|
||||
.DA CSH.SLONG
|
||||
J.CSH.KW.END .DA CSH.IF.END
|
||||
.DA CSH.WHILE.END
|
||||
*--------------------------------------
|
||||
J.CSH.EXEC .DA EXEC.log
|
||||
.DA EXEC.sqr
|
||||
.DA EXEC.exp
|
||||
.DA EXEC.cos
|
||||
.DA EXEC.sin
|
||||
.DA EXEC.tan
|
||||
.DA EXEC.atan
|
||||
.DA EXEC.getchar
|
||||
.DA EXEC.puts
|
||||
.DA EXEC.execl
|
||||
.DA EXEC.printf
|
||||
.DA EXEC.putenv
|
||||
.DA EXEC.setenv
|
||||
.DA EXEC.getenv
|
||||
.DA EXEC.unsetenv
|
||||
.DA EXEC.MD5
|
||||
.DA EXEC.malloc
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/csh.r
|
||||
LOAD usr/src/bin/csh.s
|
||||
ASM
|
350
BIN/CSH.S.txt
350
BIN/CSH.S.txt
@ -10,7 +10,20 @@ NEW
|
||||
.INB inc/mli.i
|
||||
.INB inc/mli.e.i
|
||||
*--------------------------------------
|
||||
.INB usr/src/bin/csh.e
|
||||
CSH.E.SYNTAX .EQ $C0
|
||||
CSH.E.STACKERR .EQ $C2
|
||||
CSH.E.SOVERFLW .EQ $C3
|
||||
*E.NOWHILE .EQ $C4
|
||||
*E.NOFOR .EQ $C5
|
||||
*E.NOIF .EQ $C6
|
||||
CSH.E.UNEXPEOF .EQ $C8
|
||||
CSH.E.UNDEF .EQ $C9
|
||||
CSH.E.INVDIR .EQ $CA
|
||||
*
|
||||
CSH.E.NOVERFLW .EQ $D0
|
||||
CSH.E.TMISMATCH .EQ $D1
|
||||
CSH.E.OOM .EQ $D2
|
||||
CSH.E.DUP .EQ $D3
|
||||
*--------------------------------------
|
||||
* Zero Page Segment, up to 32 bytes
|
||||
*--------------------------------------
|
||||
@ -72,7 +85,106 @@ L.MSG.ECHOCRLF .DA MSG.ECHOCRLF
|
||||
L.MSG.DEBUG .DA MSG.DEBUG
|
||||
L.MSG.ERR .DA MSG.ERR
|
||||
L.ENV.INCLUDE .DA ENV.INCLUDE
|
||||
.INB usr/src/bin/csh.r
|
||||
L.CSH.BOPS .DA CSH.BOPS
|
||||
J.CSH.BOPS .DA CSH.BOPS.ADD
|
||||
.DA CSH.BOPS.SUB
|
||||
.DA CSH.BOPS.MUL
|
||||
.DA CSH.BOPS.DIV
|
||||
.DA CSH.BOPS.MOD
|
||||
.DA CSH.BOPS.SHL
|
||||
.DA CSH.BOPS.SHR
|
||||
.DA CSH.BOPS.L
|
||||
.DA CSH.BOPS.G
|
||||
.DA CSH.BOPS.LE
|
||||
.DA CSH.BOPS.GE
|
||||
.DA CSH.BOPS.EQ
|
||||
.DA CSH.BOPS.NE
|
||||
.DA CSH.BOPS.AND
|
||||
.DA CSH.BOPS.OR
|
||||
.DA CSH.BOPS.EOR
|
||||
.DA CSH.BOPS.LAND
|
||||
.DA CSH.BOPS.LOR
|
||||
J.CSH.BOPS.ADDt .DA CSH.TMISMATCH
|
||||
.DA CSH.BOPS.ADDi8
|
||||
.DA CSH.BOPS.ADDi16
|
||||
.DA CSH.BOPS.ADDi32
|
||||
.DA CSH.BOPS.ADDu8
|
||||
.DA CSH.BOPS.ADDu16
|
||||
.DA CSH.BOPS.ADDu32
|
||||
.DA CSH.BOPS.ADDf
|
||||
J.CSH.BOPS.SUBt .DA CSH.TMISMATCH
|
||||
.DA CSH.BOPS.SUBi8
|
||||
.DA CSH.BOPS.SUBi16
|
||||
.DA CSH.BOPS.SUBi32
|
||||
.DA CSH.BOPS.SUBu8
|
||||
.DA CSH.BOPS.SUBu16
|
||||
.DA CSH.BOPS.SUBu32
|
||||
.DA CSH.BOPS.SUBf
|
||||
J.CSH.BOPS.SHLt .DA CSH.TMISMATCH
|
||||
.DA CSH.BOPS.SHL8
|
||||
.DA CSH.BOPS.SHL16
|
||||
.DA CSH.BOPS.SHL32
|
||||
.DA CSH.BOPS.SHL8
|
||||
.DA CSH.BOPS.SHL16
|
||||
.DA CSH.BOPS.SHL32
|
||||
.DA CSH.TMISMATCH
|
||||
L.CSH.FN .DA CSH.FN
|
||||
L.CSH.DIRS .DA CSH.DIRS
|
||||
L.CSH.KW .DA CSH.KW
|
||||
L.CSH.MTYPES .DA CSH.MTYPES
|
||||
L.CSH.TYPES .DA CSH.TYPES
|
||||
L.CSH.FTYPES .DA CSH.FTYPES
|
||||
J.CSH.DIRS .DA CSH.DIR.DEFINE
|
||||
.DA CSH.DIR.INCLUDE
|
||||
J.CSH.KW .DA CSH.IF
|
||||
.DA CSH.WHILE
|
||||
.DA CSH.ELSE
|
||||
.DA CSH.DO
|
||||
.DA CSH.FOR
|
||||
.DA CSH.SWITCH
|
||||
.DA CSH.CASE
|
||||
.DA CSH.BREAK
|
||||
.DA CSH.CONTINUE
|
||||
.DA CSH.SIZEOF
|
||||
*--------------------------------------
|
||||
.DA CSH.TYPEDEF
|
||||
.DA CSH.STRUCT
|
||||
*--------------------------------------
|
||||
J.CSH.MTYPES .DA CSH.CONST
|
||||
.DA CSH.SIGNED
|
||||
.DA CSH.UNSIGNED
|
||||
.DA CSH.SHORT
|
||||
J.CSH.TYPES .DA CSH.VOID
|
||||
.DA CSH.CHAR
|
||||
.DA CSH.INT
|
||||
.DA CSH.LONG
|
||||
.DA CSH.FLOAT
|
||||
J.CSH.UTYPES .DA CSH.UCHAR
|
||||
.DA CSH.UINT
|
||||
.DA CSH.ULONG
|
||||
J.CSH.STYPES .DA CSH.SCHAR
|
||||
.DA CSH.SINT
|
||||
.DA CSH.SLONG
|
||||
J.CSH.KW.END .DA CSH.IF.END
|
||||
.DA CSH.WHILE.END
|
||||
*--------------------------------------
|
||||
J.CSH.EXEC .DA EXEC.log
|
||||
.DA EXEC.sqr
|
||||
.DA EXEC.exp
|
||||
.DA EXEC.cos
|
||||
.DA EXEC.sin
|
||||
.DA EXEC.tan
|
||||
.DA EXEC.atan
|
||||
.DA EXEC.getchar
|
||||
.DA EXEC.puts
|
||||
.DA EXEC.execl
|
||||
.DA EXEC.printf
|
||||
.DA EXEC.putenv
|
||||
.DA EXEC.setenv
|
||||
.DA EXEC.getenv
|
||||
.DA EXEC.unsetenv
|
||||
.DA EXEC.MD5
|
||||
.DA EXEC.malloc
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
* Called once at process creation
|
||||
@ -337,15 +449,241 @@ ENV.INCLUDE .AZ "INCLUDE"
|
||||
OptionList .AS "DdTt"
|
||||
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
|
||||
*--------------------------------------
|
||||
.INB usr/src/bin/csh.i
|
||||
*--------------------------------------
|
||||
CSH.T.VOID .EQ 0
|
||||
CSH.T.SCHAR .EQ 1
|
||||
CSH.T.SINT .EQ 2
|
||||
CSH.T.SLONG .EQ 3
|
||||
CSH.T.FLOAT .EQ 4
|
||||
CSH.T.UCHAR .EQ 5
|
||||
CSH.T.UINT .EQ 6
|
||||
CSH.T.ULONG .EQ 7
|
||||
CSH.T.VARIADIC .EQ $FF
|
||||
*--------------------------------------
|
||||
CSH.Q.POINTER .EQ %01000000
|
||||
CSH.Q.PPOINTER .EQ %10000000
|
||||
CSH.Q.PPPOINTER .EQ %11000000
|
||||
CSH.Q.PCONST .EQ %00100000
|
||||
CSH.Q.CONST .EQ %00010000
|
||||
CSH.Q.FUNC .EQ %00001000
|
||||
*--------------------------------------
|
||||
CSH.OPChars .AS "!~+-*/%=&|^<>"
|
||||
CSH.OPChars.Cnt .EQ *-CSH.OPChars
|
||||
*--------------------------------------
|
||||
* Pre Operators: + - ! ~ ++ --
|
||||
*--------------------------------------
|
||||
CSH.PREOPS >PSTR "+"
|
||||
>PSTR "-"
|
||||
>PSTR "!"
|
||||
>PSTR "~"
|
||||
*--------------------------------------
|
||||
* Post Operators: ++ --
|
||||
*--------------------------------------
|
||||
CSH.POSTOPS >PSTR "++"
|
||||
>PSTR "--"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* Assignment Operators: = += -= *= /= %= <<= >>= &= ^= |=
|
||||
*--------------------------------------
|
||||
CSH.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: && ||
|
||||
*--------------------------------------
|
||||
CSH.BOPS >PSTR "+"
|
||||
>PSTR "-"
|
||||
>PSTR "*"
|
||||
>PSTR "/"
|
||||
>PSTR "%"
|
||||
>PSTR "<<"
|
||||
>PSTR ">>"
|
||||
>PSTR "<"
|
||||
>PSTR ">"
|
||||
>PSTR "<="
|
||||
>PSTR ">="
|
||||
>PSTR "=="
|
||||
>PSTR "!="
|
||||
>PSTR "&"
|
||||
>PSTR "|"
|
||||
>PSTR "^"
|
||||
>PSTR "&&"
|
||||
>PSTR "||"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* Reserved Directives:
|
||||
*--------------------------------------
|
||||
CSH.DIRS >PSTR "define"
|
||||
>PSTR "include"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
* Reserved Keywords:
|
||||
*--------------------------------------
|
||||
CSH.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"
|
||||
CSH.MTYPES >PSTR "const" ALL
|
||||
>PSTR "signed" char,int,long
|
||||
>PSTR "unsigned" char,int,long
|
||||
>PSTR "short" int
|
||||
CSH.TYPES >PSTR "void"
|
||||
>PSTR "char"
|
||||
>PSTR "int"
|
||||
>PSTR "long"
|
||||
>PSTR "float"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
CSH.FTYPES >PSTR "fastcall"
|
||||
* .HS 00
|
||||
*--------------------------------------
|
||||
CSH.TYPESIZE .HS 0001020405010204
|
||||
*--------------------------------------
|
||||
CSH.FN
|
||||
* float cos ( float x );
|
||||
>PSTR "log"
|
||||
.DA #CSH.T.FLOAT returned value
|
||||
.DA #CSH.T.FLOAT
|
||||
.DA #0
|
||||
>PSTR "sqr"
|
||||
.DA #CSH.T.FLOAT returned value
|
||||
.DA #CSH.T.FLOAT
|
||||
.DA #0
|
||||
>PSTR "exp"
|
||||
.DA #CSH.T.FLOAT returned value
|
||||
.DA #CSH.T.FLOAT
|
||||
.DA #0
|
||||
>PSTR "cos"
|
||||
.DA #CSH.T.FLOAT returned value
|
||||
.DA #CSH.T.FLOAT
|
||||
.DA #0
|
||||
>PSTR "sin"
|
||||
.DA #CSH.T.FLOAT returned value
|
||||
.DA #CSH.T.FLOAT
|
||||
.DA #0
|
||||
>PSTR "tan"
|
||||
.DA #CSH.T.FLOAT returned value
|
||||
.DA #CSH.T.FLOAT
|
||||
.DA #0
|
||||
>PSTR "atan"
|
||||
.DA #CSH.T.FLOAT returned value
|
||||
.DA #CSH.T.FLOAT
|
||||
.DA #0
|
||||
* char getchar ( void );
|
||||
>PSTR "getchar"
|
||||
.DA #CSH.T.UCHAR returned value
|
||||
.DA #0
|
||||
* int puts ( const char * str );
|
||||
>PSTR "puts"
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* int execl(const char* cmdline, short int flags);
|
||||
>PSTR "execl"
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.T.UCHAR
|
||||
.DA #0
|
||||
* int printf ( const char * format, ... );
|
||||
>PSTR "printf"
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.T.VARIADIC
|
||||
.DA #0
|
||||
* int putenv(const char *string);
|
||||
>PSTR "putenv"
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* int setenv(const char *name, const char *value);
|
||||
>PSTR "setenv"
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* char *getenv(const char *name, char *value);
|
||||
>PSTR "getenv"
|
||||
.DA #CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* int unsetenv(const char *name);
|
||||
>PSTR "unsetenv"
|
||||
.DA #CSH.T.SINT returned value
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* void md5 (const char* str, char* digest);
|
||||
>PSTR "md5"
|
||||
.DA #CSH.T.VOID
|
||||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #CSH.Q.POINTER+CSH.T.UCHAR
|
||||
.DA #0
|
||||
* void * malloc ( int size );
|
||||
>PSTR "malloc"
|
||||
.DA #CSH.Q.POINTER+CSH.T.VOID returned value
|
||||
.DA #CSH.T.SINT
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START .INB usr/src/bin/csh.d
|
||||
DS.START
|
||||
PathBuf .BS 65
|
||||
|
||||
hFileBuf .BS 1
|
||||
|
||||
CSH.BufPtrSave .BS 2
|
||||
|
||||
CSH.CmdSave .BS 1
|
||||
CSH.LookupOpt .BS 1
|
||||
|
||||
CSH.hDefines .BS 1
|
||||
CSH.hSymbols .BS 1
|
||||
CSH.hTags .BS 1
|
||||
|
||||
CSH.hCode .BS 1
|
||||
CSH.CodePtr .BS 2
|
||||
|
||||
CSH.hConst .BS 1
|
||||
CSH.ConstPtr .BS 2
|
||||
|
||||
CSH.hData .BS 1
|
||||
CSH.DataPtr .BS 2
|
||||
|
||||
CSH.hStack .BS 1
|
||||
CSH.StackPtr .BS 1
|
||||
|
||||
CSH.SaveInclude .BS 2
|
||||
CSH.SaveDefine .BS 2
|
||||
|
||||
CSH.VarDef .BS 6
|
||||
|
||||
bDebug .BS 1
|
||||
bTrace .BS 1
|
||||
DS.END
|
||||
.ED
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/bin/csh.s
|
||||
|
@ -83,8 +83,8 @@ CS.RUN ldy #S.PS.ARGC
|
||||
>SYSCALL SScanF
|
||||
bcs .9
|
||||
|
||||
>PUSHB.G PID
|
||||
>PUSHB.G Signal
|
||||
>LDA.G PID
|
||||
>SYSCALL Kill
|
||||
bcs .99
|
||||
lda #0
|
||||
|
@ -121,8 +121,8 @@ CS.RUN lda #DEFAULT.TIMEOUT
|
||||
jsr CS.RUN.DEV
|
||||
jsr CS.RUN.SYS
|
||||
|
||||
>PUSHBI 1
|
||||
* lda #1 INITD
|
||||
>PUSHBI 1 INITD
|
||||
>PUSHA SIGNAL
|
||||
>SYSCALL Kill
|
||||
|
||||
lda #0
|
||||
@ -242,10 +242,10 @@ CS.RUN.KILL >PUSHW L.MSG.PS
|
||||
>PUSHBI 3
|
||||
>SYSCALL PrintF
|
||||
|
||||
>PUSHBI 1
|
||||
|
||||
ldy #S.PS.PID
|
||||
lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
>PUSHBI 1 SIG
|
||||
>SYSCALL Kill
|
||||
rts
|
||||
*--------------------------------------
|
||||
|
@ -4,7 +4,7 @@ NEW
|
||||
IO.D2.SeekTimeR .EQ 48 LIBBLKDEV Recalibration
|
||||
IO.D2.SeekTimeF .EQ 68 LIBBLKDEV Track Formatter
|
||||
IO.D2.SeekTimeB .EQ 68 LIBBLKDEV Boot Block
|
||||
IO.D2.SeekTimeP .EQ 48 ProDOS.FX initial
|
||||
IO.D2.SeekTimeP .EQ 68 ProDOS.FX initial
|
||||
IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
|
||||
*--------------------------------------
|
||||
IO.D2.Ph0Off .EQ $C080
|
||||
|
@ -760,11 +760,12 @@ XRW.DEBUG sta CLRPAGE2
|
||||
ldx #$24
|
||||
|
||||
lda XRW.ReqTrack
|
||||
jsr .6
|
||||
jsr XRW.DEBUG.PBYTEx
|
||||
|
||||
lda XRW.ReqSector
|
||||
|
||||
.6 pha
|
||||
XRW.DEBUG.PBYTEx
|
||||
pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
@ -783,6 +784,12 @@ XRW.DEBUG sta CLRPAGE2
|
||||
.8 sta $700,x
|
||||
inx
|
||||
rts
|
||||
|
||||
XRW.DEBUG2 ldx #$1E
|
||||
lda XRW.AddrField.V
|
||||
jsr XRW.DEBUG.PBYTEx
|
||||
lda XRW.AddrField.T
|
||||
bra XRW.DEBUG.PBYTEx
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
* data tables
|
||||
|
@ -399,7 +399,7 @@ XRW.Write bit IO.D2.ReadProt,x (4) PREWRITE MODE
|
||||
bit IO.D2.ReadMode,x (4)
|
||||
|
||||
lda #$FF (2)
|
||||
nop (2)
|
||||
* nop (2)
|
||||
|
||||
sta IO.D2.WriteMode,x (5) goto write mode
|
||||
ora IO.D2.WShift,x (4)
|
||||
@ -693,7 +693,11 @@ XRW.TrackSelect lda #2
|
||||
|
||||
rts
|
||||
|
||||
.4 ldx XRW.UnitIndex
|
||||
.4 .DO XRWDBG=1
|
||||
jsr XRW.DEBUG2
|
||||
.FIN
|
||||
|
||||
ldx XRW.UnitIndex
|
||||
lda XRW.AddrField.V
|
||||
cmp #194
|
||||
bcc .5
|
||||
|
@ -55,7 +55,6 @@ CORE.Run ldx #1
|
||||
.5 cmp #S.PS.S.QUIT
|
||||
bne .7
|
||||
|
||||
>PUSHBI 2
|
||||
ldy #S.PS.PID
|
||||
lda (pPS),y
|
||||
cmp #1 INITD ?
|
||||
@ -63,7 +62,9 @@ CORE.Run ldx #1
|
||||
|
||||
jmp CORE.Quit
|
||||
|
||||
.6 >SYSCALL2 Kill
|
||||
.6 >PUSHA PID
|
||||
>PUSHBI 2 SIG
|
||||
>SYSCALL2 Kill
|
||||
bra .8
|
||||
|
||||
.7 jsr CORE.PSLeave Save ZP & Ptrs
|
||||
|
@ -864,7 +864,7 @@ IrqMgrInit >LDYAI MSG.IRQ
|
||||
jsr IrqMgrInit.SetV
|
||||
|
||||
>LDYAI CORE.IRQ.IIGS.Off
|
||||
>STYA CORE.Quit+1
|
||||
>STYA CORE.Quit+3
|
||||
|
||||
>LDYAI MSG.IRQ.IIGS
|
||||
bra .8
|
||||
@ -886,7 +886,7 @@ IrqMgrInit >LDYAI MSG.IRQ
|
||||
jsr IrqMgrInit.SetV
|
||||
|
||||
>LDYAI CORE.IRQ.TCLOCK.Off
|
||||
>STYA CORE.Quit+1
|
||||
>STYA CORE.Quit+3
|
||||
|
||||
>LDYAI MSG.IRQ.CLOCK
|
||||
bra .8
|
||||
@ -912,7 +912,7 @@ IrqMgrInit >LDYAI MSG.IRQ
|
||||
jsr IrqMgrInit.SetV
|
||||
|
||||
>LDYAI CORE.IRQ.MOUSE.Off
|
||||
>STYA CORE.Quit+1
|
||||
>STYA CORE.Quit+3
|
||||
|
||||
>LDYAI MSG.IRQ.MOUSE
|
||||
bra .8
|
||||
|
@ -58,8 +58,8 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
|
||||
bcc .8 or K.IOBuf= 0, K.Buf256=/.../BINFILE
|
||||
|
||||
.90 pha save error code
|
||||
>PUSHBI 2
|
||||
lda .8+1
|
||||
>PUSHB .8+1 PID
|
||||
>PUSHBI 2 SIG
|
||||
jsr K.Kill
|
||||
pla get back error code
|
||||
sec
|
||||
@ -304,8 +304,8 @@ PS.CreateChild ldx #0
|
||||
rts
|
||||
|
||||
.9 pha
|
||||
>PUSHBI 2
|
||||
lda CORE.LastPSID
|
||||
>PUSHB CORE.LastPSID
|
||||
>PUSHBI 2 SIG
|
||||
jsr K.Kill
|
||||
pla
|
||||
sec
|
||||
@ -652,23 +652,25 @@ PS.AddYAp12ArgSize
|
||||
* ## C
|
||||
* `int kill(short int pid, short int sig);`
|
||||
* ## ASM
|
||||
* `>PUSHB pid`
|
||||
* `>PUSHB sig`
|
||||
* `lda pid`
|
||||
* `>SYSCALL kill`
|
||||
* ## RETURN VALUE
|
||||
* A = Child PSID
|
||||
*\--------------------------------------
|
||||
K.Kill.PID .BS 1
|
||||
*--------------------------------------
|
||||
K.Kill cmp #0
|
||||
beq .99 CS
|
||||
K.Kill >PULLB .10+1 SIG
|
||||
>PULLA PID
|
||||
cmp #0
|
||||
beq .9 CS
|
||||
|
||||
sta K.Kill.PID
|
||||
jsr CORE.GetPSByID
|
||||
bcs .99
|
||||
|
||||
>STYA ZPPtr1
|
||||
>PULLA
|
||||
|
||||
.10 lda #$ff SELF MODIFIED
|
||||
cmp #2+1
|
||||
bcs .9
|
||||
|
||||
@ -682,8 +684,7 @@ K.Kill cmp #0
|
||||
|
||||
.9 lda #E.SYN
|
||||
* sec
|
||||
rts
|
||||
.99 >RET 1
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
K.Kill.1 lda (ZPPtr1)
|
||||
and #S.PS.F.SLEEP^$FF
|
||||
@ -888,21 +889,22 @@ K.FileSearch >PULLW .4+1 DstStat
|
||||
stz PS.Find.98+1
|
||||
|
||||
jsr PS.Find
|
||||
bcs K.FileSearch.RTS
|
||||
bcs .9
|
||||
|
||||
ldx #$ff
|
||||
.1 inx
|
||||
lda K.Buf256,x
|
||||
.2 sta $ffff,x Self Modified
|
||||
bne .1
|
||||
|
||||
ldx #S.STAT-1
|
||||
.3 lda K.S.STAT,x
|
||||
.4 sta $ffff,x Self Modified
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
* clc
|
||||
K.FileSearch.RTS
|
||||
rts
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
PS.Find.CWD >STYA PS.Find.4+1 filename to find
|
||||
ldy #S.PS.hCWD
|
||||
@ -925,7 +927,7 @@ PS.Find.PATH ldx #4
|
||||
>PUSHW PS.VARS,x
|
||||
>PUSHWI 0 allocate...
|
||||
>SYSCALL2 GetEnv get value for Search Path
|
||||
bcs K.FileSearch.RTS
|
||||
bcs PS.Find.RTS
|
||||
|
||||
>STYA PS.Find.2+1
|
||||
stx PS.Find.98+1
|
||||
@ -974,7 +976,7 @@ PS.Find.5 >LDYAI K.Buf256
|
||||
jsr PS.Find.98 Discard Expanded hSrch list
|
||||
|
||||
clc
|
||||
rts
|
||||
PS.Find.RTS rts
|
||||
|
||||
PS.Find.98 lda #$ff SELF MODIFIED : Discard Search list
|
||||
beq .1
|
||||
|
Loading…
Reference in New Issue
Block a user