Kernel 0.94++

This commit is contained in:
Rémy GIBERT 2021-05-04 19:31:21 +02:00
parent 572c583002
commit 33d273b220
98 changed files with 1838 additions and 1712 deletions

View File

@ -270,7 +270,7 @@ The Reference Word Set contain both Standard Word Definitions and uncontrolled
| ABORT" | flag -- | I,C | | Used in a colon-definition in the form:<br>ABORT" stack empty"<br>If the flag is true, print the following text, till ". Then execute ABORT. | |
| AGAIN | | I,C | | Effect an unconditional jump back to the start of a BEGIN-AGAIN loop. | |
| ASCII | -- char (executing)<br>- (compiling) | I,C | | Leave the ASCII character value of the next non-blank character in the input stream. If compiling, compile it as a literal, which will be later left when executed. | |
| ASHIFT | n1 n2 -- n3 | | | Shift the value n1 arithemetically n2 bits left if n2 is positive, shifting zeros into the least-significant bit positions. If n2 is negative, n1 is shifted right. Sign extension is to be consistent with the processor's arithmetic shift. | |
| ASHIFT | n1 n2 -- n3 | | | Shift the value n1 arithmetically n2 bits left if n2 is positive, shifting zeros into the least-significant bit positions. If n2 is negative, n1 is shifted right. Sign extension is to be consistent with the processor's arithmetic shift. | |
| B/BUF | -- 1024 | | | A constant leaving 1024, the number of bytes per block buffer. | |
| BELL | | | | Activate a terminal bell or noise-maker as appropriate to the device in use. | |
| BL | -- n | | | Leave the ASCII character value for space (decimal 32). | |

View File

@ -122,7 +122,7 @@ Create a hDEV
# OpenDir
## C
`int hDIR opendir (const char * dirpath);`
`short int hDIR opendir (const char * dirpath);`
## ASM
`>LDYA dirpath`
@ -231,17 +231,21 @@ Return X+Y, X-Y, X*Y, X/Y, X mod Y....
## RETURN VALUE
On stack (long)
# FAdd,FSub,FMult,FDiv,FPwr
Return X+Y, X-Y, X*Y, X/Y, X^Y
# FAdd,FSub,FMul,FDiv,FPwr
Return X*Y, X/Y, X+Y, X-Y
## C
`float pwr ( float x, float y);`
## ASM
**In:**
`>PUSHF X (float)`
`>PUSHF Y (float)`
`>FPU fmul`
`>FPU fdiv`
`>FPU fmod` TODO
`>FPU fadd`
`>FPU fsub`
`>FPU fmult`
`>FPU fdiv`
`>FPU fpwr`
## RETURN VALUE
@ -424,7 +428,7 @@ Load a file in AUX memory (Stock Objects)
# GetStkObj
## C
`int *ptr getstkobj (shoirt int hStkObj);`
`int *ptr getstkobj (short int hStkObj);`
## ASM
`lda hStkObj`
@ -480,12 +484,11 @@ A = Child PSID
`int kill(short int pid, short int sig);`
## ASM
`>PUSHB pid`
`>PUSHB sig`
`lda pid`
`>SYSCALL kill`
## RETURN VALUE
A = Child PSID
# LoadTxtFile
Load TXT a file in memory (with ending 0)
@ -1355,8 +1358,8 @@ Concatenate strings
## ASM
**In:**
`>PUSHWI destination`
`>PUSHWI source`
`>LDYAI destination`
`>SYSCALL strcat`
## RETURN VALUE
@ -1370,8 +1373,8 @@ Copy string
## ASM
**In:**
`>PUSHWI destination`
`>PUSHWI source`
`>LDYAI destination`
`>SYSCALL strcpy`
## RETURN VALUE
@ -1416,8 +1419,8 @@ Compare 2 strings
## ASM
**In:**
`>PUSHWI s1`
`>PUSHWI s2`
`>LDYAI s1`
`>SYSCALL strcmp`
## RETURN VALUE
@ -1434,8 +1437,8 @@ Compare 2 strings, ignoring case
## ASM
**In:**
`>PUSHWI s1`
`>PUSHWI s2`
`>LDYAI s1`
`>SYSCALL strcasecmp`
## RETURN VALUE
@ -1444,11 +1447,21 @@ CS : no match
CC, Y,A=0
CS, Y,A > 0 or < 0
# StrVSet
## ASM
`>PUSHB hSTRV`
`>PUSHW id`
`>PUSHW ptr`
`>SYSCALL StrVSet`
## RETURN VALUE
# StrVGet
## ASM
`>PUSHB hSTRV`
`>PUSHB index`
`>PUSHW id`
`>PUSHW ptr`
`>SYSCALL StrVGet`
@ -1456,25 +1469,21 @@ CS : no match
CC: Y,A = Ptr
CS: Y,A = NULL
# StrVShift
# StrVNew
## ASM
`>PUSHB hSTRV`
`>PUSHB index`
`>SYSCALL StrVShift`
`>LDYA size`
`>SYSCALL StrVNew`
## RETURN VALUE
# StrVAdd
# StrVFree
## ASM
`>PUSHB hSTRV`
`>PUSHW str`
`>SYSCALL StrVAdd`
`lda hSTRV`
`>SYSCALL StrVFree`
## RETURN VALUE
CC : str added to hSTRV
CS : hSTRV full
# Time
Get System Time in Buffer

View File

@ -6,7 +6,7 @@ Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
# D2TrkRead16s
Write a track (16 sectors)
PUSHB = DSSS0000
PUSHB = TrackNum * 4 : 0->136+
PUSHB = TrackNum * 4 : 0->136+
PUSHW = Ptr to 16*256 buffer
## RETURN VALUE
@ -16,7 +16,9 @@ Write a track (16 sectors)
# D2TrkWrite16s
Write a track (16 sectors)
PUSHB = DSSS0000
PUSHB = TrackNum * 4 : 0->136+
PUSHB = VolNum
PUSHB = HeadNum (0,1)
PUSHB = TrackNum * 4 : 0->136+
PUSHW = Ptr to 16*256 buffer
## RETURN VALUE
@ -38,7 +40,7 @@ Write a track (NIBBLE)
Compute space needed for ProDOS Catalog
## C
int getprodoscatsize (short int options, short int catsize, int devsize );
int getprodoscatsize (short int options, short int catsize, int devsize );
## ASM
**In:**
@ -46,7 +48,7 @@ int getprodoscatsize (short int options, short int catsize, int devsize );
PUSHB = Catalog Size (in blocks)
PUSHB = Options
## RETURN VALUE
## RETURN VALUE
X=BlockCount (max 22)
Y,A=BufSize (max $4400)

Binary file not shown.

Binary file not shown.

View File

@ -269,60 +269,128 @@ CORE.Run lda #$0 RTS
jmp (ZPCodeBufPtr)
*--------------------------------------
CORE.Lookup >STYA ZPPtr1
CORE.LookupOPS lda (ZPInputBufPtr)
jsr CORE.IsOPSChar
bcc .55
jsr CORE.IsLetter
bcs .99
sec
.55 ror bFlag
>LDYA L.ACOS.OPS
>STYA ZPPtr1
ldx #0
.1 ldy #$ff
.2 jsr .7 get next valid char in src text
bcs .3
.2 jsr .10 get next valid char in src text
bcs .4
.20 jsr CORE.ToUpperCase
jsr CORE.ToUpperCase
eor (ZPPtr1),y match table char ?
asl compare only 7 bits
bne .4 no match...get next table keyword
bne .6 no match...get next table keyword
bcc .2 not last char in this keyword
jsr .7 next char in text...
jsr .10 next char in text...
bcc .4 valid....failed
.8 tya Keyword Len
.3 tya Keyword Len
jmp CORE.SkipA
.3 dey
.4 dey
lda (ZPPtr1),y was last char in this keyword ?
bmi .8
bmi .3
iny
.41 jsr CORE.IncPtr1 skip chars to next keyword
.5 jsr CORE.IncPtr1 skip chars to next keyword
.4 lda (ZPPtr1)
bpl .41
.6 lda (ZPPtr1)
bpl .5
jsr CORE.IncPtr1
.6 inx
inx
lda (ZPPtr1) Array Ending 0, lookup failed
bne .1
.9 sec
rts
*--------------------------------------
.10 iny
lda (ZPInputBufPtr),y Get Src text char...
beq .19 end of text
.7 iny
bit bFlag
bmi .11 Letter expected
jmp CORE.IsOPSChar
.11 jmp CORE.IsLetter
.19 sec
.99 rts
*--------------------------------------
CORE.Lookup >STYA ZPPtr1
ldx #0
.1 ldy #$ff
.2 jsr .10 get next valid char in src text
bcs .4
jsr CORE.ToUpperCase
eor (ZPPtr1),y match table char ?
asl compare only 7 bits
bne .6 no match...get next table keyword
bcc .2 not last char in this keyword
jsr .10 next char in text...
bcc .4 valid....failed
.3 tya Keyword Len
jmp CORE.SkipA
.4 dey
lda (ZPPtr1),y was last char in this keyword ?
bmi .3
iny
.5 jsr CORE.IncPtr1 skip chars to next keyword
.6 lda (ZPPtr1)
bpl .5
jsr CORE.IncPtr1
inx
inx
lda (ZPPtr1) Array Ending 0, lookup failed
bne .1
.9 sec
rts
*--------------------------------------
.10 iny
lda (ZPInputBufPtr),y Get Src text char...
beq .9 end of text
cmp #'$'
bne .70
bne .11
clc
rts
.70 jmp CORE.IsLetterOrDigit CS=end of valid chars
.11 jmp CORE.IsLetterOrDigit CS=end of valid chars
*--------------------------------------
CORE.IncPtr1 inc ZPPtr1
bne .8
@ -517,22 +585,22 @@ CORE.ToUpperCase
CORE.ToUpperCase.RTS
rts
*--------------------------------------
CORE.IsAOPSChar ldx #0
CORE.IsOPSChar phx
ldx #ACOS.OPSChars.Cnt-1
.1 cmp ACOS.AOPSChars,x
.1 cmp ACOS.OPSChars,x
beq .8
inx
cpx #ACOS.AOPSChars.Cnt
bcc .1
dex
bpl .1
plx
sec
rts
.8 txa
asl
tax
* clc
.8 plx
clc
rts
*--------------------------------------
CORE.IsEndExp cmp #')'

View File

@ -15,7 +15,7 @@ EXP.Eval.R lda EXP.AOPS
*--------------------------------------
.10 jsr CORE.GetCharNB
bcs .39
.11 cmp #'('
bne .12
@ -27,11 +27,11 @@ EXP.Eval.R lda EXP.AOPS
jsr CORE.GetCharNB
bcs .39
cmp #')'
sec
bne .39
jsr CORE.GetNextCharNB skip )
bra .41
@ -81,8 +81,8 @@ EXP.Eval.R lda EXP.AOPS
.50 jsr CORE.IsEndExp
bcs .80
jsr EXP.GetOP
jsr CORE.LookupOPS
bcs .90
stx EXP.AOPS
@ -95,8 +95,9 @@ EXP.Eval.R lda EXP.AOPS
inc pStack prev op has precedence
tax
jsr EXP.OPjmpX go compute (arg1 op1 arg2)
tay
ldx ACOS.OPS.MAP-1,y
jsr CODE.FPUCALL go compute (arg1 op1 arg2)
.62 lda EXP.AOPS we must compute arg2 op2 arg3 before
>PUSHA
@ -106,10 +107,11 @@ EXP.Eval.R lda EXP.AOPS
jmp .11
*--------------------------------------
.80 >PULLA
tax
tay
bmi .88 nothing to do
jsr EXP.OPjmpX
ldx ACOS.OPS.MAP-1,y
jsr CODE.FPUCALL
bra .80
.90 lda #E.ESYN
@ -132,7 +134,6 @@ EXP.Eval.R lda EXP.AOPS
rts
*--------------------------------------
EXP.FNjmpX jmp (J.ACOS.FN,x)
EXP.OPjmpX jmp (J.ACOS.AOPS,x)
*--------------------------------------
EXP.CreateStrConst
lda #'$'
@ -174,20 +175,6 @@ EXP.CreateStrConst
* sec
rts
*--------------------------------------
EXP.GetOP jsr CORE.IsAOPSChar + - * /
bcc .9
>LDYA L.ACOS.AOPS MOD
jsr CORE.Lookup
bcs .9
txa
* clc
adc #ACOS.AOPSChars.Cnt*2
tax
.9 rts
*--------------------------------------
EXP.Int16 >PUSHW ZPInputBufPtr
>PUSHWI ZPInputBufPtr
>PUSHBI 10
@ -247,21 +234,6 @@ EXP.VARLookup >LDA.G hVars
sec
rts
*--------------------------------------
EXP.ADD ldx #FPU.ADD16
jmp CODE.FPUCALL
EXP.SUB ldx #FPU.SUB16
jmp CODE.FPUCALL
EXP.MUL ldx #FPU.IMUL16
jmp CODE.FPUCALL
EXP.DIV ldx #FPU.IDIV16
jmp CODE.FPUCALL
EXP.MOD ldx #FPU.IMOD16
jmp CODE.FPUCALL
*--------------------------------------
*--------------------------------------
MAN
SAVE usr/src/bin/acos.s.exp

View File

@ -61,7 +61,7 @@ CS.START cld
.DA #0
.DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #128 Stack Size
.DA #256 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
@ -84,13 +84,7 @@ L.MSG.FWREFERR .DA MSG.FWREFERR
L.MSG.STR .DA MSG.STR
L.MSG.INT16 .DA MSG.INT16
*--------------------------------------
L.ACOS.AOPS .DA ACOS.AOPS
J.ACOS.AOPS .DA EXP.ADD
.DA EXP.SUB
.DA EXP.MUL
.DA EXP.DIV
.DA EXP.MOD
L.ACOS.BOPS .DA ACOS.BOPS
L.ACOS.OPS .DA ACOS.OPS
L.ACOS.KW .DA ACOS.KW
J.ACOS.KW .DA KW.ADDINT
.DA KW.APPEND
@ -515,26 +509,34 @@ MSG.INT16 .AZ "%I"
OptionList .AS "DdTt"
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
*--------------------------------------
ACOS.AOPSChars .AS "+-*/"
ACOS.AOPSChars.Cnt .EQ *-ACOS.AOPSChars
ACOS.OPSChars .AS "+-*/<>="
ACOS.OPSChars.Cnt .EQ *-ACOS.OPSChars
*--------------------------------------
ACOS.AOPS .AT "MOD"
.HS 00
*--------------------------------------
ACOS.BOPS .AT "="
.AT "<>"
.AT "><"
ACOS.OPS .AT "*"
.AT "/"
.AT "MOD"
.AT "+"
.AT "-"
.AT "<"
.AT ">"
.AT "<="
.AT "=<"
.AT ">"
.AT ">="
.AT "=>"
.AT "NOT"
.AT "<>"
.AT "><"
.AT "="
* .AT "NOT"
.AT "AND"
.AT "OR"
.HS 00
*--------------------------------------
ACOS.OPS.MAP .DA #FPU.iMUL,#FPU.iDIV,#FPU.iMOD,#FPU.iADD,#FPU.iSUB
.DA #FPU.iL,#FPU.iLE,#FPU.iLE
.DA #FPU.iG,#FPU.iGE,#FPU.iGE
.DA #FPU.iNE,#FPU.iNE,#FPU.iE
.DA #FPU.iLAND,#FPU.iLOR
*--------------------------------------
ACOS.KW .AT "ADDINT"
.AT "APPEND"
.AT "BYTE"

View File

@ -387,14 +387,14 @@ EXP.OP.SUB ldx #0 ARG-ACC->ACC
*---------------------------------------
EXP.OP.MUL >PUSHL SRC.ARG
>PUSHL SRC.ACC
>FPU MUL32
>FPU uMUL
>PULLL SRC.ACC
clc
rts
*---------------------------------------
EXP.OP.DIV >PUSHL SRC.ARG
>PUSHL SRC.ACC
>FPU DIV32
>FPU uDIV
>PULLL SRC.ACC
clc
rts

View File

@ -279,13 +279,14 @@ CS.RUN.SetAttr >PUSHW ZPFullPath
rts
*--------------------------------------
CS.RUN.GetFilePath
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>LDYA ZPFullPath
>SYSCALL StrCpy
>PUSHW ZPFullPath
>PUSHW ZPFileName
>LDYA ZPFullPath
>SYSCALL StrCat
rts
*--------------------------------------

View File

@ -255,13 +255,14 @@ CS.RUN.CheckErr bcs .1
rts
*--------------------------------------
CS.RUN.GetFilePath
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>LDYA ZPFullPath
>SYSCALL StrCpy
>PUSHW ZPFullPath
>PUSHW ZPFileName
>LDYA ZPFullPath
>SYSCALL StrCat
rts
*--------------------------------------

View File

@ -296,13 +296,14 @@ CS.RUN.CheckErr bcs .1
rts
*--------------------------------------
CS.RUN.GetFilePath
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>LDYA ZPFullPath
>SYSCALL StrCpy
>PUSHW ZPFullPath
>PUSHW ZPFileName
>LDYA ZPFullPath
>SYSCALL StrCat
rts
*--------------------------------------

View File

@ -257,13 +257,14 @@ CS.RUN.CheckErr bcs .1
rts
*--------------------------------------
CS.RUN.GetFilePath
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>LDYA ZPFullPath
>SYSCALL StrCpy
>PUSHW ZPFullPath
>PUSHW ZPFileName
>LDYA ZPFullPath
>SYSCALL StrCat
rts
*--------------------------------------

View File

@ -238,13 +238,14 @@ CS.RUN.CheckErr bcs .1
rts
*--------------------------------------
CS.RUN.GetFilePath
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>LDYA ZPFullPath
>SYSCALL StrCpy
>PUSHW ZPFullPath
>PUSHW ZPFileName
>LDYA ZPFullPath
>SYSCALL StrCat
rts
*--------------------------------------

View File

@ -171,7 +171,7 @@ CSH.Run.1 cmp #C.CR empty line....
cmp #';'
beq .8
.99 lda #CSH.E.SYNTAX
.99 lda #E.CSYN
sec
.9 rts
@ -200,7 +200,7 @@ CSH.COMMENTS jsr CSH.GetNextChar
jmp CSH.SkipLine skip line.....
.90 lda #CSH.E.SYNTAX
.90 lda #E.CSYN
sec
rts
*--------------------------------------
@ -339,9 +339,9 @@ CSH.AddSymbol >LDA.G CSH.hSymbols
>SYSCALL SListAddData
.9 rts
.99 lda #CSH.E.OOM
.99 lda #E.OOM
.HS 2C BIT ABS
CSH.TMISMATCH lda #CSH.E.TMISMATCH
CSH.TMISMATCH lda #E.TMISMATCH
sec
rts
*--------------------------------------
@ -367,7 +367,7 @@ CSH.fDeclaration
clc
rts
.9 lda #CSH.E.SYNTAX
.9 lda #E.CSYN
sec
.99 rts
*--------------------------------------
@ -381,7 +381,7 @@ CSH.GetDeclaration
bra .8
.9 lda #CSH.E.SYNTAX
.9 lda #E.CSYN
sec
.8 >LEAVE
rts
@ -422,7 +422,7 @@ CSH.SetVarValueFromStack
clc
rts
.99 lda #CSH.E.TMISMATCH
.99 lda #E.TMISMATCH
sec
rts
*--------------------------------------
@ -551,7 +551,7 @@ CSH.GetVarValueOnStack
clc X = Var Type
.9 rts
.99 lda #CSH.E.TMISMATCH
.99 lda #E.TMISMATCH
sec
rts
*--------------------------------------
@ -598,7 +598,7 @@ CSH.CheckStack tax
clc
rts
.9 lda #CSH.E.SYNTAX
.9 lda #E.CSYN
sec
rts
*--------------------------------------
@ -614,12 +614,13 @@ CSH.Push pha
rts
.9 pla
lda #CSH.E.SOVERFLW
lda #E.STKOVERFLOW
sec
rts
*--------------------------------------
CSH.Pop >LDA.G CSH.StackPtr
beq .9
pha
inc
sta (pData),y
@ -628,7 +629,7 @@ CSH.Pop >LDA.G CSH.StackPtr
clc
rts
.9 lda #CSH.E.STACKERR
.9 lda #E.STACKERROR
sec
rts
*--------------------------------------
@ -711,7 +712,7 @@ CSH.CheckSpace jsr CSH.GetChar
jsr CSH.GetNextCharNB
bcc CSH.GetNextCharNB.RTS
.90 lda #CSH.E.SYNTAX
.90 lda #E.CSYN
sec
rts
*--------------------------------------

View File

@ -16,7 +16,7 @@ CSH.DIR jsr CSH.GetNextCharNB
jmp (J.CSH.DIRS,x)
.91 lda #CSH.E.INVDIR
.91 lda #E.CSYN
sec
.99 rts
*--------------------------------------
@ -63,7 +63,7 @@ CSH.DIR.DEFINE jsr CSH.CheckSpace
jmp CSH.SkipLine
.90 lda #CSH.E.SYNTAX
.90 lda #E.CSYN
sec
.99 rts
*--------------------------------------
@ -105,7 +105,7 @@ CSH.DIR.INCLUDE >STZ.G PathBuf
cpy #64
bne .3
.90 lda #CSH.E.SYNTAX
.90 lda #E.CSYN
sec
.99 rts

View File

@ -2,14 +2,30 @@ NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
* A = Type, X = OP
* Y = Type, A = OP
*--------------------------------------
CSH.BOP.EXEC jmp (J.CSH.BOPS,x)
*--------------------------------------
CSH.BOPS.ADD asl
tax
jmp (J.CSH.BOPS.ADDt,x)
CSH.BOP.EXEC cpy #CSH.T.UINT
bcs .1
.1 clc
adc CSH.Type2FPU-3,y
tax
jsr A2osX.FPUCALL
clc
rts
*--------------------------------------
CSH.BOPS.MUL clc
rts
*--------------------------------------
CSH.BOPS.DIV clc
rts
*--------------------------------------
CSH.BOPS.MOD clc
rts
*--------------------------------------
CSH.BOPS.ADD
CSH.BOPS.ADDi8
CSH.BOPS.ADDu8 clc
>PULLA
@ -17,24 +33,8 @@ CSH.BOPS.ADDu8 clc
sta (pStack)
clc
rts
CSH.BOPS.ADDi16
CSH.BOPS.ADDu16 >FPU ADD16
clc
rts
CSH.BOPS.ADDi32
CSH.BOPS.ADDu32 >FPU ADD32
clc
rts
CSH.BOPS.ADDf >FPU FADD
clc
rts
*--------------------------------------
CSH.BOPS.SUB asl
tax
jmp (J.CSH.BOPS.SUBt,x)
CSH.BOPS.SUB
CSH.BOPS.SUBi8
CSH.BOPS.SUBu8 sec
ldy #1
@ -44,52 +44,8 @@ CSH.BOPS.SUBu8 sec
inc pStack
clc
rts
CSH.BOPS.SUBi16
CSH.BOPS.SUBu16 >FPU SUB16
clc
rts
CSH.BOPS.SUBi32
CSH.BOPS.SUBu32 >FPU SUB32
clc
rts
CSH.BOPS.SUBf >FPU FSUB
clc
rts
*--------------------------------------
CSH.BOPS.MUL cmp #CSH.T.FLOAT
beq .8
>FPU MUL32
clc
rts
.8 >FPU FMULT
clc
rts
*--------------------------------------
CSH.BOPS.DIV cmp #CSH.T.FLOAT
beq .8
clc
rts
.8 >FPU FDIV
clc
rts
*--------------------------------------
CSH.BOPS.MOD clc
rts
*--------------------------------------
CSH.BOPS.SHL asl
tax
jmp (J.CSH.BOPS.SHLt,x)
CSH.BOPS.SHL
CSH.BOPS.SHL8 lda (pStack)
tax
beq .8
@ -106,80 +62,20 @@ CSH.BOPS.SHL8 lda (pStack)
.8 inc pStack
clc
rts
CSH.BOPS.SHL16 lda (pStack)
tax
beq .8
ldy #2
lda (pStack),y
iny
.1 asl
pha
lda (pStack),y
rol
sta (pStack),y
pla
dex
bne .1
dey
sta (pStack),y
.8 inc pStack
inc pStack
clc
rts
CSH.BOPS.SHL32 lda (pStack)
tax
beq .8
ldy #4
lda (pStack),y
.1 asl
pha
ldy #5
lda (pStack),y
rol
sta (pStack),y
iny
lda (pStack),y
rol
sta (pStack),y
iny
lda (pStack),y
rol
sta (pStack),y
pla
dex
bne .1
ldy #4
sta (pStack),y
.8 inc pStack
inc pStack
inc pStack
inc pStack
clc
rts
*--------------------------------------
CSH.BOPS.SHR
CSH.BOPS.L
CSH.BOPS.G
CSH.BOPS.LE
CSH.BOPS.GE
CSH.BOPS.EQ
CSH.BOPS.NE
CSH.BOPS.AND
CSH.BOPS.OR
CSH.BOPS.EOR
CSH.BOPS.LAND
CSH.BOPS.LOR
@ -224,7 +120,8 @@ EXEC.puts >PULLYA
>PUSHYA
rts
*--------------------------------------
EXEC.printf >SYSCALL PrintF
EXEC.printf
>SYSCALL PrintF
>PUSHYA
rts
*--------------------------------------

View File

@ -115,9 +115,8 @@ CSH.ExpEval ldx ZPPtr1
cmp ZPPtr2+1
bcc .33 OP(n) has precedence, on stack : V1,V2
tax OP(n-1) has precedence...
ldy ZPPtr2 OP(n-1) has precedence...
lda ZPPtr2 Var Type
jsr CSH.BOP.EXEC compute V(n-1) <OP(n-1)> V(n)
bcc .32
@ -129,16 +128,16 @@ CSH.ExpEval ldx ZPPtr1
jmp .10 go check for next token
*--------------------------------------
.80 plx any OP on stack ?
.80 pla any OP on stack ?
bmi .88
lda ZPPtr2 Var Type
ldy ZPPtr2 Var Type
jsr CSH.BOP.EXEC
bcc .80
bcs .99
.90 lda #CSH.E.SYNTAX
.90 lda #E.ESYN
.99 plx
bpl .99
@ -186,7 +185,8 @@ CSH.AddContCharP
clc
rts
.9 lda #CSH.E.SYNTAX
.9 lda #E.ESYN
sec
rts
*--------------------------------------
@ -194,11 +194,9 @@ CSH.GetNumOnStack
txa
beq .99
cpx #CSH.T.ULONG+1
bcs .99
cpx #CSH.T.FLOAT
bne .1
bcc .1
bne .99
>PUSHW ZPInputBufPtr
>PUSHWI ZPInputBufPtr
@ -244,7 +242,7 @@ CSH.GetNumOnStack
.8 clc
.9 rts
.99 lda #CSH.E.TMISMATCH
.99 lda #E.TMISMATCH
sec
rts
*--------------------------------------

View File

@ -52,7 +52,7 @@ CSH.IF jsr CSH.GetCharNB
.6 jsr CSH.SkipBlock
bcc .99
.9 lda #CSH.E.SYNTAX
.9 lda #E.CSYN
sec
.99 rts
*--------------------------------------
@ -76,7 +76,7 @@ CSH.BREAK
CSH.CONTINUE
CSH.SIZEOF
*--------------------------------------
CSH.TYPEDEF lda #CSH.E.SYNTAX
CSH.TYPEDEF lda #E.CSYN
sec
rts
*--------------------------------------
@ -124,7 +124,7 @@ CSH.CONST lda ZPVarQual
clc
rts
.9 lda #CSH.E.SYNTAX
.9 lda #E.CSYN
sec
rts
*--------------------------------------
@ -157,7 +157,7 @@ CSH.UNSIGNED clc
.9 plp
lda #CSH.E.SYNTAX
lda #E.CSYN
sec
rts
*--------------------------------------
@ -172,7 +172,7 @@ CSH.SHORT jsr CSH.CheckSpace
cpx #4 only int allowed
beq CSH.SCHAR
.9 lda #CSH.E.SYNTAX
.9 lda #E.CSYN
sec
rts
*--------------------------------------
@ -272,7 +272,7 @@ CSH.TYPE stx ZPVarType
.8 clc
rts
.9 lda #CSH.E.SYNTAX
.9 lda #E.CSYN
sec
.99 rts
*--------------------------------------
@ -389,9 +389,9 @@ CSH.fCall ldx ZPPtr1
plx restore returned type
rts
.90 lda #CSH.E.SYNTAX
.90 lda #E.CSYN
.HS 2C BIT ABS
.91 lda #CSH.E.TMISMATCH
.91 lda #E.TMISMATCH
sec
.9 plx Discard function index

View File

@ -10,20 +10,22 @@ NEW
.INB inc/mli.i
.INB inc/mli.e.i
*--------------------------------------
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
CSH.T.VOID .EQ 0
CSH.T.UCHAR .EQ 1
CSH.T.SCHAR .EQ 2
CSH.T.UINT .EQ 3
CSH.T.SINT .EQ 4
CSH.T.ULONG .EQ 5
CSH.T.SLONG .EQ 6
CSH.T.FLOAT .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
*--------------------------------------
* Zero Page Segment, up to 32 bytes
*--------------------------------------
@ -86,16 +88,16 @@ L.MSG.DEBUG .DA MSG.DEBUG
L.MSG.ERR .DA MSG.ERR
L.ENV.INCLUDE .DA ENV.INCLUDE
L.CSH.BOPS .DA CSH.BOPS
J.CSH.BOPS .DA CSH.BOPS.ADD
.DA CSH.BOPS.SUB
.DA CSH.BOPS.MUL
J.CSH.BOPS .DA CSH.BOPS.MUL
.DA CSH.BOPS.DIV
.DA CSH.BOPS.MOD
.DA CSH.BOPS.ADD
.DA CSH.BOPS.SUB
.DA CSH.BOPS.SHL
.DA CSH.BOPS.SHR
.DA CSH.BOPS.L
.DA CSH.BOPS.G
.DA CSH.BOPS.LE
.DA CSH.BOPS.G
.DA CSH.BOPS.GE
.DA CSH.BOPS.EQ
.DA CSH.BOPS.NE
@ -104,30 +106,6 @@ J.CSH.BOPS .DA CSH.BOPS.ADD
.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
@ -450,23 +428,6 @@ OptionList .AS "DdTt"
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
*--------------------------------------
*--------------------------------------
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
*--------------------------------------
@ -505,16 +466,16 @@ CSH.AOPS >PSTR "="
* Bitwise Operators: & | ^ ~
* Logical Operators: && ||
*--------------------------------------
CSH.BOPS >PSTR "+"
>PSTR "-"
>PSTR "*"
CSH.BOPS >PSTR "*"
>PSTR "/"
>PSTR "%"
>PSTR "+"
>PSTR "-"
>PSTR "<<"
>PSTR ">>"
>PSTR "<"
>PSTR ">"
>PSTR "<="
>PSTR ">"
>PSTR ">="
>PSTR "=="
>PSTR "!="
@ -525,6 +486,8 @@ CSH.BOPS >PSTR "+"
>PSTR "||"
.HS 00
*--------------------------------------
CSH.Type2FPU .DA #FPU.wMUL,#FPU.iMUL,#FPU.uMUL,#FPU.lMUL,FPU.fMUL
*--------------------------------------
* Reserved Directives:
*--------------------------------------
CSH.DIRS >PSTR "define"
@ -559,7 +522,7 @@ CSH.TYPES >PSTR "void"
CSH.FTYPES >PSTR "fastcall"
* .HS 00
*--------------------------------------
CSH.TYPESIZE .HS 0001020405010204
CSH.TYPESIZE .HS 0001010202040405
*--------------------------------------
CSH.FN
* float cos ( float x );

View File

@ -126,10 +126,11 @@ CS.RUN lda #C.SPACE
lda ArgIndex
beq .80
>PUSHW ZPBufPtr
>SYSCALL ArgV
>PUSHYA
>LDYA ZPBufPtr
>SYSCALL StrCpy
jsr CS.RUN.OUT
bcs .9

View File

@ -136,8 +136,8 @@ CS.RUN.DUMP >PUSHB ETKCFG+S.NETCFG.DevID
>LEA.G DCB.NIC
>STYA IOCTL+S.IOCTL.BUFPTR
lda #S.IOCTL.STATCODE.GETDCB
sta IOCTL+S.IOCTL.STATCODE
lda #S.IOCTL.S.GETDCB
sta IOCTL+S.IOCTL.S
>PUSHB ETKCFG+S.NETCFG.DevID
>PUSHBI IOCTL.STATUS

View File

@ -3,11 +3,11 @@ NEW
*--------------------------------------
KW.Lookup >LDYA L.KEYWORDS
>STYA ZPPtr1
ldx #0
.1 ldy #$ff
.2 jsr .7 get next valid char in src text
bcs .3
@ -24,8 +24,8 @@ KW.Lookup >LDYA L.KEYWORDS
.8 tya Keyword Len
jsr NextKW
clc
clc
rts
.3 dey
@ -50,7 +50,7 @@ KW.Lookup >LDYA L.KEYWORDS
.7 iny
lda (ZPCLBufPtr),y Get Src text char...
beq .9 end of text
jmp IsSpaceOrCR CS=end of valid chars
*--------------------------------------
KW.INVALID lda #E.CSYN
@ -61,7 +61,7 @@ KW.qDUP lda (pStack)
ldy #1
ora (pStack),y
bne KW.DUP
clc
rts
*--------------------------------------
@ -70,10 +70,10 @@ KW.DUP lda pStack
cmp #$FF
bcs .9
cmp #2
bcc .99
ldy #1
lda (pStack),y
>PUSHA
@ -81,25 +81,25 @@ KW.DUP lda pStack
>PUSHA
clc
rts
.9 lda #E.STACKERROR
sec
rts
.99 lda #E.STKOVERFLOW
sec
rts
rts
*--------------------------------------
KW.DROP lda pStack
beq .9
inc pStack
beq .9
inc pStack
clc
rts
.9 lda #E.STACKERROR
sec
rts
@ -107,16 +107,16 @@ KW.DROP lda pStack
KW.SWAP ldy #3
lda (pStack),y
pha
dey #2
lda (pStack),y
pha
lda (pStack)
tax
pla
sta (pStack)
txa
sta (pStack),y #2
@ -136,10 +136,10 @@ KW.SWAP ldy #3
*--------------------------------------
KW.OVER jsr CheckStackPop4
bcs .9
cmp #2
bcc .99
ldy #3
lda (pStack),y
>PUSHA
@ -155,19 +155,19 @@ KW.OVER jsr CheckStackPop4
*--------------------------------------
KW.ROT lda pStack
beq .9
cmp #$FB
bcs .9
ldy #5
lda (pStack),y n1 HI
pha
dey
lda (pStack),y n1 LO
pha
.1 dey
lda (pStack),y
iny
iny
@ -177,101 +177,101 @@ KW.ROT lda pStack
bne .1
iny
pla
sta (pStack)
pla
sta (pStack),y
clc
rts
.9 lda #E.STACKERROR
sec
rts
rts
*--------------------------------------
KW.Add jsr CheckStackPop4
bcs .9
>FPU ADD16
>FPU iADD
clc
.9 rts
*--------------------------------------
KW.DAdd >FPU ADD32
KW.DAdd >FPU lADD
clc
rts
*--------------------------------------
KW.Sub jsr CheckStackPop4
bcs .9
>FPU SUB16
>FPU iSUB
clc
.9 rts
*--------------------------------------
KW.DSub >FPU SUB32
KW.DSub >FPU lSUB
clc
rts
*--------------------------------------
KW.Mul jsr CheckStackPop4
bcs .9
>FPU IMUL16
>FPU iMUL
clc
.9 rts
*--------------------------------------
KW.Div jsr KW.DivMoD.1
bcs .9
>LDYA ZPPtr2
jsr KW.PushWSigned
clc
.9 rts
.9 rts
*--------------------------------------
KW.Mod jsr KW.DivMoD.1
bcs .9
>PUSHW ZPPtr3
.9 rts
.9 rts
*--------------------------------------
KW.DivMod jsr KW.DivMoD.1
bcs .9
>PUSHW ZPPtr3
>LDYA ZPPtr2
jsr KW.PushWSigned
clc
.9 rts
.9 rts
*--------------------------------------
KW.MulDivMod
*--------------------------------------
KW.MulDiv
KW.MulDiv
lda #E.SYN
sec
rts
*--------------------------------------
KW.DivMoD.1 jsr CheckStackPop4
bcs .9
jsr KW.GetPtr1Ptr2Sign
stz ZPPtr3
stz ZPPtr3+1
ldx #16
.1 asl ZPPtr2
rol ZPPtr2+1
rol ZPPtr3
rol ZPPtr3+1
sec
lda ZPPtr3
sbc ZPPtr1
@ -279,58 +279,58 @@ KW.DivMoD.1 jsr CheckStackPop4
lda ZPPtr3+1
sbc ZPPtr1+1
bcs .2
pla
dex
bne .1
bra .8
.2 sta ZPPtr3+1
pla
sta ZPPtr3
inc ZPPtr2
dex
bne .1
.8 clc
.9 rts
.9 rts
*--------------------------------------
KW.GetPtr1Ptr2Sign
>PULLW ZPPtr1
sta Sign
asl
bcc .1
lda ZPPtr1
clc
eor #$ff
adc #1
sta ZPPtr1
lda ZPPtr1+1
eor #$ff
adc #0
sta ZPPtr1+1
.1 >PULLW ZPPtr2
asl
bcc .8
lda ZPPtr2
clc
eor #$ff
adc #1
sta ZPPtr2
lda ZPPtr2+1
eor #$ff
adc #0
sta ZPPtr2+1
lda Sign
eor #$80
sta Sign
@ -339,29 +339,29 @@ KW.GetPtr1Ptr2Sign
*--------------------------------------
KW.PushWSigned bit Sign
bpl .8
pha
tya
clc
eor #$ff
adc #1
tay
pla
eor #$ff
adc #0
.8 >PUSHYA
rts
*--------------------------------------
KW.MAX jsr CheckStackPop4
bcs .9
lda (pStack) LO
ldy #2
cmp (pStack),y
cmp (pStack),y
dey #1
lda (pStack),y HI
@ -369,20 +369,20 @@ KW.MAX jsr CheckStackPop4
iny #3
sbc (pStack),y
bcc .1
jsr KW.SWAP
.1 jmp KW.DROP
.9 rts
.9 rts
*--------------------------------------
KW.MIN jsr CheckStackPop4
bcs .9
lda (pStack) LO
ldy #2
cmp (pStack),y
cmp (pStack),y
dey #1
lda (pStack),y HI
@ -390,12 +390,12 @@ KW.MIN jsr CheckStackPop4
iny #3
sbc (pStack),y
bcs .1
jsr KW.SWAP
.1 jmp KW.DROP
.9 rts
.9 rts
*--------------------------------------
KW.ABS ldy #1
@ -451,7 +451,7 @@ KW.DNEGATE.8 clc
*--------------------------------------
KW.AND jsr CheckStackPop4
bcs .9
ldy #2
lda (pStack),y
and (pStack)
@ -469,7 +469,7 @@ KW.AND jsr CheckStackPop4
*--------------------------------------
KW.OR jsr CheckStackPop4
bcs .9
ldy #2
lda (pStack),y
ora (pStack)
@ -487,7 +487,7 @@ KW.OR jsr CheckStackPop4
*--------------------------------------
KW.XOR jsr CheckStackPop4
bcs .9
ldy #2
lda (pStack),y
eor (pStack)
@ -505,7 +505,7 @@ KW.XOR jsr CheckStackPop4
*--------------------------------------
KW.LWR jsr CheckStackPop4
bcs .9
ldy #2
lda (pStack),y
cmp (pStack)
@ -527,7 +527,7 @@ KW.LWR jsr CheckStackPop4
*--------------------------------------
KW.GTR jsr CheckStackPop4
bcs .9
ldy #2
lda (pStack),y
cmp (pStack)
@ -548,7 +548,7 @@ KW.GTR jsr CheckStackPop4
.9 rts
*--------------------------------------
* : TL BEGIN DUP . 1 - DUP 0 = UNTIL ;
* : TL BEGIN DUP . 1 - DUP 0 = UNTIL ;
*--------------------------------------
KW.EQ jsr CheckStackPop4
bcs .9
@ -569,12 +569,12 @@ KW.EQ jsr CheckStackPop4
tay
bne .1
txa
bne .1
sec
.1 inc pStack
sta (pStack)
@ -592,15 +592,15 @@ KW.ZERO clc
lda (pStack),y
ora (pStack)
bne .9
sec
.9 lda #0
ror
inc pStack
sta (pStack)
* clc
rts
*--------------------------------------
@ -652,7 +652,7 @@ KW.D. >PUSHW L.FMT.int32
>PUSHBI 4
>SYSCALL PrintF
>RET 4
*--------------------------------------
KW.D.R
@ -661,7 +661,7 @@ KW.D.R
rts
*--------------------------------------
KW.CR >PUSHW L.MSG.ECHOCRLF
>PUSHBI 0
>PUSHBI 0
>SYSCALL PrintF
rts
*--------------------------------------
@ -670,13 +670,13 @@ KW.SPACE lda #C.SPACE
rts
*--------------------------------------
KW.SPACES >PULLA
beq .8
.1 dec
pha
lda #C.SPACE
>SYSCALL PutChar
pla
@ -688,38 +688,38 @@ KW.SPACES >PULLA
KW.PRINT >LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPPtr1
phx
ldy #$ff
clc
clc
.1 iny
lda (ZPCLBufPtr),y
beq .2
sta (ZPPtr1),y
eor #'"
bne .1
sec
.2 sta (ZPPtr1),y
tya
tya
adc ZPCLBufPtr
sta ZPCLBufPtr
bcc .3
inc ZPCLBufPtr+1
.3 >LDYA ZPPtr1
>SYSCALL PutS
pla
>SYSCALL FreeMem
.9 rts
*--------------------------------------
KW.DUMP
@ -735,9 +735,9 @@ KW.TERMINAL
*--------------------------------------
KW.KEY >SYSCALL GetChar
bcs .9
>PUSHA
.9 rts
*--------------------------------------
KW.EMIT >PULLA
@ -773,7 +773,7 @@ KW.OCTAL lda #E.SYN
KW.FETCHSP lda pStack+1
ldy pStack
bne .1
inc
.1 >PUSHYA
@ -785,7 +785,7 @@ KW.FETCHW lda (pStack)
ldy #1
lda (pStack),y
sta ZPAddrPtr+1
lda (ZPAddrPtr)
sta (pStack)
lda (ZPAddrPtr),y
@ -836,7 +836,7 @@ KW.CMOVE
*--------------------------------------
KW.FILL >PULLA
bra KW.FILL2
KW.ERASE lda #0
bra KW.FILL2
@ -848,14 +848,14 @@ KW.FILL2 tax
tay
>PULLW ZPAddrPtr
txa
.1 dey
sta (ZPAddrPtr),y
cpy #0
bne .1
clc
rts
*--------------------------------------
@ -866,10 +866,10 @@ KW.HERE >PUSHW ZPDataPtr
KW.PAD >PUSHW ZPOutputBufPtr
clc
rts
KW.ALLOT.9 lda #E.STACKERROR
sec
rts
rts
*--------------------------------------
KW.ALLOT lda #SYM.T.VAR
sta ZPType
@ -879,36 +879,36 @@ KW.ALLOT lda #SYM.T.VAR
cmp #$FF
bcs KW.ALLOT.9
>PUSHB.G hSList
>PUSHW ZPCLBufPtr
>SYSCALL SListNewKey
bcs .9
>STYA ZPKeyID
txa
jsr NextKW
>LDYA ZPDataPtr
>STYA ZPAddrPtr
>PULLA
clc
adc ZPDataPtr
sta ZPDataPtr
>PULLA
adc ZPDataPtr+1
sta ZPDataPtr+1
>PUSHB.G hSList
>PUSHW ZPKeyID
>PUSHWI ZPType
>PUSHWI 4
>SYSCALL SListAddData
.9 rts
*--------------------------------------
KW.nCOMPILE
@ -925,16 +925,16 @@ KW.ASSEMBLER
*--------------------------------------
KW.VLIST stz ZPPtr1
stz ZPPtr1+1
.1 >LDYA ZPPtr1
>STYA ZPKeyID
>PUSHB.G hSList
>PUSHW ZPKeyID
>PUSHW ZPOutputBufPtr
>SYSCALL SListGetByID
bcs .8
>STYA ZPPtr1 Save Next ID
jsr CS.RUN.GetSymbolData
@ -958,13 +958,13 @@ KW.VLIST stz ZPPtr1
>PUSHBI 6
>SYSCALL PrintF
jmp .1
.8 clc
.9 rts
.9 rts
KW.VC.9 lda #E.STACKERROR
sec
rts
rts
*--------------------------------------
KW.VARIABLE lda #SYM.T.VAR
bra KM.VC
@ -978,40 +978,40 @@ KM.VC sta ZPType
cmp #$FF
bcs KW.VC.9
>PUSHB.G hSList
>PUSHW ZPCLBufPtr
>SYSCALL SListNewKey
bcs .9
>STYA ZPKeyID
txa
jsr NextKW
bit ZPType
bvs .1
>PULLW ZPAddrPtr
bra .2
.1 >PULLA
sta (ZPDataPtr)
>PULLA
ldy #1
sta (ZPDataPtr),y
>LDYA ZPDataPtr
>STYA ZPAddrPtr
lda ZPDataPtr
clc
adc #2
sta ZPDataPtr
bcc .2
inc ZPDataPtr+1
.2 >PUSHB.G hSList
@ -1027,18 +1027,18 @@ KW.BCOLON >PUSHB.G hSList
>SYSCALL SListNewKey
bcs .9
>STYA ZPKeyID
txa
jsr NextKW
lda #SYM.T.CODE
sta ZPType
>LDYA ZPCodePtr
>STYA ZPAddrPtr
>PUSHB.G hSList
>PUSHW ZPKeyID
>PUSHWI ZPType

View File

@ -423,7 +423,7 @@ CS.RUN.LOOP >SLEEP
>PUSHA
>PUSHW ZPCLBuf
>SYSCALL GetErrorMessage
>SYSCALL GetErrMsg
>LDYA ZPCLBuf
>SYSCALL PutS
bcc CS.RUN.LOOP

View File

@ -211,8 +211,8 @@ CS.RUN.DUMP >PUSHB IPCFG+S.NETCFG.DevID
>LEA.G DCB.NIC
>STYA.G IOCTL+S.IOCTL.BUFPTR
lda #S.IOCTL.STATCODE.GETDCB
>STA.G IOCTL+S.IOCTL.STATCODE
lda #S.IOCTL.S.GETDCB
>STA.G IOCTL+S.IOCTL.S
>PUSHB IPCFG+S.NETCFG.DevID
>PUSHBI IOCTL.STATUS

View File

@ -97,6 +97,7 @@ CS.RUN >INC.G ArgIndex
>LDYAI 256
>SYSCALL GetMem
bcs .99
>STYA ZPNewPath
txa
>STA.G hSrcNewPath
@ -218,11 +219,12 @@ CS.RUN.FILE jsr FilterMatch
>SYSCALL PrintF
bcs .9
>PUSHW ZPFullPath
jsr CS.RUN.GetNewPath
>PUSHYA
>PUSHW ZPFullPath
>PUSHW ZPNewPath
>SYSCALL Rename
jsr CS.RUN.CheckErr
bra CS.RUN.CheckErr
.8 clc
.9 rts
@ -246,28 +248,30 @@ CS.RUN.CheckErr bcs .1
rts
*--------------------------------------
CS.RUN.GetFilePath
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>LDYA ZPFullPath
>SYSCALL StrCpy
>PUSHW ZPFullPath
>PUSHW ZPFileName
>LDYA ZPFullPath
>SYSCALL StrCat
rts
*--------------------------------------
CS.RUN.GetNewPath
>PUSHW ZPNewPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>LDYA ZPNewPath
>SYSCALL StrCpy
>PUSHW ZPNewPath
>LDYA ZPFileName
>SYSCALL StrLwr
>PUSHW ZPFileName
>LDYA ZPNewPath
>SYSCALL StrCat
rts
*--------------------------------------

View File

@ -278,6 +278,7 @@ CS.RUN.FILE jsr CS.RUN.BuildFilePath
tay
lda Nod.Table.hName-2,y
>SYSCALL GetMemPtr
>PUSHYA
>SYSCALL StrCmp
bcc .8
@ -347,18 +348,15 @@ CS.RUN.CheckErr bcs .1
rts
*--------------------------------------
CS.RUN.BuildFilePath
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>LDYA ZPFullPath
>SYSCALL StrCpy
>PUSHW ZPFullPath
>PUSHW ZPFileName
>LDYA ZPFullPath
>SYSCALL StrCat
rts
*--------------------------------------
CS.RUN.OpenFile >PUSHW ZPFullPath

View File

@ -502,8 +502,8 @@ CMD.REN lda (ZPArgVBufPtr)
lda #0
sta (ZPPtr2),y
>PUSHW ZPPtr2
>PUSHW ZPArgVBufPtr
>LDYA ZPPtr2
>SYSCALL StrCat
lda ZPTmpW
@ -776,6 +776,7 @@ CMD.CASE jsr CORE.StkGetCtx Get context in CORE.TestResult
dey get hVALUE
lda (pData),y
>SYSCALL GetMemPtr
>PUSHYA
>SYSCALL StrCmp
ror CS if !=
and #$80
@ -832,8 +833,8 @@ CMD.FOR jsr CORE.StkGetCtx
jsr CORE.ArgV.Next
beq CMD.E.CSYN
>PUSHW L.IN
>PUSHW ZPArgVBufPtr
>LDYA L.IN
>SYSCALL StrCaseCmp
bcs CMD.E.CSYN

View File

@ -219,29 +219,38 @@ EXP.OP.UNARY.X jsr CMD.CALL.GETFUNC
bra EXP.OP.UNARY.DEF.8 TRUE
*--------------------------------------
EXP.TEST.BINARY lda CORE.Operator
cmp #6 =, !=, <= <, >=, >
bcs EXP.TEST.BINARY.NUM
>LDYA ZPArgVBufPrev
cmp #6
bcc EXP.TEST.BINARY.NUM
>LDYA ZPArgVBufPrev =, !=, <= <, >=, >
>STYA ZPPtr1
jsr CORE.ArgV.Next
beq EXP.TEST.BINARY.ESYN
>PUSHW ZPPtr1
>LDYA ZPArgVBufPtr
>PUSHW ZPArgVBufPtr
>SYSCALL StrCmp
bcs .1 CS if !=
lda #%010 010 str1 = str2
bra EXP.TEST.BINARY.END
bra .3
.1 asl CS if <
bcs .2
lda #%100 010 str1 < str2
bra EXP.TEST.BINARY.END
bra .3
.2 lda #%001 010 str1 > str2
bra EXP.TEST.BINARY.END
.3 ldx CORE.Operator
and EXP.OP.BINARY.BITS-6,x
beq .8 false
lda #$80 true
.8 clc
rts
EXP.TEST.BINARY.ESYN4
jsr IncPStack4
@ -259,26 +268,18 @@ EXP.TEST.BINARY.NUM
jsr EXP.GetInt32Arg
bcs EXP.TEST.BINARY.ESYN4
>FPU CMP32
lda CORE.Operator
* clc
adc #FPU.lL
tax
bmi .4 ACC < ARG
jsr A2osX.FPUCALL
bne .5
lda #%010 010 ACC = ARG
bra EXP.TEST.BINARY.END
.4 lda #%100 100 ACC > ARG
bra EXP.TEST.BINARY.END
.5 lda #%001 001 ACC < ARG
EXP.TEST.BINARY.END
clc
ldx CORE.Operator
and EXP.OP.BINARY.BITS,x
lda (pStack)
beq .8 false
lda #$80 true
.8 rts
.8 >RET 4
*--------------------------------------
EXP.GetInt8Exp jsr EXP.GET
bcc EXP.GetInt8YA

View File

@ -269,7 +269,7 @@ IO.PrintErrMsg ldy #S.PS.RC
>PUSHW ZPCLBuf
>SYSCALL GetErrorMessage
>SYSCALL GetErrMsg
.8 ldy #S.PS.hStdErr
lda (pPS),y

View File

@ -643,45 +643,38 @@ EXP.OP.UNARY .AT "-D"
.AT "-X"
.AT "-Z"
.HS 00
EXP.OP.BINARY .AT "="
EXP.OP.BINARY .AT "-LT"
.AT "-LE"
.AT "-GT"
.AT "-GE"
.AT "-EQ"
.AT "-NE"
.AT "="
.AT "!="
.AT ".<"
.AT "<="
.AT ".>"
.AT ">="
.AT "-EQ"
.AT "-NE"
.AT "-LT"
.AT "-LE"
.AT "-GT"
.AT "-GE"
.HS 00
EXP.OP.MATH .AT "+"
.AT "-"
.AT "*"
EXP.OP.MATH .AT "*"
.AT "/"
.AT "MOD"
.AT "+"
.AT "-"
.HS 00
EXP.OP.LOGIC .AT "AND"
.AT "OR"
.HS 00
*--------------------------------------
EXP.OP.BINARY.BITS
.DA #%010
.DA #%010 strcmp
.DA #%101
.DA #%100
.DA #%110
.DA #%001
.DA #%011
.DA #%010
.DA #%101
.DA #%100
.DA #%110
.DA #%001
.DA #%011
EXP.OP.MATH.FPU .DA #FPU.ADD32,#FPU.SUB32,#FPU.IMUL32,#FPU.IDIV32,#FPU.IMOD32
EXP.OP.MATH.FPU .DA #FPU.lMUL,#FPU.lDIV,#FPU.lMOD,#FPU.lADD,#FPU.lSUB
*--------------------------------------
SET.FLAGS .AS "CXE"
SET.VARS .DA #bSET.C,#bSET.X,#bSET.E

View File

@ -218,11 +218,12 @@ CS.RUN.FILE jsr FilterMatch
>SYSCALL PrintF
bcs .9
>PUSHW ZPFullPath
jsr CS.RUN.GetNewPath
>PUSHYA
>PUSHW ZPFullPath
>PUSHW ZPNewPath
>SYSCALL Rename
jsr CS.RUN.CheckErr
bra CS.RUN.CheckErr
.8 clc
.9 rts
@ -246,28 +247,29 @@ CS.RUN.CheckErr bcs .1
rts
*--------------------------------------
CS.RUN.GetFilePath
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>LDYA ZPFullPath
>SYSCALL StrCpy
>PUSHW ZPFullPath
>PUSHW ZPFileName
>LDYA ZPFullPath
>SYSCALL StrCat
rts
*--------------------------------------
CS.RUN.GetNewPath
>PUSHW ZPNewPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>LDYA ZPNewPath
>SYSCALL StrCpy
>LDYA ZPFileName
>SYSCALL StrUpr
>PUSHW ZPNewPath
>PUSHW ZPFileName
>LDYA ZPNewPath
>SYSCALL StrCat
rts
*--------------------------------------

View File

@ -157,7 +157,7 @@ CS.RUN.ROOT ldy #0
>PUSHW ZPStrPtr
>SYSCALL MD5
>PUSHW ZPStrPtr
>LEA.G PW+S.PW.PASSWD
>PUSHEA.G PW+S.PW.PASSWD
>SYSCALL StrCmp
bcs .99

View File

@ -155,10 +155,12 @@ CS.RUN.RmDir lda bDelete
>SYSCALL Remove
rts
.1 >PUSHW L.CMD.RM
>LDYA ZPStrPtr
.1 >PUSHW ZPStrPtr
>PUSHW L.CMD.RM
>SYSCALL StrCpy
>PUSHW ZPStrPtr
lda pData
clc
adc #S.PW.DIR
@ -166,7 +168,6 @@ CS.RUN.RmDir lda bDelete
lda pData+1
adc /S.PW.DIR
>PUSHYA
>LDYA ZPStrPtr
>SYSCALL StrCat
>PUSHW ZPStrPtr

View File

@ -344,13 +344,14 @@ CS.RUN.CheckErr bcc .9
.9 rts
*--------------------------------------
CS.RUN.GetFilePath
>PUSHW ZPFullPath
>LDA.G hSrcBasePath
>SYSCALL GetMemPtr
>PUSHYA
>LDYA ZPFullPath
>SYSCALL StrCpy
>PUSHW ZPFullPath
>PUSHW ZPFileName
>LDYA ZPFullPath
>SYSCALL StrCat
rts
*--------------------------------------

View File

@ -355,10 +355,10 @@ STATUS >STYA ZPIOCTL
lda (ZPIOCTL),y
sta ZPBasePtr+1
ldy #S.IOCTL.STATCODE
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldy #S.DIB-1
.HS 2C bit abs
@ -370,7 +370,7 @@ STATUS >STYA ZPIOCTL
clc
rts
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
STATUS.DCB cmp #S.IOCTL.S.GETDCB
bne STATUS.9
ldy #S.DCB.GFX-1

View File

@ -156,10 +156,10 @@ DRV.CS.START cld
.DA 0 end or relocation
*--------------------------------------
STATUS jsr STATUS.CONTROL.Init
ldy #S.IOCTL.STATCODE
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldy #S.DIB-1
.HS 2C bit abs
@ -172,7 +172,7 @@ STATUS jsr STATUS.CONTROL.Init
clc
rts
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
STATUS.DCB cmp #S.IOCTL.S.GETDCB
bne .3
ldy #S.DCB.COM-1
@ -183,7 +183,7 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
clc
rts
.3 cmp #S.IOCTL.STATCODE.EOF
.3 cmp #S.IOCTL.S.EOF
bne STATUS.9
lda DIB+S.DIB.S
@ -199,9 +199,9 @@ STATUS.9 lda #MLI.E.BADCTL
*--------------------------------------
CONTROL jsr STATUS.CONTROL.Init
ldy #S.IOCTL.CTRLCODE
ldy #S.IOCTL.C
lda (ZPIOCTL),y
cmp #S.IOCTL.CTRLCODE.SETDCB
cmp #S.IOCTL.C.SETDCB
bne STATUS.9
ldy #S.DCB.COM-1
.2 lda (ZPBufPtr),y

View File

@ -157,10 +157,10 @@ DRV.CS.START cld
.DA 0 end or relocation
*--------------------------------------
STATUS jsr STATUS.CONTROL.Init
ldy #S.IOCTL.STATCODE
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldy #S.DIB-1
.HS 2C bit abs
@ -173,7 +173,7 @@ STATUS jsr STATUS.CONTROL.Init
clc
rts
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
STATUS.DCB cmp #S.IOCTL.S.GETDCB
bne .3
ldy #S.DCB.COM-1
@ -184,7 +184,7 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
clc
rts
.3 cmp #S.IOCTL.STATCODE.EOF
.3 cmp #S.IOCTL.S.EOF
bne STATUS.9
lda DIB+S.DIB.S
@ -200,9 +200,9 @@ STATUS.9 lda #MLI.E.BADCTL
*--------------------------------------
CONTROL jsr STATUS.CONTROL.Init
ldy #S.IOCTL.CTRLCODE
ldy #S.IOCTL.C
lda (ZPIOCTL),y
cmp #S.IOCTL.CTRLCODE.SETDCB
cmp #S.IOCTL.C.SETDCB
bne STATUS.9
ldy #S.DCB.COM-1
.2 lda (ZPBufPtr),y

View File

@ -178,10 +178,10 @@ DRV.CS.START cld
*--------------------------------------
STATUS >STYA ZPIOCTL
ldy #S.IOCTL.STATCODE
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldx #S.DIB-1
@ -204,7 +204,7 @@ STATUS >STYA ZPIOCTL
clc
rts
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
STATUS.DCB cmp #S.IOCTL.S.GETDCB
bne STATUS.9
stz DCB+S.DCB.NIC.LINK

View File

@ -153,10 +153,10 @@ DRV.CS.START cld
.DA 0 end or relocation
*--------------------------------------
STATUS jsr STATUS.CONTROL.Init
ldy #S.IOCTL.STATCODE
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldy #S.DIB-1
.HS 2C bit abs
@ -169,7 +169,7 @@ STATUS jsr STATUS.CONTROL.Init
clc
rts
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
STATUS.DCB cmp #S.IOCTL.S.GETDCB
bne .3
ldy #S.DCB.SND-1
@ -180,7 +180,7 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
clc
rts
.3 cmp #S.IOCTL.STATCODE.EOF
.3 cmp #S.IOCTL.S.EOF
bne STATUS.9
lda DIB+S.DIB.S
@ -195,9 +195,9 @@ STATUS.9 lda #MLI.E.BADCTL
*--------------------------------------
CONTROL jsr STATUS.CONTROL.Init
ldy #S.IOCTL.CTRLCODE
ldy #S.IOCTL.C
lda (ZPIOCTL),y
cmp #S.IOCTL.CTRLCODE.SETDCB
cmp #S.IOCTL.C.SETDCB
bne STATUS.9
ldy #S.DCB.SND-1
.2 lda (ZPBufPtr),y

View File

@ -145,11 +145,11 @@ STATUS >STYA ZPIOCTL
lda (ZPIOCTL),y
sta ZPBufPtr+1
ldy #S.IOCTL.STATCODE
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldy #S.DIB-1

View File

@ -155,10 +155,10 @@ DRV.CS.START cld
.DA 0 end or relocation
*--------------------------------------
STATUS jsr STATUS.CONTROL.Init
ldy #S.IOCTL.STATCODE
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldy #S.DIB-1
.HS 2C bit abs
@ -171,7 +171,7 @@ STATUS jsr STATUS.CONTROL.Init
clc
rts
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
STATUS.DCB cmp #S.IOCTL.S.GETDCB
bne .3
ldy #S.DCB.COM-1
@ -182,7 +182,7 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
clc
rts
.3 cmp #S.IOCTL.STATCODE.EOF
.3 cmp #S.IOCTL.S.EOF
bne STATUS.9
lda DIB+S.DIB.S
@ -198,9 +198,9 @@ STATUS.9 lda #MLI.E.BADCTL
*--------------------------------------
CONTROL jsr STATUS.CONTROL.Init
ldy #S.IOCTL.CTRLCODE
ldy #S.IOCTL.C
lda (ZPIOCTL),y
cmp #S.IOCTL.CTRLCODE.SETDCB
cmp #S.IOCTL.C.SETDCB
bne STATUS.9
ldy #S.DCB.COM-1
.2 lda (ZPBufPtr),y

View File

@ -813,11 +813,11 @@ DRV.CS.START cld
.DA 0 end or relocation
*--------------------------------------
STATUS jsr STATUS.CONTROL.Init
ldy #S.IOCTL.STATCODE
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldy #S.DIB-1
@ -832,7 +832,7 @@ STATUS jsr STATUS.CONTROL.Init
clc
rts
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
STATUS.DCB cmp #S.IOCTL.S.GETDCB
bne .3
ldy #S.DCB.COM-1
@ -844,7 +844,7 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
clc
rts
.3 cmp #S.IOCTL.STATCODE.EOF
.3 cmp #S.IOCTL.S.EOF
bne STATUS.9
lda DIB+S.DIB.S
@ -873,9 +873,9 @@ STATUS.9 lda #MLI.E.BADCTL
*--------------------------------------
CONTROL jsr STATUS.CONTROL.Init
ldy #S.IOCTL.CTRLCODE
ldy #S.IOCTL.C
lda (ZPIOCTL),y
cmp #S.IOCTL.CTRLCODE.SETDCB
cmp #S.IOCTL.C.SETDCB
bne STATUS.9
ldy #S.DCB.COM-1

View File

@ -210,11 +210,11 @@ DRV.CS.START cld
*--------------------------------------
STATUS jsr GET.IOCTLBUFPTR
ldy #S.IOCTL.STATCODE
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldy #S.DIB-1
@ -230,7 +230,7 @@ STATUS jsr GET.IOCTLBUFPTR
clc
rts
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
STATUS.DCB cmp #S.IOCTL.S.GETDCB
bne STATUS.9
ldy #S.DCB.NIC-1
@ -249,9 +249,9 @@ STATUS.9 lda #MLI.E.BADCTL
*--------------------------------------
CONTROL jsr GET.IOCTLBUFPTR
ldy #S.IOCTL.CTRLCODE
ldy #S.IOCTL.C
lda (ZPIOCTL),y
cmp #S.IOCTL.CTRLCODE.SETDCB
cmp #S.IOCTL.C.SETDCB
bne STATUS.9
ldy #S.DCB.NIC-1

View File

@ -191,10 +191,10 @@ DRV.CS.START cld
*--------------------------------------
STATUS >STYA ZPIOCTL
ldy #S.IOCTL.STATCODE
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldx #S.DIB-1
.HS 2C bit abs
@ -213,7 +213,7 @@ STATUS >STYA ZPIOCTL
clc
rts
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
STATUS.DCB cmp #S.IOCTL.S.GETDCB
bne STATUS.9
stz DCB+S.DCB.NIC.LINK

View File

@ -205,11 +205,11 @@ DRV.CS.START cld
*--------------------------------------
STATUS jsr GET.IOCTLBUFPTR
ldy #S.IOCTL.STATCODE
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldy #S.DIB-1
@ -225,7 +225,7 @@ STATUS jsr GET.IOCTLBUFPTR
clc
rts
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
STATUS.DCB cmp #S.IOCTL.S.GETDCB
bne STATUS.9
ldy #S.DCB.NIC-1

View File

@ -256,7 +256,7 @@ SYS.Shift .EQ $68
SYS.ArgV .EQ $6A
SYS.ArgVDup .EQ $6C
* ERROR
SYS.GetErrorMessage .EQ $6E
SYS.GetErrMsg .EQ $6E
* STDLIB
SYS.AToF .EQ $70
SYS.AToI .EQ $72
@ -398,18 +398,18 @@ IOCTL.IRQ .EQ 20
S.IOCTL.CNT .EQ 0
S.IOCTL.UNITNUM .EQ 1
S.IOCTL.BUFPTR .EQ 2
S.IOCTL.STATCODE .EQ 4 1 BYTE
S.IOCTL.STATCODE.STATUS .EQ 0
S.IOCTL.STATCODE.GETDCB .EQ 1
S.IOCTL.STATCODE.GETNL .EQ 2
S.IOCTL.STATCODE.GETDIB .EQ 3
S.IOCTL.STATCODE.EOF .EQ 4
S.IOCTL.CTRLCODE .EQ 4 1 BYTE
S.IOCTL.CTRLCODE.RESET .EQ 0
S.IOCTL.CTRLCODE.SETDCB .EQ 1
S.IOCTL.CTRLCODE.SETNL .EQ 2
S.IOCTL.CTRLCODE.IRQ .EQ 3
S.IOCTL.CTRLCODE.EJECT .EQ 4
S.IOCTL.S .EQ 4 1 BYTE
S.IOCTL.S.STATUS .EQ 0
S.IOCTL.S.GETDCB .EQ 1
S.IOCTL.S.GETNL .EQ 2
S.IOCTL.S.GETDIB .EQ 3
S.IOCTL.S.EOF .EQ 4
S.IOCTL.C .EQ 4 1 BYTE
S.IOCTL.C.RESET .EQ 0
S.IOCTL.C.SETDCB .EQ 1
S.IOCTL.C.SETNL .EQ 2
S.IOCTL.C.IRQ .EQ 3
S.IOCTL.C.EJECT .EQ 4
S.IOCTL.BLKNUM .EQ 4 3 BYTES
S.IOCTL.BYTECNT .EQ 4 2 BYTES
S.IOCTL.ADDRPTR .EQ 6 3 BYTES
@ -476,7 +476,7 @@ S.FD.T.LNK .EQ 8
S.FD.T.DSOCK .EQ 10
S.FD.T.SSOCK .EQ 12
S.FD.T.PIPE .EQ 14
S.FD.HANDLER .EQ 1
S.FD.PFT .EQ 1
*--------------------------------------
S.FD.REG.REF .EQ 2
S.FD.REG.IOBUF .EQ 3
@ -504,7 +504,7 @@ S.FD.DEV .EQ 12
*--------------------------------------
* S.FD.LNK
*--------------------------------------
S.FD.DSOCK.IOHANDLER .EQ 2
S.FD.DSOCK.IOH .EQ 2
S.FD.DSOCK.OPEN .EQ 3
S.FD.DSOCK.CLOSE .EQ 4
S.FD.DSOCK.READ .EQ 5
@ -513,7 +513,7 @@ S.FD.DSOCK.EOF .EQ 7
*
S.FD.DSOCK .EQ 8
*--------------------------------------
S.FD.SSOCK.IOHANDLER .EQ 2
S.FD.SSOCK.IOH .EQ 2
S.FD.SSOCK.OPEN .EQ 3
S.FD.SSOCK.CLOSE .EQ 4
S.FD.SSOCK.READ .EQ 5

View File

@ -1,10 +1,10 @@
NEW
AUTO 3,1
*--------------------------------------
IO.D2.SeekTimeR .EQ 48 LIBBLKDEV Recalibration
IO.D2.SeekTimeF .EQ 48 LIBBLKDEV Track Formatter
IO.D2.SeekTimeB .EQ 48 LIBBLKDEV Boot Block
IO.D2.SeekTimeP .EQ 48 ProDOS.FX initial
IO.D2.SeekTimeR .EQ 68 LIBBLKDEV Recalibration
IO.D2.SeekTimeF .EQ 68 LIBBLKDEV Track Formatter
IO.D2.SeekTimeB .EQ 68 LIBBLKDEV Boot Block
IO.D2.SeekTimeP .EQ 68 ProDOS.FX initial
IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
*--------------------------------------
IO.D2.Ph0Off .EQ $C080

View File

@ -129,53 +129,149 @@ NEW
*--------------------------------------
* FPU Entry Point
*--------------------------------------
FPU.ADD16 .EQ 0
FPU.SUB16 .EQ 2
FPU.MUL16 .EQ 4
FPU.IMUL16 .EQ 6
FPU.DIV16 .EQ 8
FPU.IDIV16 .EQ 10
FPU.MOD16 .EQ 12
FPU.IMOD16 .EQ 14
FPU.CMP16 .EQ 16
FPU.ICMP16 .EQ 18
FPU.wMUL .EQ 0
FPU.wDIV .EQ 2
FPU.wMOD .EQ 4
FPU.wADD .EQ 6
FPU.wSUB .EQ 8
FPU.ADD32 .EQ 20
FPU.SUB32 .EQ 22
FPU.MUL32 .EQ 24
FPU.IMUL32 .EQ 26
FPU.DIV32 .EQ 28
FPU.IDIV32 .EQ 30
FPU.MOD32 .EQ 32
FPU.IMOD32 .EQ 34
FPU.CMP32 .EQ 36
FPU.ICMP32 .EQ 38
FPU.wSHL .EQ 10
FPU.wSHR .EQ 12
FPU.FADD .EQ 40
FPU.FSUB .EQ 42
FPU.FMULT .EQ 44
FPU.FDIV .EQ 46
FPU.PWR .EQ 48
FPU.wL .EQ 14
FPU.wLE .EQ 16
FPU.wG .EQ 18
FPU.wGE .EQ 20
FPU.LOG .EQ 50
FPU.SQR .EQ 52
FPU.EXP .EQ 54
FPU.COS .EQ 56
FPU.SIN .EQ 58
FPU.TAN .EQ 60
FPU.ATAN .EQ 62
FPU.wE .EQ 22
FPU.wNE .EQ 24
FPU.SETARG .EQ 64 fadd.....
FPU.SETFAC .EQ 66 log...., PrintF
FPU.wAND .EQ 26
FPU.wOR .EQ 28
FPU.wxOR .EQ 30
FPU.GETFAC .EQ 68 Copy FAC to (FORPNT)
FPU.FCOMP .EQ 70
FPU.wLAND .EQ 32
FPU.wLOR .EQ 34
*--------------------------------------
FPU.iMUL .EQ 36
FPU.iDIV .EQ 38
FPU.iMOD .EQ 40
FPU.iADD .EQ 42
FPU.iSUB .EQ 44
FPU.LTOF .EQ 72 Float
FPU.QINT .EQ 74 lrintf
FPU.iSHL .EQ 46
FPU.iSHR .EQ 48
FPU.FIN .EQ 76 sscanf
FPU.FOUT .EQ 78 PrintF
FPU.iL .EQ 50
FPU.iLE .EQ 52
FPU.iG .EQ 54
FPU.iGE .EQ 56
FPU.iE .EQ 58
FPU.iNE .EQ 60
FPU.iAND .EQ 62
FPU.iOR .EQ 64
FPU.iXOR .EQ 66
FPU.iLAND .EQ 68
FPU.iLOR .EQ 70
*--------------------------------------
FPU.uMUL .EQ 72
FPU.uDIV .EQ 74
FPU.uMOD .EQ 76
FPU.uADD .EQ 78
FPU.uSUB .EQ 80
FPU.uSHL .EQ 82
FPU.uSHR .EQ 84
FPU.uL .EQ 86
FPU.uLE .EQ 88
FPU.uG .EQ 90
FPU.uGE .EQ 92
FPU.uE .EQ 94
FPU.uNE .EQ 96
FPU.uAND .EQ 98
FPU.uOR .EQ 100
FPU.uXOR .EQ 102
FPU.uLAND .EQ 104
FPU.uLOR .EQ 106
*--------------------------------------
FPU.lMUL .EQ 108
FPU.lDIV .EQ 110
FPU.lMOD .EQ 112
FPU.lADD .EQ 114
FPU.lSUB .EQ 116
FPU.lSHL .EQ 118
FPU.lSHR .EQ 120
FPU.lL .EQ 122
FPU.lLE .EQ 124
FPU.lG .EQ 126
FPU.lGE .EQ 128
FPU.lE .EQ 130
FPU.lNE .EQ 132
FPU.lAND .EQ 134
FPU.lOR .EQ 136
FPU.lXOR .EQ 138
FPU.lLAND .EQ 140
FPU.lLOR .EQ 142
*--------------------------------------
FPU.fMUL .EQ 144
FPU.fDIV .EQ 146
FPU.fMOD .EQ 148
FPU.fADD .EQ 150
FPU.fSUB .EQ 152
FPU.fSHL .EQ 154
FPU.fSHR .EQ 156
FPU.fL .EQ 158
FPU.fLE .EQ 160
FPU.fG .EQ 162
FPU.fGE .EQ 164
FPU.fE .EQ 166
FPU.fNE .EQ 168
FPU.fAND .EQ 170
FPU.fOR .EQ 172
FPU.fXOR .EQ 174
FPU.fLAND .EQ 176
FPU.fLOR .EQ 178
*--------------------------------------
* math.h
*--------------------------------------
FPU.PWR .EQ 180
*--------------------------------------
FPU.LOG .EQ 182
FPU.SQR .EQ 184
FPU.EXP .EQ 186
FPU.COS .EQ 188
FPU.SIN .EQ 190
FPU.TAN .EQ 192
FPU.ATAN .EQ 194
FPU.SETARG .EQ 196 fadd.....
FPU.SETFAC .EQ 198 log...., PrintF
FPU.GETFAC .EQ 200 Copy FAC to (FORPNT)
FPU.FCOMP .EQ 202
FPU.LTOF .EQ 204 Float
FPU.QINT .EQ 206 lrintf
FPU.FIN .EQ 208 sscanf
FPU.FOUT .EQ 210 PrintF
*--------------------------------------
.MA FPU
ldx #FPU.]1

View File

@ -2,12 +2,12 @@ NEW
AUTO 3,1
int fastcall strlen(char*);
// char* strcat(char*,const char*);
// char* strcpy(char*,const char*);
char* strcat(char*,const char*);
char* strcpy(char*,const char*);
char* fastcall strdup (char*);
char* fastcall strupr (char*);
char* fastcall strlwr (char*);
// int strcmp(const char *s1, const char *s2);
// int strcasecmp(const char *s1, const char *s2);
int strcmp(const char*,const char*);
int strcasecmp(const char*,const char *);
MAN
TEXT include/string.h

View File

@ -10,8 +10,8 @@ WND.Init >PUSHBI 0
>LDYA L.DCB.GFX
>STYA IOCTL+S.IOCTL.BUFPTR
lda #S.IOCTL.STATCODE.GETDCB
sta IOCTL+S.IOCTL.STATCODE
lda #S.IOCTL.S.GETDCB
sta IOCTL+S.IOCTL.S
>PUSHB WND.Screen+S.OBJ.hPARENT
>PUSHBI IOCTL.STATUS

View File

@ -37,8 +37,8 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
>LDYA L.DCB.NIC
>STYA IOCTL+S.IOCTL.BUFPTR
lda #S.IOCTL.STATCODE.GETDCB
sta IOCTL+S.IOCTL.STATCODE
lda #S.IOCTL.S.GETDCB
sta IOCTL+S.IOCTL.S
ldx #IOCTL.STATUS
jsr CFG.SET.IOCTL
@ -51,8 +51,8 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
dex
bpl .4
lda #S.IOCTL.CTRLCODE.SETDCB
sta IOCTL+S.IOCTL.CTRLCODE
lda #S.IOCTL.C.SETDCB
sta IOCTL+S.IOCTL.C
ldx #IOCTL.CONTROL
jsr CFG.SET.IOCTL

View File

@ -265,6 +265,7 @@ DNS.FIND.BY.NAME
ldy #S.DNSCACHE.hNAME
lda (ZPCachePtr),y
>SYSCALL2 GetMemPtr
>PUSHYA
>SYSCALL2 StrCaseCmp
plx
bcc .8

View File

@ -1,6 +1,6 @@
NEW
AUTO 3,1
.LIST ON
.LIST OFF
.OP 65C02
.OR $2000
.TF lib/string.o
@ -12,12 +12,20 @@ NEW
*--------------------------------------
>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
@ -25,7 +33,15 @@ CODE.strlen .DA #CODE.strlen.L
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
@ -42,7 +58,15 @@ CODE.strlwr .DA #CODE.strlwr.L
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

View File

@ -711,26 +711,26 @@ XRW.TrackSelect lda #2
lda XRW.ReqTrack
bcc .50
* lsr Track 160 -> 80+Carry
* pha
lsr Track 160 -> 80+Carry
pha
* lda #0 Carry = Head
lda #0 Carry = Head
* rol
* rol A = 0/2
rol
rol A = 0/2
* ora A2L
* tay y = n0/n2
ora A2L
tay y = n0/n2
* lda IO.D2.Ph0On,y
* lda IO.D2.Ph0On+4,y
lda IO.D2.Ph0On,y
lda IO.D2.Ph0On+4,y
* jsr XRW.Wait100usec
jsr XRW.Wait100usec
* lda IO.D2.Ph0Off,y
* lda IO.D2.Ph0Off+4,y
lda IO.D2.Ph0Off,y
lda IO.D2.Ph0Off+4,y
* pla
pla
.50 sta XRW.ReqTrack2

View File

@ -621,10 +621,12 @@ CS.RUN.REQ.GET ldy #0
cmp #'/'
bne .4
>PUSHEA.G REQ.FullPath
>PUSHW ZPRootDirPtr
>LEA.G REQ.FullPath
>SYSCALL StrCpy
>PUSHEA.G REQ.FullPath
ldy #1
lda (ZPPtr2),y
bne .2
@ -635,7 +637,6 @@ CS.RUN.REQ.GET ldy #0
.2 >LDYA ZPPtr2
.3 >PUSHYA
>LEA.G REQ.FullPath
>SYSCALL StrCat
rts

View File

@ -112,8 +112,8 @@ CS.INIT.DEV >PUSHBI 0
>LDYA L.DCB.NIC
>STYA IOCTL+S.IOCTL.BUFPTR
lda #S.IOCTL.STATCODE.GETDCB
sta IOCTL+S.IOCTL.STATCODE
lda #S.IOCTL.S.GETDCB
sta IOCTL+S.IOCTL.S
>PUSHB DevID
>PUSHBI IOCTL.STATUS

View File

@ -393,18 +393,23 @@ CS.RUN.REG jsr CS.RUN.REG.MSG
>PUSHYA
ldy #hDstBasePath
jsr CS.RUN.GetPathY
>PUSHYA
>SYSCALL StrCaseCmp
bcs .3 not same dir, go copy/delete
jsr CS.RUN.Rename
jsr CS.RUN.CheckErr
bcs .9
jmp CS.RUN.NEXT
.FIN
.3 jsr CS.RUN.CopyStart
bcc .4
jsr CS.RUN.CheckErr
bcs .9
jmp CS.RUN.NEXT
.FIN
@ -624,38 +629,48 @@ CS.RUN.CheckErr bcs .1
rts
*--------------------------------------
CS.RUN.BuildFilePath
ldy #hSrcBasePath
jsr CS.RUN.GetPathY
>PUSHYA
ldy #hSrcFullPath
jsr CS.RUN.GetPathY
>STYA ZPPtr1
>SYSCALL StrCpy
>PUSHYA
>PUSHW ZPFileName
>LDYA ZPPtr1
>SYSCALL StrCat
.DO X.COPY.TO.DEST=1
ldy #hDstBasePath
ldy #hSrcBasePath
jsr CS.RUN.GetPathY
>PUSHYA
>SYSCALL StrCpy
>PUSHW ZPPtr1
>PUSHW ZPFileName
>SYSCALL StrCat
.DO X.COPY.TO.DEST=1
ldy #hDstFullPath
jsr CS.RUN.GetPathY
>STYA ZPPtr1
>PUSHYA
ldy #hDstBasePath
jsr CS.RUN.GetPathY
>PUSHYA
>SYSCALL StrCpy
>PUSHW ZPPtr1
ldy #hDstFileName
lda (pData),y
beq .1
>SYSCALL GetMemPtr
>PUSHYA
bra .2
.1 >PUSHW ZPFileName
.2 >LDYA ZPPtr1
>SYSCALL StrCat
.2 >SYSCALL StrCat
.FIN
rts
*--------------------------------------

View File

@ -484,8 +484,9 @@ EnterSubDirY lda (pData),y
>STYA ZPPtr1 save full path
jsr .1 Make sure ending with /
>PUSHW ZPPtr1
>PUSHW ZPPtr2
>LDYA ZPPtr1
>SYSCALL StrCat
.1 jsr GetPtr1Len

View File

@ -404,11 +404,11 @@ DRV.CS.START cld
.DA 0 end or relocation
*--------------------------------------
STATUS jsr STATUS.CONTROL.Init
ldy #S.IOCTL.STATCODE
ldy #S.IOCTL.S
lda (ZPIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
cmp #S.IOCTL.S.GETDIB
bne STATUS.DCB
ldy #S.DIB-1
@ -423,7 +423,7 @@ STATUS jsr STATUS.CONTROL.Init
clc
rts
STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
STATUS.DCB cmp #S.IOCTL.S.GETDCB
bne .3
ldy #S.DCB.COM-1
@ -436,7 +436,7 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
clc
rts
.3 cmp #S.IOCTL.STATCODE.EOF
.3 cmp #S.IOCTL.S.EOF
bne STATUS.9
lda DIB+S.DIB.S
@ -473,9 +473,9 @@ STATUS.9 lda #MLI.E.BADCTL
*--------------------------------------
CONTROL jsr STATUS.CONTROL.Init
ldy #S.IOCTL.CTRLCODE
ldy #S.IOCTL.C
lda (ZPIOCTL),y
cmp #S.IOCTL.CTRLCODE.SETDCB
cmp #S.IOCTL.C.SETDCB
bne STATUS.9
ldy #S.DCB.COM-1

View File

@ -21,7 +21,7 @@ K.Shift jsr K.ArgV
lda (ZPPtr1),y
bne .1
.2 jsr SHARED.AddYp1ToPtr1
.2 jsr SHARED.AddYp12P1
ldy #$ff
@ -33,7 +33,7 @@ K.Shift jsr K.ArgV
tya
beq .8
jsr SHARED.AddYp1ToPtr2
jsr SHARED.AddYp12P2
bra .2
.8 ldy #S.PS.ARGC
@ -63,10 +63,10 @@ K.ArgV tax save requested arg#
beq .9 yes, not found....
dex
bmi .7
.3 jsr SHARED.GetCharPtr2 skip str
.3 jsr SHARED.GetCP2 skip str
bne .3
jsr SHARED.NextCharPtr2 skip \0
jsr SHARED.NextCP2 skip \0
bra .1
.7 >LDYA ZPPtr2
@ -99,7 +99,7 @@ K.Arg2ArgV >PULLW ZPPtr2 Get target buffer
ldx #0 Arg Count
ldy #0 bInQuote
.1 jsr SHARED.GetCharPtr1
.1 jsr SHARED.GetCP1
beq .8
cmp #C.SPACE
@ -120,18 +120,18 @@ K.Arg2ArgV >PULLW ZPPtr2 Get target buffer
inx Found one arg !!!
lda #0 set this token End
jsr SHARED.PutCharPtr2
jsr SHARED.PutCP2
bra .1
.4 lda #C.SPACE
.6 jsr SHARED.PutCharPtr2
.6 jsr SHARED.PutCP2
.7 jsr SHARED.GetCharPtr1
.7 jsr SHARED.GetCP1
bne .2
inx
.8 jsr SHARED.PutCharPtr2 set Argv[x] Ending 0
.8 jsr SHARED.PutCP2 set Argv[x] Ending 0
sta (ZPPtr2) set Array Ending 0
phx
@ -182,15 +182,7 @@ K.ArgVDup >STYA ZPPtr1
>STYA ZPPtr2
phx
jsr ARG.Ptr1Ptr2cpy
txa Count
plx hMem
clc
.9 rts
*--------------------------------------
ARG.Ptr1Ptr2cpy ldx #0
ldx #0
ldy #0
.4 lda (ZPPtr1),y
@ -215,7 +207,12 @@ ARG.Ptr1Ptr2cpy ldx #0
.7 lda (ZPPtr1),y
sta (ZPPtr2),y Ending \0 ?
bne .5
rts
txa Count
plx hMem
clc
.9 rts
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.arg

View File

@ -172,7 +172,7 @@ BIN.Load.1 >PUSHWI K.Buf256
>PUSHYA Push AUXTYPE
jsr K.LoadFile
bcs BIN.Load.Free.RTS Error Loading file
bcs .9 Error Loading file
stx BIN.hMem save hMem
@ -189,7 +189,7 @@ BIN.Load.1 >PUSHWI K.Buf256
jsr K.GetMemPtr
>STYA ZPPtr1 set ZPPtr1 -> New Code start
jsr BIN.ComputeOffsetYA YA = actual load address
jsr BIN.CompOfsYA YA = actual load address
jsr Mem.SetOwnerPS0 this CS is owned by PS 0
@ -199,7 +199,7 @@ BIN.Load.1 >PUSHWI K.Buf256
iny
lda (ZPPtr1),y
ply
jsr BIN.ComputeCSEndYA
jsr BIN.CompCSEndYA
jsr BIN.RelExe
>LDYAI K.Buf256 get back bin path
@ -221,14 +221,14 @@ BIN.Load.1 >PUSHWI K.Buf256
clc
jmp MEM.GetMEMPTR ...and Y,A=PTR to CS
.9 rts
BIN.Load.Free php
pha
lda BIN.hMem
jsr K.FreeMem
pla
plp
BIN.Load.Free.RTS
rts Discard Loaded Code, exits CS
*/--------------------------------------
* # InsDrv
@ -247,7 +247,7 @@ BIN.Load.Free.RTS
K.InsDrv >STYA ZPPtr3 SRC PTR for move
>PULLW BIN.R.CS.Start
>PULLYA DRV.CS.SIZE
jsr BIN.ComputeCSEndYA
jsr BIN.CompCSEndYA
>PULLA BIN.R.End
sta BIN.R.End
sec
@ -265,7 +265,7 @@ K.InsDrv >STYA ZPPtr3 SRC PTR for move
>STYA ZPPtr4 ...for move...
sty .7+1 ...and for exit
sta .8+1
jsr BIN.ComputeOffsetYA
jsr BIN.CompOfsYA
lda BIN.R.Size
eor #$ff
@ -305,20 +305,20 @@ BIN.RelExe ldy #H.BIN.T+1
rts
.1 ldy #H.BIN.JMP relocate Main JMP
jsr BIN.RelocateAtPtr1Y
jsr BIN.RelAtPtr1Y
ldy #H.BIN.EXE.REL.TABLE skip Header, CS.SIZE & DS.SIZE... (16 bytes)
ldy #16 skip Header, CS.SIZE & DS.SIZE... (16 bytes)
.HS 2C bit abs
*--------------------------------------
BIN.RelDrv ldy #H.BIN.DRV.REL.TABLE
BIN.RelDrv ldy #2 start after CLD JMP
.1 iny
lda (ZPPtr1),y HI in A
beq .2 $00xx = end of table
dey
jsr BIN.RelocateAtPtr1Y
jsr BIN.RelAtPtr1Y
iny
bne .1
@ -327,7 +327,7 @@ BIN.RelDrv ldy #H.BIN.DRV.REL.TABLE
bra .1
*--------------------------------------
.2 jsr SHARED.AddYp1ToPtr1 add current offset in Y to Ptr
.2 jsr SHARED.AddYp12P1 add current offset in Y to Ptr
* + 1 to skip last 00 from beq .2
* ZPPtr1=Current Code PTR
lda BIN.R.CS.End
@ -353,11 +353,11 @@ BIN.RelDrv ldy #H.BIN.DRV.REL.TABLE
and #7 save Opcode length...
pha
ldy #1
jsr BIN.RelocateAtPtr1Y
jsr BIN.RelAtPtr1Y
pla get back Opcode length...
.5 tay A = OPCODE length
jsr SHARED.AddYToPtr1
jsr SHARED.AddY2P1
.6 cmp BIN.R.Stop A = ZPPtr1
bne .3
@ -369,8 +369,7 @@ BIN.RelDrv ldy #H.BIN.DRV.REL.TABLE
clc Make sure exit with CC
rts
*-------------------------------------- YA = CS Size
BIN.ComputeCSEndYA
pha
BIN.CompCSEndYA pha
tya
clc
adc BIN.R.CS.Start
@ -380,8 +379,7 @@ BIN.ComputeCSEndYA
sta BIN.R.CS.End+1
rts
*-------------------------------------- YA = Target Address
BIN.ComputeOffSetYA
pha
BIN.CompOfsYA pha
tya
sec
sbc BIN.R.CS.Start
@ -391,8 +389,7 @@ BIN.ComputeOffSetYA
sta BIN.R.Offset+1
rts
*--------------------------------------
BIN.RelocateAtPtr1Y
lda (ZPPtr1),y Get LO
BIN.RelAtPtr1Y lda (ZPPtr1),y Get LO
tax save LO in X
iny make Y point to HI
lda (ZPPtr1),y Get HI

View File

@ -1,18 +1,19 @@
NEW
AUTO 3,1
*--------------------------------------
ZPBLISTXIBlkPtr .EQ ZPMEMMGR+12
ZPBLISTXDBlkPtr .EQ ZPMEMMGR+14
IBlkPtr .EQ ZPMEMMGR+12
DBlkPtr .EQ ZPMEMMGR+14
*--------------------------------------
BLISTX.BytePtr .BS 1
BLISTX.BlockPtr .BS 1
KeyID .EQ *
iByte .BS 1
iBlk .BS 1
*--------------------------------------
BLISTX.New >LDYAI 128 32k Max before out of memory!!!
ldx #S.MEM.F.INIT0+8 index
jsr MEM.GetMem.YAX
bcs .9
>STYA ZPBLISTXIBlkPtr
>STYA IBlkPtr
stx .8+1
>LDYAI 256
@ -20,12 +21,12 @@ BLISTX.New >LDYAI 128 32k Max before out of memory!!!
jsr MEM.GetMem.YAX
bcs .9
>STYA ZPBLISTXDBlkPtr
>STYA DBlkPtr
lda #0
sta (ZPBLISTXDBlkPtr)
sta (DBlkPtr)
txa
sta (ZPBLISTXIBlkPtr)
sta (IBlkPtr)
.8 lda #$ff SELF MODIFIED
.9 rts
@ -47,23 +48,21 @@ BLISTX.Free pha
.8 pla
jmp K.FreeMem
*--------------------------------------
BLISTX.GetNextByte
ldy BLISTX.BytePtr
lda (ZPBLISTXDBlkPtr),y
BLISTX.ToNextByte
inc BLISTX.BytePtr
BLISTX.GetNByte ldy iByte
lda (DBlkPtr),y
BLISTX.2NByte inc iByte
bne .8
pha
jsr BLISTX.ToNextBlock
jsr BLISTX.2NBlk
pla
.8 rts
*--------------------------------------
BLISTX.AddDataByte
phy
ldy BLISTX.BytePtr
sta (ZPBLISTXDBlkPtr),y
inc BLISTX.BytePtr
BLISTX.AddByte phy
ldy iByte
sta (DBlkPtr),y
inc iByte
bne .8
phx
@ -72,13 +71,13 @@ BLISTX.AddDataByte
jsr MEM.GetMem.YAX
bcs .9
>STYA ZPBLISTXDBlkPtr
>STYA DBlkPtr
txa
inc BLISTX.BlockPtr
ldy BLISTX.BlockPtr
sta (ZPBLISTXIBlkPtr),y
inc iBlk
ldy iBlk
sta (IBlkPtr),y
* stz BLISTX.BytePtr
* stz iByte
plx
.8 ply
@ -89,20 +88,18 @@ BLISTX.AddDataByte
ply
rts
*--------------------------------------
BLISTX.SetBlockByte
ldy BLISTX.BytePtr
sta (ZPBLISTXDBlkPtr),y
inc BLISTX.BytePtr
bne BLISTX.ToNextBlock.RTS
BLISTX.SetBlkByte
ldy iByte
sta (DBlkPtr),y
inc iByte
bne BLISTX.RTS
*--------------------------------------
BLISTX.ToNextBlock
inc BLISTX.BlockPtr
ldy BLISTX.BlockPtr
lda (ZPBLISTXIBlkPtr),y
BLISTX.2NBlk inc iBlk
ldy iBlk
lda (IBlkPtr),y
jsr K.GetMemPtr
>STYA ZPBLISTXDBlkPtr
BLISTX.ToNextBlock.RTS
rts
>STYA DBlkPtr
BLISTX.RTS rts
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.blistx

View File

@ -337,10 +337,12 @@ CORE.Dispatch ldx #1 skip PS0
* X unmodified
*--------------------------------------
CORE.GetPSByID jsr CORE.GetPS
bcs CORE.GetPS.RTS
bcs .9
lda PS.TABLE.hPS,y
jmp K.GetMemPtr
.9 rts
*--------------------------------------
* X,A unmodified
*--------------------------------------
@ -362,7 +364,7 @@ CORE.GetPS tay
rts
.8 clc
CORE.GetPS.RTS rts
rts
*--------------------------------------
*CORE.DumpEvent ldy #S.EVT-1
*.1 >PUSHB (pEvent),y
@ -470,35 +472,6 @@ CORE.PSResume sei
inc IRQ.InKernel
rti
*--------------------------------------
GP.RomCall.JmpX jmp (.1-FPU.FADD,x)
*--------------------------------------
* http://www.txbobsc.com/scsc/scdocumentor/E7A0.html
*--------------------------------------
.1 .DA $E7C1 FADDT
.DA $E7AA FSUBT
.DA $E987 FMULTT.1
.DA $EA6B FDIVT+2
.DA $EE97 FPWRT
.DA $E941 LOG
.DA $EE8D SQR
.DA $EF09 EXP
.DA $EFEA COS
.DA $EFF1 SIN
.DA $F03A TAN
.DA $F09E ATN
*--------------------------------------
.DA $E9E3 LOAD.ARG.FROM.YA
.DA $EAF9 LOAD.FAC.FROM.YA
.DA $EB27 SETFOR (GETFAC)
.DA $EBB2 FCOMP (Y,A with FAC)
.DA $E82E NORMALIZE.FAC.2 (L->F)
.DA $EBF2 QINT (F->L)
.DA $EC4A FIN AToF
.DA $ED36 FOUT.1 PrintF
*--------------------------------------
CORE.VBLState .BS 1
CORE.TickPerSec .BS 1
CORE.TickPer10t .BS 1

View File

@ -9,13 +9,12 @@ C1 .EQ Mem.MHiMem
C2 .EQ Mem.XLoMem
C3 .EQ Mem.XHiMem
*--------------------------------------
C4 .EQ A2osX.GP.SC
C5 .EQ A2osX.AUX.S
C4 .EQ GP.CE-GP.CS
C5 .EQ AUX.S
*--------------------------------------
C6 .EQ A2osX.D1.S
C7 .EQ A2osX.D2.S
C8 .EQ A2osX.E0.S
C9 .EQ DevMgr.FreeMem
C6 .EQ D1.S
C7 .EQ D2.S
C8 .EQ E0.S
*--------------------------------------
.LIST OFF
.DO Mem.MLoMem>$2000
@ -28,17 +27,17 @@ C9 .EQ DevMgr.FreeMem
* ERROR:AUX too big
.LIST OFF
.FIN
.DO A2osX.GP.SC>$1D0
.DO C4>$1D0
.LIST ON
* ERROR:GP too big
.LIST OFF
.FIN
.DO A2osX.D1.S>$1000
.DO D1.S>$1000
.LIST ON
* ERROR:BNK1 too big
.LIST OFF
.FIN
.DO A2osX.D2.S>$1000
.DO D2.S>$1000
.LIST ON
* ERROR:BNK2 too big
.LIST OFF

View File

@ -119,10 +119,10 @@ IO.hFD .BS 1
IO.hDevNod .BS 1
.ED
*--------------------------------------
A2osX.SaveSM .EQ $100 Aux
A2osX.SaveSX .EQ $101 Aux
A2osX.NumStrLen .EQ $102 Aux
A2osX.NumStrBuf .EQ $103 Aux
SaveSM .EQ $100 Aux
SaveSX .EQ $101 Aux
*FOUTBufPtr .EQ $102 Aux
FOUTBuf .EQ $103 Aux
*--------------------------------------
* Main $200 -> 2FF : (Used By ProDOS,Clock DRV....)
* Main $300 -> 3EF : <free>
@ -186,21 +186,15 @@ H.BIN.CS.SIZE .EQ 8
H.BIN.DS.SIZE .EQ 10
H.BIN.SS.SIZE .EQ 12
H.BIN.ZP.SIZE .EQ 13
*
H.BIN.EXE.REL.TABLE .EQ 16
*
H.BIN.DRV.REL.TABLE .EQ 2 Including main jmp
*--------------------------------------
TTY.BUF.SIZE .EQ 80*24
*--------------------------------------
S.DCB.TTY.DEVID .EQ 0
S.DCB.TTY.STATUS .EQ 1
S.DCB.TTY.MODE .EQ 2
S.DCB.TTY.MODE.ESC .EQ 2
S.DCB.TTY.MODE.CSI .EQ 4
S.DCB.TTY.MODE.IAC .EQ 6
S.DCB.TTY.MODE.G0 .EQ 8
S.DCB.TTY.MODE.G1 .EQ 10
S.DCB.TTY.S .EQ 1
S.DCB.TTY.M .EQ 2
S.DCB.TTY.M.ESC .EQ 2
S.DCB.TTY.M.CSI .EQ 4
S.DCB.TTY.M.IAC .EQ 6
S.DCB.TTY.M.G0 .EQ 8
S.DCB.TTY.M.G1 .EQ 10
S.DCB.TTY.CH .EQ 3
S.DCB.TTY.CH.SAVE .EQ 4
S.DCB.TTY.CV .EQ 5

View File

@ -59,7 +59,7 @@ K.GetDevByName >STYA ZPPtr1 requested dev name
lda Nod.Table.hFD-2,x
jsr K.GetMemPtr Y,A = pPD, X = hDevNod
>STYA pFD for UNISTD.Open
>STYA pFD for IO.Open
* clc
rts
@ -107,10 +107,10 @@ K.GetDevStatus >PULLW K.S.IOCTL+S.IOCTL.BUFPTR
jsr DEV.GetPFD
bcs K.GetDev.9
lda #S.IOCTL.STATCODE.GETDIB
lda #S.IOCTL.S.GETDIB
*--------------------------------------
DEV.GetDevStatus
sta K.S.IOCTL+S.IOCTL.STATCODE
sta K.S.IOCTL+S.IOCTL.S
ldy #S.FD.DEV.DEVID
lda (pFD),y
@ -132,8 +132,7 @@ DEV.pDrvJmp jmp (pDrv)
* ## RETURN VALUE
* A = hDEV
*\--------------------------------------
K.MKDev >PULLW ZPPtr2 ptr2=name
>PULLW ZPPtr1 ptr1=fd
K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd
ldx #1
@ -193,7 +192,7 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
jsr DEV.GetPDrv
lda #S.IOCTL.STATCODE.STATUS
lda #S.IOCTL.S.STATUS
jsr DEV.GetDevStatus
bcs .99

View File

@ -49,7 +49,7 @@ K.ReadDir.hBuf .BS 1
.ED
*--------------------------------------
K.ReadDir jsr PFT.CheckNodeA
bcs K.ReadDir.RTS
bcs DIRENT.RTS
ldy #S.FD.REG.REF
lda (pFD),y
@ -60,14 +60,14 @@ K.ReadDir jsr PFT.CheckNodeA
jmp K.ReadDir.DEV
.1 jmp K.ReadDir.DIR
K.ReadDir.NoMore
lda #MLI.E.EOF
DIRENT.EOF lda #MLI.E.EOF
sec
K.ReadDir.RTS rts
DIRENT.RTS rts
*--------------------------------------
K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ?
lda (pFD),y
bne K.ReadDir.NoMore
bne DIRENT.EOF
stz K.MLI.PARAMS+1 All Volumes
>LDYAI K.Buf256
@ -75,12 +75,12 @@ K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ?
>STYA ZPPtr2
>MLICALL MLIONLINE
bcs K.ReadDir.RTS
bcs DIRENT.RTS
>LDYAI 16+S.STAT*18+1 14*(Vols+Stat) + 4*(PFT+Stat) + \0
jsr K.ReadDir.GetBufYA
bcs K.ReadDir.RTS
bcs DIRENT.RTS
lda #16
sta K.ReadDir.EC
@ -186,8 +186,7 @@ K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ?
sta (pFD),y Flag that we returned something for next time
jmp K.ReadDir.EXIT
*--------------------------------------
K.ReadDir.DEV
jmp K.ReadDir.NoMore
K.ReadDir.DEV jmp DIRENT.EOF TODO : /dev
*--------------------------------------
K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF

View File

@ -11,12 +11,11 @@ DRV.DiskII cld
>STYA pIOCTL
jmp (.1,x)
.1 .DA DRV.DiskII.STATUS
.1 .DA DRV.DiskII.S
.DA DRV.BLK READ
.DA DRV.BLK WRITE
*--------------------------------------
DRV.DiskII.STATUS
>LDYAI DRV.DiskII.DIB
DRV.DiskII.S >LDYAI DRV.DiskII.DIB
jmp DRV.STATUS.YA
*--------------------------------------
DRV.DiskII.DIB .DA #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ
@ -37,15 +36,15 @@ DRV.RamDrive cld
bcs DRV.RamDrive.9
>STYA pIOCTL
jmp (.1,x)
.1 .DA DRV.RamDrive.STATUS
.1 .DA DRV.RamDrive.S
.DA DRV.BLK READ
.DA DRV.BLK WRITE
.DA DRV.BLK FORMAT
DRV.RamDrive.9 jmp A2osX.BadCall
*--------------------------------------
DRV.RamDrive.STATUS
jsr DRV.Blk
DRV.RamDrive.S jsr DRV.Blk
bcs .9
stx DRV.RamDrive.DIB+S.DIB.SIZE
sty DRV.RamDrive.DIB+S.DIB.SIZE+1
>LDYAI DRV.RamDrive.DIB
@ -70,14 +69,14 @@ DRV.BlkDev cld
bcs DRV.RamDrive.9
>STYA pIOCTL
jmp (.1,x)
.1 .DA DRV.BlkDev.STATUS
.1 .DA DRV.BlkDev.S
.DA DRV.BLK READ
.DA DRV.BLK WRITE
.DA DRV.BLK FORMAT
*--------------------------------------
DRV.BlkDev.STATUS
jsr DRV.Blk
DRV.BlkDev.S jsr DRV.Blk
bcs .9
stx DRV.BlkDev.DIB+S.DIB.SIZE
sty DRV.BlkDev.DIB+S.DIB.SIZE+1
@ -190,7 +189,7 @@ DRV.SmartPort.Cnt
DRV.NULL cld
>STYA pIOCTL
txa
beq DRV.NULL.STATUS
beq DRV.NULL.S
jmp (.1-12,x)
*--------------------------------------
.1
@ -202,7 +201,7 @@ DRV.NULL cld
* .DA A2osX.BADCALL INIT
.DA DRV.CLCRTS OPEN
.DA DRV.CLCRTS CLOSE
.DA DRV.NULL.READ
.DA DRV.NULL.R
.DA DRV.CLCRTS WRITE
*--------------------------------------
DRV.NULL.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ+S.DIB.S.OPENED
@ -213,15 +212,15 @@ DRV.NULL.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ+S.DIB.S.OPENED
.DA #0
.DA K.VER
*--------------------------------------
DRV.NULL.STATUS >LDYAI DRV.NULL.DIB
DRV.NULL.S >LDYAI DRV.NULL.DIB
*--------------------------------------
DRV.STATUS.YA >STYA .2+1
ldy #S.IOCTL.STATCODE
ldy #S.IOCTL.S
lda (pIOCTL),y
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
cmp #S.IOCTL.S.GETDIB
bne .9
ldx #S.DIB-1
@ -247,7 +246,7 @@ DRV.STATUS.YA >STYA .2+1
sec
rts
*--------------------------------------
DRV.NULL.READ ldx #C.EOF
DRV.NULL.R ldx #C.EOF
ldy #S.IOCTL.BYTECNT
lda #1

View File

@ -14,7 +14,7 @@ ENVX.PutEnv sta ENVX.hEnv
ldy #$ff
.1 iny
jsr SHARED.TXTPTR.GetY NAME=
jsr SHARED.TXTPTRgY NAME=
beq ENVX.PutEnv.9
cmp #'='
@ -51,7 +51,7 @@ ENVX.SetEnv.I
.15 ldy #$ff
.16 iny
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
beq .17
jsr SHARED.IsIDValid
@ -62,7 +62,7 @@ ENVX.SetEnv.I
ldy #$ff
.19 iny
jsr SHARED.FORPNT.getY
jsr SHARED.FORPNTgY
bne .19
jsr ENVX.NextEnvP4Y ZPPtr4 = ENVSIZE + VALUE
@ -115,7 +115,7 @@ ENVX.SetEnv.I
.22 ldy #$ff
.23 iny
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
sta (ZPPtr3),y
beq .24
jsr SHARED.IsIDValid
@ -128,7 +128,7 @@ ENVX.SetEnv.I
ldy #$ff
.25 iny
jsr SHARED.FORPNT.getY
jsr SHARED.FORPNTgY
sta (ZPPtr3),y
bne .25
@ -192,7 +192,7 @@ ENVX.GetEnv sta ENVX.hEnv
.4 iny
lda (ZPPtr3),y
jsr SHARED.FORPNT.PutY
jsr SHARED.FORPNTpY
bne .4
>LDYA FORPNT
@ -236,7 +236,7 @@ ENVX.FindEnvVar jsr ENVX.InitEnvP3 Store ENV
ldy #$ff
.2 iny
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
beq .3
jsr SHARED.IsIDValid
@ -270,7 +270,7 @@ ENVX.FindSIDVar >LDYAI ENVX.SIDVars
ldy #$ff
.2 iny
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
beq .3
jsr SHARED.IsIDValid
@ -348,7 +348,7 @@ ENVX.SIDVarsGID ldx #S.SESSION.GID
jsr MATH.A2STR10NP
>LDYAI A2osX.NumStrBuf
>LDYAI FOUTBuf
clc
rts

View File

@ -1,18 +1,17 @@
NEW
AUTO 3,1
*--------------------------------------
* GetErrorMessage
* GetErrMsg
* In :
* Out :
*--------------------------------------
K.GetErrorMessage
>PULLW ZPPtr2 Dst Buf
K.GetErrMsg >PULLW ZPPtr2 Dst Buf
>PULLA Err Code
sta SETREADAUX
sta SETWRITEAUX
jsr ERRORX.GetErrorMessage
jsr ERRORX.GetErrMsg
sta CLRREADAUX
rts

View File

@ -1,7 +1,7 @@
NEW
AUTO 3,1
*--------------------------------------
ERRORX.GetErrorMessage
ERRORX.GetErrMsg
ldx #ERRORX.MSG
stx ZPPtr1
ldx /ERRORX.MSG

View File

@ -110,7 +110,7 @@ FS.CLOSE.DIR ldy #S.FD.REG.REF
sta K.MLI.PARAMS+1
>MLICALL MLICLOSE
* bcs IO.WRITE.REG.RTS
* bcs FS.RTS
.1 ldy #S.FD.REG.IOBUF
lda (pFD),y
@ -198,13 +198,13 @@ FS.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF
* clc
.9
FS.MLIOPEN.RTS rts
FS.RTS rts
*--------------------------------------
FS.Stat bit A2osX.FSID
bmi FS.Stat.FX
FS.Stat.203 >MLICALL MLIGETFILEINFO
bcs FS.MLIOPEN.RTS
bcs FS.RTS
jsr FS.ClrStat

View File

@ -7,7 +7,7 @@ NEW
* X = SYSfnc.Index
* Y,A = free for Inline param
*--------------------------------------
GP.CodeStart jmp GP.SysCall
GP.CS jmp GP.SysCall
*--------------------------------------
* LIBCALL (AUXLC to AUXLC)
* Used by user
@ -189,7 +189,7 @@ GP.AtkCall dec IRQ.InKernel
jsr GO.A2osX
GP.AtkCall.INC inc IRQ.InKernel
inc IRQ.InKernel
rts
*/--------------------------------------
* # Add32,Sub32,Mul32,IMul32,Div32,IDiv32,Mod32,IMod32,Cmp32,ICmp32
@ -204,28 +204,33 @@ GP.AtkCall.INC inc IRQ.InKernel
* On stack (long)
*\--------------------------------------
GP.FpuCall dec IRQ.InKernel
cpx #FPU.FADD
cpx #FPU.FMUL
bcs .1
jsr MATH INT32, direct JMP
bra GP.AtkCall.INC
jsr MATH math16 & math32, direct JMP
inc IRQ.InKernel
rts
.1 phx
jsr GP.SetFAC Get float from stack
plx
cpx #FPU.PWR+1
bcs GP.RomCallGetFacOnStack
bcs GP.GetFAC
*/--------------------------------------
* # FAdd,FSub,FMult,FDiv,FPwr
* Return X+Y, X-Y, X*Y, X/Y, X^Y
* # FAdd,FSub,FMul,FDiv,FPwr
* Return X*Y, X/Y, X+Y, X-Y
* ## C
* `float pwr ( float x, float y);`
* ## ASM
* **In:**
* `>PUSHF X (float)`
* `>PUSHF Y (float)`
* `>FPU fmul`
* `>FPU fdiv`
* `>FPU fmod` TODO
* `>FPU fadd`
* `>FPU fsub`
* `>FPU fmult`
* `>FPU fdiv`
* `>FPU fpwr`
* ## RETURN VALUE
* On stack (float)
@ -255,8 +260,7 @@ GP.FpuCall dec IRQ.InKernel
* ## RETURN VALUE
* On stack (Float)
*\--------------------------------------
GP.RomCallGetFacOnStack
jsr GP.ROMCALL
GP.GetFAC jsr GP.ROMCALL
lda pStack
ldy pStack+1
@ -270,7 +274,7 @@ GP.RomCall phx
bit RROMBNK1
plx
jsr GP.RomCall.JmpX
jsr MATHF
.8 ldx #$ff
bit $C000,x
@ -308,7 +312,7 @@ GP.Float ldy #3
sta FAC Positive + Exp=32
ldx #FPU.LTOF
bra GP.RomCallGetFacOnStack
bra GP.GetFAC
*/--------------------------------------
* # lrintf
* Return float rounded into a long
@ -373,8 +377,8 @@ GO.A2osX php
* bit RRAMWRAMBNK1
tsx
stx A2osX.SaveSX
ldx A2osX.SaveSM
stx SaveSX
ldx SaveSM
txs
sta CLRALTZP
bra GO.EXIT
@ -385,8 +389,8 @@ GO.A2osX.BNK ldx #RRAMWRAMBNK1 Self Modified, initialized to BNK1 for INIT3
* bit $C000,x
sta SETALTZP
tsx
stx A2osX.SaveSM
ldx A2osX.SaveSX
stx SaveSM
ldx SaveSX
txs
*--------------------------------------
GO.EXIT pha push P on stack
@ -410,15 +414,15 @@ GP.IRQ cld
sta SETALTZP switch to aux LC
tsx
stx A2osX.SaveSM
ldx A2osX.SaveSX
stx SaveSM
ldx SaveSX
txs
GP.IRQ.JSR jsr CORE.IRQ.DEV SELF MODIFIED
tsx go back to Main
stx A2osX.SaveSX
ldx A2osX.SaveSM
stx SaveSX
ldx SaveSM
txs
sta CLRALTZP
rts
@ -432,7 +436,7 @@ GP.IRQ.Exit stz IRQ.Skip reset flag
*--------------------------------------
*BrkHandler bra *
*--------------------------------------
GP.CodeEnd .BS $BED0-*
GP.CE .BS $BED0-*
*--------------------------------------
* $BED0->$BEEF : Public Variables
*--------------------------------------
@ -446,7 +450,6 @@ GP.CodeEnd .BS $BED0-*
.DA #0 ChRoot/Preemptive Disabled
.HS 00000000000000 All Slots marked as "Free"
*--------------------------------------
GP.End .EQ *
MAN
SAVE usr/src/sys/kernel.s.gp
LOAD usr/src/sys/kernel.s

View File

@ -6,8 +6,8 @@ Kernel.Init2 sei
txs
sta SETALTZP
stx A2osX.SaveSM
stx A2osX.SaveSX
stx SaveSM
stx SaveSX
ldx #Kernel.ZP.S-1
@ -35,10 +35,10 @@ Kernel.Init2 sei
>LDYAI Mem.XHiMem
>STYA ZPPtr2
lda #A2osX.AUX.S
lda #AUX.S
eor #$ff
tax
lda /A2osX.AUX.S
lda /AUX.S
eor #$ff
pha
@ -224,7 +224,7 @@ KConfigLoad >LDYAI MSG.KCREAD
jsr MLIENTRY Bypass ATALK
.DA #MLIGETFILEINFOEX
.DA MLIGETFILEINFOEX00
.DA pMLIGFIEX
bcc .1
eor #MLI.E.BADCALL
beq .2 regular ProDOS
@ -237,20 +237,20 @@ KConfigLoad >LDYAI MSG.KCREAD
.2 jsr MLI
.DA #MLIOPEN
.DA MLIOPEN00
.DA pMLIOPEN
bcs .9
lda MLIOPEN00+5
sta MLIREAD00+1
sta MLICLOSE00+1
lda pMLIOPEN+5
sta pMLIREAD+1
sta pMLICLOSE+1
jsr MLI
.DA #MLIREAD
.DA MLIREAD00
.DA pMLIREAD
php
pha
jsr MLI
.DA #MLICLOSE
.DA MLICLOSE00
.DA pMLICLOSE
pla
plp
bcs .9
@ -358,13 +358,13 @@ SysScrInit >LDYAI Mem.XHiMem
SysScrInit.TTYPtrs
lda FD.TTY+S.FD.DEV.DCBPTR
sec
sbc #TTY.BUF.SIZE+S.DCB.TTY
sbc #80*24+S.DCB.TTY
sta FD.TTY+S.FD.DEV.DCBPTR
sta .1+1
tay
lda FD.TTY+S.FD.DEV.DCBPTR+1
sbc /TTY.BUF.SIZE+S.DCB.TTY
sbc /80*24+S.DCB.TTY
sta FD.TTY+S.FD.DEV.DCBPTR+1
sta .1+2
@ -1100,14 +1100,14 @@ EvtMgrInit >LDYAI MSG.EVT
lda /Evt.Table
sta pEvent+1
clc
EvtMgrInit.RTS rts
rts
*--------------------------------------
TskMgrInit >LDYAI MSG.TSK
>SYSCALL2 puts
>LDYAI K.ENV.SIZE get a buffer for ENV
>SYSCALL NewStkObj Buffer in AUX mem
bcs EvtMgrInit.RTS
bcs .99
>STYA ZPPtr1
@ -1139,7 +1139,7 @@ TskMgrInit >LDYAI MSG.TSK
>LDYAI $2E0 Get ROOT from QC
>SYSCALL2 strdup
bcs .9
.99 bcs .9
txa
ldy #S.PS.hCWD
@ -1148,7 +1148,7 @@ TskMgrInit >LDYAI MSG.TSK
>PUSHWI I.ENV.BOOT
>PUSHWI $2C0 Get BOOT from QC
>SYSCALL2 SetEnv
.99 bcs .9
bcs .9
>PUSHWI I.ENV.ROOT
>PUSHWI $2E0 Get ROOT from QC
@ -1293,24 +1293,23 @@ I.ENV.DRV .AZ "DRV=${BOOT}drv/"
SBININITD .AZ "${ROOT}sbin/initd"
.DA #0 end of ARGV for ExecV
*--------------------------------------
MLIGETFILEINFOEX00
.DA #2
.DA MLIOPEN00.FN
pMLIGFIEX .DA #2
.DA FNKConfig
.BS S.FIEX
*--------------------------------------
MLIOPEN00 .DA #3
.DA MLIOPEN00.FN
pMLIOPEN .DA #3
.DA FNKConfig
.DA $B000
.BS 1
MLIOPEN00.FN >PSTR "A2osX.kconfig"
FNKConfig >PSTR "A2osX.kconfig"
*--------------------------------------
MLIREAD00 .DA #4
pMLIREAD .DA #4
.BS 1
.DA A2osX.KCONFIG
.DA 16
.BS 2
*--------------------------------------
MLICLOSE00 .DA #1
pMLICLOSE .DA #1
.BS 1
*--------------------------------------
FD.NULL .DA #S.FD.T.CDEV

View File

@ -68,7 +68,7 @@ K.SYSCALL .DA K.ChTyp $00 : STAT
.DA K.Shift $68 : ARG
.DA K.ArgV
.DA K.ArgVDup
.DA K.GetErrorMessage
.DA K.GetErrMsg
.DA K.AToF $70 : STDLIB
.DA K.AToI

View File

@ -30,15 +30,15 @@ KX.SYSCALL .DA STRVX.StrVNew
.DA PWDX.OpenSession
.DA PWDX.CloseSession
.DA SLISTX.SListGetData
.DA SLISTX.SListAddData
.DA SLISTX.SListSetData
.DA SLISTX.SListGetByID
.DA SLISTX.GetData
.DA SLISTX.AddData
.DA SLISTX.SetData
.DA SLISTX.GetByID
.DA SLISTX.SListNewKey
.DA SLISTX.SListLookup
.DA SLISTX.SListFree
.DA SLISTX.SListNew
.DA SLISTX.NewKey
.DA SLISTX.Lookup
.DA BLISTX.Free
.DA BLISTX.New
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.jmpx

View File

@ -2,26 +2,97 @@ NEW
AUTO 3,1
*--------------------------------------
MATH jmp (.1,x)
.1 .DA M16.ADD
.1 .DA M16.uMUL
.DA M16.uDIV
.DA M16.uMOD
.DA M16.ADD
.DA M16.SUB
.DA M16.UMUL
.DA M16.IMUL
.DA M16.UDIV
.DA M16.IDIV
.DA M16.UMOD
.DA M16.IMOD
.DA M16.CMP UCMP
.DA M16.CMP ICMP
.DA M16.SHL
.DA M16.SHR
.DA M16.L
.DA M16.LE
.DA M16.G
.DA M16.GE
.DA M16.E
.DA M16.NE
.DA M16.AND
.DA M16.OR
.DA M16.XOR
.DA M16.LAND
.DA M16.LOR
*--------------------------------------
.DA M16.iMUL
.DA M16.iDIV
.DA M16.iMOD
.DA M16.ADD
.DA M16.SUB
.DA M16.SHL
.DA M16.SHR
.DA M16.L
.DA M16.LE
.DA M16.G
.DA M16.GE
.DA M16.E
.DA M16.NE
.DA M16.AND
.DA M16.OR
.DA M16.XOR
.DA M16.LAND
.DA M16.LOR
*--------------------------------------
.DA M32.uMUL
.DA M32.uDIV
.DA M32.uMOD
.DA M32.ADD
.DA M32.SUB
.DA M32.UMUL
.DA M32.IMUL
.DA M32.UDIV
.DA M32.IDIV
.DA M32.UMOD
.DA M32.IMOD
.DA M32.CMP UCMP
.DA M32.CMP ICMP
.DA M32.SHL
.DA M32.SHR
.DA M32.L
.DA M32.LE
.DA M32.G
.DA M32.GE
.DA M32.E
.DA M32.NE
.DA M32.AND
.DA M32.OR
.DA M32.XOR
.DA M32.LAND
.DA M32.LOR
*--------------------------------------
.DA M32.iMUL
.DA M32.iDIV
.DA M32.iMOD
.DA M32.ADD
.DA M32.SUB
.DA M32.SHL
.DA M32.SHR
.DA M32.L
.DA M32.LE
.DA M32.G
.DA M32.GE
.DA M32.E
.DA M32.NE
.DA M32.AND
.DA M32.OR
.DA M32.XOR
.DA M32.LAND
.DA M32.LOR
*--------------------------------------
MATH.A2STR10NP ldx #3 3 digit max
ldy #0 Disable Padding
@ -38,14 +109,14 @@ MATH.ACC322STR10
stx .5+1 Pad Len
sty .81+1 Pad Char
stz A2osX.NumStrLen
stz FOUTBuf-1
bcc .1
clc
lda ACC32+3
bpl .1
jsr M32.nACC32
jsr M32.nACC
sec
.1 ror ACC32.Sign Save sign
@ -59,6 +130,7 @@ MATH.ACC322STR10
sed switch to BCD mode
ldx #32 let's roll 32 bits
.3 jsr MATH.ACC32x2
ldy #4
@ -126,9 +198,9 @@ MATH.ACC322STR10
lda #0
.88 ldy A2osX.NumStrLen
inc A2osX.NumStrLen
sta A2osX.NumStrBuf,y
.88 ldy FOUTBuf-1
inc FOUTBuf-1
sta FOUTBuf,y
rts
*--------------------------------------
* Convert Hex int at ZPPtr2 to ACC32
@ -136,7 +208,7 @@ MATH.ACC322STR10
MATH.Hex2ACC32 lda (ZPPtr2)
beq .9
jsr SHARED.IsHexDigit
jsr .80
bcs .9
jsr M32.A2ACC32
@ -147,7 +219,7 @@ MATH.Hex2ACC32 lda (ZPPtr2)
lda (ZPPtr2),y
beq .8
jsr SHARED.IsHexDigit
jsr .80
bcs .8
pha
@ -166,6 +238,29 @@ MATH.Hex2ACC32 lda (ZPPtr2)
rts
.9 sec
.99 rts
*--------------------------------------
.80 jsr ZP.IsDigit
bcc .88
cmp #'A'
bcc .9
cmp #'F'+1
bcc .81
cmp #'a'
bcc .9
cmp #'f'+1
bcs .99
eor #$20
.81
* clc
sbc #'A'-11 cc so A->10 (11-CC)
clc
.88 and #$0F
rts
*--------------------------------------
* Convert Decimal int at ZPPtr2 to ACC32
@ -176,7 +271,7 @@ MATH.Dec2ACC32 jsr M32.ACC32Z
eor #'-'
bne .10
jsr SHARED.NextCharPtr2 skip '-'
jsr SHARED.NextCP2 skip '-'
sec
.10 ror .80+1 set pos/neg flag
@ -218,7 +313,7 @@ MATH.Dec2ACC32 jsr M32.ACC32Z
bpl .88
phy
jsr M32.nACC32
jsr M32.nACC
ply
.88 clc
@ -251,6 +346,13 @@ MATH.ACC32x2 asl ACC32
rol ACC32+3
rts
*--------------------------------------
MATH.CMPT .DA #%100 L
.DA #%110 LE
.DA #%001 G
.DA #%011 GE
.DA #%010 E
.DA #%101 NE
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.math
LOAD usr/src/sys/kernel.s

View File

@ -1,6 +1,12 @@
NEW
AUTO 3,1
*--------------------------------------
M16.AND lda #$32 AND (zp)
.HS 2C BIT ABS
M16.OR lda #$12 ORA (zp)
.HS 2C BIT ABS
M16.XOR lda #$52 EOR (zp)
.HS 2C BIT ABS
M16.ADD lda #$72 ADC (zp)
.HS 2C BIT ABS
M16.SUB lda #$F2 SBC (zp)
@ -22,30 +28,99 @@ M16.SUB lda #$F2 SBC (zp)
rts
*--------------------------------------
* Returns:
* ff X < Y
* 0 X = Y
* 1 X > Y
*--------------------------------------
*M16.UCMP
*M16.ICMP
M16.CMP jsr M16.SUB
tay A = HI byte
bmi .2
M16.SHL sec
.HS 90 BCC
M16.SHR clc
.1 ora (pStack) LO byte
lda (pStack)
inc pStack
inc pStack
tax
beq .8
lda #1
ldy #1
bcc .3
.1 lda (pStack)
asl
sta (pStack)
lda (pStack),y
rol
sta (pStack),y
dex
bne .1
.8 rts
*--------------------------------------
.3 lda (pStack),y
lsr
sta (pStack),y
lda (pStack)
ror
sta (pStack)
dex
bne .3
rts
*--------------------------------------
M16.L ldx #0
bra M16.CMP
M16.LE ldx #1
bra M16.CMP
M16.G ldx #2
bra M16.CMP
M16.GE ldx #3
bra M16.CMP
M16.E ldx #4
bra M16.CMP
M16.NE ldx #5
*--------------------------------------
M16.CMP jsr M16.SUB
tay A = BYTE 1
bmi .1
ora (pStack) BYTE 0
beq .2
lda #%001
.HS 2C BIT ABS
.2 lda #$ff
.1 lda #%100
.HS 2C BIT ABS
.8 inc pStack
inc pStack
.2 lda #%010
.HS 2C BIT ABS
rts
and MATH.CMPT,x
bra M16.LOR2
*--------------------------------------
M16.LAND jsr M16.AND
bra M16.LOR1
M16.LOR jsr M16.OR
M16.LOR1 dey y = 1
lda (pStack)
ora (pStack),y
M16.LOR2 beq .1
lda #1
.1 sta (pStack)
lda #0
sta (pStack),y
rts
*--------------------------------------
M16.UMUL clc
.HS B0 BCS
@ -56,19 +131,18 @@ M16.IMUL sec
jsr M16.MUL
plp
bcc M16.PutTMP32
bcc M16.PutTMP
M16.ITMP lda ACC32.Sign
eor ARG32.Sign
bpl M16.PutTMP32
bpl M16.PutTMP
*--------------------------------------
* M16.PutnTMP32
* M16.PutnTMP
*--------------------------------------
lda #TMP32
.HS 2C BIT ABS
*--------------------------------------
M16.PutnARG32
lda #ARG32
M16.PutnARG lda #ARG32
sta .1+1
ldy #0
ldx #3
@ -84,7 +158,7 @@ M16.PutnARG32
rts
*--------------------------------------
M16.UDIV clc
M16.uDIV clc
.HS B0 BCS
M16.IDIV sec
clv
@ -106,15 +180,15 @@ M16.MOD php
lda ACC32.Sign IDIV
eor ARG32.Sign
bpl M16.PutARG32
bra M16.PutnARG32
bpl M16.PutARG
bra M16.PutnARG
.3 bvc M16.PutARG32 DIV
.3 bvc M16.PutARG DIV
*--------------------------------------
M16.PutTMP32 ldy #TMP32 MOD
M16.PutTMP ldy #TMP32 MOD
.HS 2C BIT ABS
*--------------------------------------
M16.PutARG32 ldy #ARG32
M16.PutARG ldy #ARG32
lda $0,y
sta (pStack)
@ -151,7 +225,7 @@ M16.MULDIVMOD >PULLW ACC32
.1 lda ACC32.Sign
bpl M16.RTS
*--------------------------------------
* M16.nACC32
* M16.nACC
*--------------------------------------
ldy #ACC32
.HS 2C BIT ABS
@ -198,7 +272,6 @@ M16.MUL stz TMP32
dex
bne .1
clc
rts
*--------------------------------------
M16.DIVMOD stz TMP32

View File

@ -1,57 +1,149 @@
NEW
AUTO 3,1
*--------------------------------------
M32.AND lda #$32 AND (zp)
.HS 2C BIT ABS
M32.OR lda #$12 ORA (zp)
.HS 2C BIT ABS
M32.XOR lda #$52 EOR (zp)
.HS 2C BIT ABS
M32.ADD lda #$72 ADC (zp)
.HS 2C BIT ABS
M32.SUB lda #$F2 SBC (zp)
sta .3
sta .2
asl CS if SBC, CC if ADC
asl CS if SBC, CC if ADC others = don't care
ldy #4
ldx #4
.2 lda (pStack),y
.3 adc (pStack) SELF MODIFIED
.1 lda (pStack),y
.2 adc (pStack) SELF MODIFIED
sta (pStack),y
inc pStack
dex
bne .2
bne .1
rts
*--------------------------------------
* Returns:
* ff X < Y
* 0 X = Y
* 1 X > Y
*--------------------------------------
*M32.UCMP
*M32.ICMP
M32.CMP jsr M32.SUB
M32.SHL sec
.HS 90 BCC
M32.SHR clc
tay A = BYTE 3
bmi .2
.1 ora (pStack) BYTE 0
ldy #1
ora (pStack),y BYTE 1
iny
ora (pStack),y BYTE 2
beq .8
lda #1
.HS 2C BIT ABS
.2 lda #$ff
.8 inc pStack
lda (pStack)
inc pStack
inc pStack
inc pStack
inc pStack
rts
tax
beq .8
bcc .3
.1 ldy #0
clc
.2 lda (pStack),y
rol
sta (pStack),y
iny
tya
eor #4
bne .2
dex
bne .1
.8 rts
*--------------------------------------
.3 ldy #3
clc
.4 lda (pStack),y
ror
sta (pStack),y
dey
bpl .4
dex
bne .3
rts
*--------------------------------------
M32.L ldx #0
bra M32.CMP
M32.LE ldx #1
bra M32.CMP
M32.G ldx #2
bra M32.CMP
M32.GE ldx #3
bra M32.CMP
M32.E ldx #4
bra M32.CMP
M32.NE ldx #5
*--------------------------------------
M32.CMP jsr M32.SUB
tay A = BYTE 3
bmi .1
ldy #2
.10 ora (pStack),y
dey
bpl .10
tay
beq .2
lda #%001
.HS 2C BIT ABS
.1 lda #%100
.HS 2C BIT ABS
.2 lda #%010
.HS 2C BIT ABS
and MATH.CMPT,x
bra M32.LOR2
*--------------------------------------
M32.LAND jsr M32.AND
bra M32.LOR1
M32.LOR jsr M32.OR
M32.LOR1 lda (pStack)
ldy #3
.1 ora (pStack),y
dey
bne .1
tay
M32.LOR2 beq .1
lda #1
.1 sta (pStack)
lda #0
ldy #3
.2 sta (pStack),y
dey
bne .2
rts
*--------------------------------------
M32.UMUL clc
.HS B0 BCS
@ -62,18 +154,18 @@ M32.IMUL sec
jsr M32.MUL
plp
bcc M32.PutTMP32
bcc M32.PutTMP
M32.ITMP lda ACC32.Sign
eor ARG32.Sign
bpl M32.PutTMP32
bpl M32.PutTMP
*--------------------------------------
* M32.PutnTMP32
* M32.PutnTMP
*--------------------------------------
lda #TMP32
.HS 2C BIT ABS
*--------------------------------------
M32.PutnARG32 lda #ARG32
M32.PutnARG lda #ARG32
sta .1+1
ldy #0
ldx #3
@ -111,15 +203,15 @@ M32.MOD php
lda ACC32.Sign IDIV
eor ARG32.Sign
bpl M32.PutARG32
bra M32.PutnARG32
bpl M32.PutARG
bra M32.PutnARG
.3 bvc M32.PutARG32 DIV
.3 bvc M32.PutARG DIV
*--------------------------------------
M32.PutTMP32 lda #TMP32 MOD
M32.PutTMP lda #TMP32 MOD
.HS 2C BIT ABS
*--------------------------------------
M32.PutARG32 lda #ARG32
M32.PutARG lda #ARG32
sta .1+1
ldy #3
@ -131,7 +223,7 @@ M32.PutARG32 lda #ARG32
rts
*--------------------------------------
M32.PopACC32 ldy #0
M32.PopACC ldy #0
.1 lda (pStack)
inc pStack
@ -143,7 +235,7 @@ M32.PopACC32 ldy #0
sta ACC32.Sign
rts
*--------------------------------------
M32.GetARG32 ldy #0
M32.GetARG ldy #0
.1 lda (pStack),y
sta ARG32,y
@ -156,8 +248,8 @@ M32.GetARG32 ldy #0
M32.RTS rts
*--------------------------------------
M32.MULDIVMOD php
jsr M32.PopACC32
jsr M32.GetARG32
jsr M32.PopACC
jsr M32.GetARG
plp
bcc M32.RTS
jsr .1
@ -165,7 +257,7 @@ M32.MULDIVMOD php
* M32.ARG32ABS
*--------------------------------------
lda ARG32.Sign
bmi M32.nARG32
bmi M32.nARG
rts
*--------------------------------------
* M32.ACC32ABS
@ -173,9 +265,9 @@ M32.MULDIVMOD php
.1 lda ACC32.Sign
bpl M32.RTS
*--------------------------------------
M32.nACC32 ldy #ACC32
M32.nACC ldy #ACC32
.HS 2C BIT ABS
M32.nARG32 ldy #ARG32
M32.nARG ldy #ARG32
ldx #3
sec
@ -217,15 +309,11 @@ M32.MUL jsr M32.TMP32Z
eor #4
bne .2
.3 asl ACC32
rol ACC32+1
rol ACC32+2
rol ACC32+3
.3 jsr MATH.ACC32x2
dex
bne .1
clc
rts
*--------------------------------------
* ARG32 = ARG32 div ACC32
@ -239,11 +327,14 @@ M32.DIVMOD jsr M32.TMP32Z
rol ARG32+1
rol ARG32+2
rol ARG32+3
rol TMP32
rol TMP32+1
rol TMP32+2
rol TMP32+3
sec
lda TMP32
sbc ACC32
pha

View File

@ -80,7 +80,7 @@ ZPChunkLen .BS 2
MD5X.MD5 ldy #$ff
.1 iny
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
bne .1
sty ZPDataLen
@ -148,12 +148,12 @@ MD5X.Update.I ldy #S.MD5.FINALIZED
.3 lda #64
.50 sta ZPChunkLen Save Chunk Len
jsr MD5UpdateBitCount
jsr MD5UpdBC
ldy #0
.51 jsr SHARED.TXTPTR.GetY Load Buffer with data
sta MD5.BUFFER64,y
.51 jsr SHARED.TXTPTRgY Load Buffer with data
sta MD5.Buf,y
iny
cpy ZPChunkLen
bne .51
@ -163,12 +163,12 @@ MD5X.Update.I ldy #S.MD5.FINALIZED
* Append "$80" & Padding & original size
lda #$80 no, Append $80
sta MD5.BUFFER64,y
sta MD5.Buf,y
lda #0
.52 iny Pad with 0 to 64
cpy #64
beq .53
sta MD5.BUFFER64,y
sta MD5.Buf,y
bra .52
.53 ldy #S.MD5.EXTRABIT Mark MD5 Context as Appended
lda #$80
@ -176,7 +176,7 @@ MD5X.Update.I ldy #S.MD5.FINALIZED
lda ZPChunkLen
cmp #56 Enough room for BITCOUNT ?
bcs .58 no
jsr MD5AppendBitCount
jsr MD5AppBC
.58 jsr MD5Transform
jsr MD5UpdateABCD0
.8 lda ZPDataLen Substract Bytes processed from LEN
@ -214,20 +214,20 @@ MD5X.Finalize.I ldy #S.MD5.FINALIZED
lsr
tax
lda MD5.DIGITS,x
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
lda (ZPCtxPtr),y
and #$0F
tax
lda MD5.DIGITS,x
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
iny
cpy #S.MD5.ABCD0+16
bne .2
lda #0
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
pla
jmp K.FreeMem
@ -238,12 +238,11 @@ MD5X.Finalize.I ldy #S.MD5.FINALIZED
* In :
* ZPCtxPtr = MD5 Context
*--------------------------------------
MD5AppendBitCount
ldx #56
MD5AppBC ldx #56
ldy #S.MD5.BITCOUNT Append 8 Bytes of BITCOUNT
.1 lda (ZPCtxPtr),y
sta MD5.BUFFER64,x
sta MD5.Buf,x
inx
iny
cpy #S.MD5.BITCOUNT+8
@ -259,8 +258,7 @@ MD5AppendBitCount
* CL = Size (in bytes) to add to MD5 context
* ZPCtxPtr = MD5 Context
*--------------------------------------
MD5UpdateBitCount
stz ZPChunkLen+1
MD5UpdBC stz ZPChunkLen+1
lda ZPChunkLen
asl
rol ZPChunkLen+1
@ -302,16 +300,16 @@ MD5ExtraChunk ldy #S.MD5.FINALIZED
bne .1
lda #$80
sta MD5.BUFFER64 Add extra bit to buffer
sta MD5.Buf Add extra bit to buffer
sta (ZPCtxPtr),y Mark Extrabit added
inx
.1 stz MD5.BUFFER64,x pad with "0"...
.1 stz MD5.Buf,x pad with "0"...
inx
cpx #56
bne .1 ...until room for bitcount
jsr MD5AppendBitCount
jsr MD5AppBC
jsr MD5Transform
*--------------------------------------
* MD5UpdateABCD0
@ -420,7 +418,7 @@ MD5.XXXX.END >MOV32 MD5.D,MD5.DTemp
tay
ldx #0
clc
.2 lda MD5.BUFFER64,y ADC32 M[g],MD5.F,MD5.F
.2 lda MD5.Buf,y ADC32 M[g],MD5.F,MD5.F
adc MD5.F,x
sta MD5.F,x
iny
@ -481,7 +479,7 @@ MD5.F2 .BS 4
MD5.DTemp .BS 4
MD5.F .BS 4
MD5.i .BS 1
MD5.BUFFER64 .BS 64
MD5.Buf .BS 64
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.md5x

View File

@ -8,8 +8,7 @@ NEW
*
* Out : A = hMount
*--------------------------------------
K.Mount >PULLW ZPPtr2 callback
>PULLW ZPPtr1 mountpoint
K.Mount jsr SHARED.PullP2P1 callback,mountpoint
ldx #1

View File

@ -21,7 +21,7 @@ PFT.CheckPathYA >PUSHYA
>PUSHWI K.Buf256
>SYSCALL2 realpath
bcs PFT.YAToMLIPATH.RTS
bcs PFT.RTS
ldx #0
@ -92,8 +92,7 @@ PFT.YAToMLIPATH >STYA .1+1
>STYA K.MLI.PARAMS+1
clc
PFT.YAToMLIPATH.RTS
rts
PFT.RTS rts
*--------------------------------------
PFT.CheckNode4 ldy #4
.HS 2C BIT ABS
@ -107,7 +106,7 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL #
jsr DEV.GetPFD
bcs .99
ldy #S.FD.HANDLER
ldy #S.FD.PFT
lda (pFD),y
beq .8 Handler is 0, back to kernel....

View File

@ -68,7 +68,7 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
.8 lda #$ff SELF MODIFIED
* clc
.9
PS.Exec.RTS rts
rts
*/--------------------------------------
* # Fork
* ## C
@ -79,7 +79,8 @@ PS.Exec.RTS rts
* A = Child PSID
*\--------------------------------------
K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
bcs PS.Exec.RTS
bcs .99
sta .8+1
ldy #S.PS.S
@ -106,7 +107,7 @@ K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
ldy #S.PS.hDS
lda (ZPPtr1),y
jsr MEM.Dup
bcs .9
.99 bcs .9
ldy #S.PS.hDS
sta (PS.NewPSPtr),y
@ -358,7 +359,7 @@ PS.Load ldy #$ff
>LDYAI PS.SHUTDOWN
jsr PS.Find.PATH
bcs PS.Load.RTS
bcs PS.RTS
jmp PS.LoadBIN
*--------------------------------------
@ -366,12 +367,12 @@ PS.Load.IPATH lda #E.BADPATH
.HS 2C
PS.Load.IBIN lda #E.IBIN
sec
PS.Load.RTS rts
PS.RTS rts
*--------------------------------------
PS.Load.SCRIPT jsr PS.Buf2IO
jsr PS.LoadGetHeader
bcs PS.Load.RTS
bcs PS.RTS
>PUSHWI PS.Load.ROOT
>PUSHWI K.Buf256 K.Buf256 = "$ROOT"
@ -406,7 +407,7 @@ PS.Load.SCRIPT jsr PS.Buf2IO
.5 >LDYAI K.Buf256
jsr PS.STAT.YA
bcs PS.Load.RTS
bcs PS.RTS
lda K.S.STAT+S.STAT.P.TYPE
cmp #S.FI.T.BIN
@ -580,7 +581,7 @@ PS.AddArgV ldy #$ff In both cases, remove ARGV[0]
* lda #0
jsr PS.AddYAp12ArgSize
jsr SHARED.AddYp1ToPtr1
jsr SHARED.AddYp12P1
bra .1
.4 txa
@ -634,8 +635,8 @@ PS.AddPtr1ToStrV
sta (ZPPtr2),y
bne .2
jsr SHARED.AddYp1ToPtr1
jmp SHARED.AddYp1ToPtr2
jsr SHARED.AddYp12P1
jmp SHARED.AddYp12P2
*--------------------------------------
PS.AddYAp12ArgSize
pha

View File

@ -97,16 +97,18 @@ K.PutGR >PULLW TXTPTR
jsr K.SYSCALL.JMPX
bcc PWD.FlushFiles
K.PutGR.RTS rts
rts
*--------------------------------------
PWD.FlushFiles
>LDYA PWD.UsrDBSize
ldx PWD.hUsrDB
clc
jsr PWD.Flush
bcs K.PutGR.RTS
bcc .1
rts
>LDYA PWD.GrpDBSize
.1 >LDYA PWD.GrpDBSize
ldx PWD.hGrpDB
sec

View File

@ -19,20 +19,20 @@ PWDX.GetPWUID lda PWD.hUsrDB
beq PWDX.GetPW.99 EOF
ldy #0
jsr PWDX.NextString skip USERNAME
jsr PWDX.NextS skip USERNAME
jsr PWDX.NextString skip PASSWORD
jsr PWDX.NextS skip PASSWORD
jsr PWDX.GetByte get UID
cmp ZPPtr1+1
beq PWDX.GetPW.8
jsr PWDX.NextLine
jsr PWDX.NextL
bra .1
PWDX.GetPW.8 ldx FORPNT+1
beq .8 Dry run, no output
jmp PWDX.Record2PW
jmp PWDX.Rec2PW
.8 clc a = UID
rts
@ -42,7 +42,7 @@ PWDX.GetPW.9 lda #E.IPWDDB
PWDX.GetPW.99 lda #E.IUSR
sec
PWDX.GetPW.RTS rts
rts
*--------------------------------------
PWDX.GetPWName lda PWD.hUsrDB
beq PWDX.GetPW.9
@ -51,7 +51,7 @@ PWDX.GetPWName lda PWD.hUsrDB
>STYA ZPPtr3
ldy #0
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
beq PWDX.GetPW.99
.1 lda (ZPPtr3)
@ -59,13 +59,13 @@ PWDX.GetPWName lda PWD.hUsrDB
ldy #$ff
.2 iny
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
beq .4
cmp (ZPPtr3),y
beq .2
.3 jsr PWDX.NextLine
.3 jsr PWDX.NextL
bra .1
.4 lda (ZPPtr3),y
@ -75,10 +75,10 @@ PWDX.GetPWName lda PWD.hUsrDB
ldx FORPNT+1
beq .8
jmp PWDX.Record2PW
jmp PWDX.Rec2PW
.8 iny
jsr PWDX.NextString skip PASSWORD
jsr PWDX.NextS skip PASSWORD
jmp PWDX.GetByte get UID
*--------------------------------------
* TXTPTR : pPW (Input)
@ -88,10 +88,10 @@ PWDX.PutPW lda PWD.hUsrDB
bne PWDX.PutPW.1
ldy #S.PW.UID
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
bne PWDX.GetPW.99 Must be ROOT user
jsr PWDX.GetRecordLen
jsr PWDX.GetRecLen
tay
lda #0
@ -103,7 +103,7 @@ PWDX.PutPW lda PWD.hUsrDB
inc
.1 jsr K.getmem
bcs PWDX.GetPW.RTS
bcs .9
>STYA ZPPtr3
stx PWD.hUsrDB
@ -111,7 +111,7 @@ PWDX.PutPW lda PWD.hUsrDB
lda #0
sta (ZPPtr3)
jsr PWDX.AppendRecord
jsr PWDX.AppRec
lda PWD.hGrpDB
beq .2
@ -140,17 +140,17 @@ PWDX.PutPW.1 jsr K.GetmemPtr
>STYA ZPPtr3
ldy #S.PW.PASSWD
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
bne .12
jsr PWDX.FindRecord
jsr PWDX.FindRec
bcs .99
jmp PWDX.DeleteRecord
jmp PWDX.DelRec
*--------------------------------------
.12 jsr PWDX.FindRecord
.12 jsr PWDX.FindRec
bcs .11
jsr PWDX.DeleteRecord
jsr PWDX.DelRec
bcs .99
bra .13
*--------------------------------------
@ -162,7 +162,7 @@ PWDX.PutPW.1 jsr K.GetmemPtr
sta (TXTPTR),y
sta SETWRITEAUX
.13 jsr PWDX.GetRecordLen
.13 jsr PWDX.GetRecLen
clc
adc PWD.UsrDBSize
@ -207,10 +207,10 @@ PWDX.PutPW.1 jsr K.GetmemPtr
jsr K.GetMemPtr
>STYA ZPPtr3
jsr PWDX.AppendRecord
jsr PWDX.AppRec
lda #0
jsr PWDX.StoreChar
jsr PWDX.StoreC
clc
rts
@ -229,18 +229,18 @@ PWDX.GetGRGID lda PWD.hGrpDB
beq PWDX.GetGR.99 EOF
ldy #0
jsr PWDX.NextString skip USERNAME
jsr PWDX.NextS skip USERNAME
jsr PWDX.GetByte get UID
cmp ZPPtr1+1
beq PWDX.GetGR.8
jsr PWDX.NextLine
jsr PWDX.NextL
bra .1
PWDX.GetGR.8 ldx FORPNT+1
beq .8 Dry run, no output
jmp PWDX.Record2GR
jmp PWDX.Rec2GR
.8 clc a = UID
rts
@ -259,7 +259,7 @@ PWDX.GetGRName lda PWD.hGrpDB
>STYA ZPPtr3
ldy #0
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
beq PWDX.GetGR.99
.1 lda (ZPPtr3)
@ -267,13 +267,13 @@ PWDX.GetGRName lda PWD.hGrpDB
ldy #$ff
.2 iny
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
beq .4
cmp (ZPPtr3),y
beq .2
.3 jsr PWDX.NextLine
.3 jsr PWDX.NextL
bra .1
.4 lda (ZPPtr3),y
@ -283,7 +283,7 @@ PWDX.GetGRName lda PWD.hGrpDB
ldx FORPNT+1
beq .8
jmp PWDX.Record2GR
jmp PWDX.Rec2GR
.8 iny
jmp PWDX.GetByte get GID
@ -306,15 +306,15 @@ PWDX.OpenSession
lda TXTPTR+1
bne .3
.1 >LDYAI PWDX.ROOTSESSION.Size
.1 >LDYAI PWDX.ROOT.Size
jsr K.GetMem
bcs .9
>STYA ZPPtr1
ldy #PWDX.ROOTSESSION.Size-1
ldy #PWDX.ROOT.Size-1
.2 lda PWDX.ROOTSESSION,y
.2 lda PWDX.ROOT,y
sta (ZPPtr1),y
dey
bpl .2
@ -323,7 +323,7 @@ PWDX.OpenSession
clc
rts
*--------------------------------------
.3 jsr PWDX.FindRecord
.3 jsr PWDX.FindRec
bcs .9
tya Y = Name length +1
@ -340,7 +340,7 @@ PWDX.OpenSession
sec
.5 jsr SHARED.FORPNT.getY
.5 jsr SHARED.FORPNTgY
eor (ZPPtr4),y Check MD5
bne .9
@ -376,15 +376,15 @@ PWDX.GetUID lda PWD.hUsrDB
beq .8 End of DB
ldy #0
jsr PWDX.NextString skip name
jsr PWDX.NextString skip password
jsr PWDX.NextS skip name
jsr PWDX.NextS skip password
jsr PWDX.GetByte
cmp .8+1
bcc .4
sta .8+1
.4 jsr PWDX.NextLine
.4 jsr PWDX.NextL
bra .1
.8 lda #$ff SELF MODIFIED
@ -398,7 +398,7 @@ PWDX.GetUID lda PWD.hUsrDB
sec
rts
*--------------------------------------
PWDX.DeleteRecord
PWDX.DelRec
.1 iny
lda (ZPPtr3),y
cmp #C.CR
@ -432,7 +432,7 @@ PWDX.DeleteRecord
.9 rts
*--------------------------------------
PWDX.FindRecord lda PWD.hUsrDB
PWDX.FindRec lda PWD.hUsrDB
jsr K.GetmemPtr
>STYA ZPPtr3
@ -443,13 +443,13 @@ PWDX.FindRecord lda PWD.hUsrDB
ldy #$ff
.3 iny
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
beq .4
cmp (ZPPtr3),y
beq .3
.5 jsr PWDX.NextLine
.5 jsr PWDX.NextL
bra .2
.4 lda (ZPPtr3),y
@ -467,7 +467,7 @@ PWDX.FindRecord lda PWD.hUsrDB
*--------------------------------------
* Record : USERNAME:PASSWORD:UID:GID:GECOS:HOME:SHELL\CR
*--------------------------------------
PWDX.Record2PW ldy #0
PWDX.Rec2PW ldy #0
ldx #0 NAME
@ -476,12 +476,12 @@ PWDX.Record2PW ldy #0
cmp #':'
beq .2
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
inx
bra .1
.2 lda #0
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
inx
cpx #S.PW.PASSWD
bne .2
@ -491,23 +491,23 @@ PWDX.Record2PW ldy #0
cmp #':'
beq .4
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
inx
bra .3
.4 lda #0
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
inx
cpx #S.PW.UID
bne .4
jsr PWDX.GetByte UID
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
iny
jsr PWDX.GetByte GID
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
iny
@ -517,11 +517,11 @@ PWDX.Record2PW ldy #0
iny
cmp #':'
beq .6
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
inx
bra .5
.6 lda #0
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
inx
cpx #S.PW.DIR
bne .6
@ -530,11 +530,11 @@ PWDX.Record2PW ldy #0
iny
cmp #':'
beq .8
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
inx
bra .7
.8 lda #0
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
inx
cpx #S.PW.SHELL
bne .8
@ -543,16 +543,16 @@ PWDX.Record2PW ldy #0
iny
cmp #C.CR
beq .10
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
inx
bra .9
.10 lda #0
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
clc
rts
*--------------------------------------
PWDX.Record2GR ldy #0
PWDX.Rec2GR ldy #0
ldx #0 NAME
@ -561,15 +561,15 @@ PWDX.Record2GR ldy #0
cmp #':'
beq .2
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
inx
bra .1
.2 lda #0
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
jsr PWDX.GetByte UID
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
clc
rts
@ -579,15 +579,15 @@ PWDX.Record2GR ldy #0
PWDX.GetSessionLen
ldy #0
jsr PWDX.NextString USERNAME
jsr PWDX.NextS USERNAME
tya
clc
adc #S.SESSION.NAME
tax
jsr PWDX.NextString skip PASSWORD
jsr PWDX.NextString skip UID
jsr PWDX.NextString skip GID
jsr PWDX.NextS skip PASSWORD
jsr PWDX.NextS skip UID
jsr PWDX.NextS skip GID
.1 inx
iny
@ -604,8 +604,8 @@ PWDX.GetSessionLen
PWDX.Record2Session
ldy #0
jsr PWDX.NextString skip USERNAME
jsr PWDX.NextString skip PASSWORD
jsr PWDX.NextS skip USERNAME
jsr PWDX.NextS skip PASSWORD
jsr PWDX.GetByte get UID
sta ZPPtr1
@ -627,13 +627,13 @@ PWDX.Record2Session
ora #S.SESSION.P.SYSADMIN
.2 jsr SHARED.PutCharPtr2
.2 jsr SHARED.PutCP2
lda ZPPtr1
jsr SHARED.PutCharPtr2 UID
jsr SHARED.PutCP2 UID
lda ZPPtr1+1
jsr SHARED.PutCharPtr2 GID
jsr SHARED.PutCP2 GID
phy
@ -644,11 +644,11 @@ PWDX.Record2Session
cmp #':'
beq .4
jsr SHARED.PutCharPtr2
jsr SHARED.PutCP2
bra .3
.4 lda #0
jsr SHARED.PutCharPtr2
jsr SHARED.PutCP2
ply
@ -661,27 +661,27 @@ PWDX.Record2Session
lda #0
.6 jsr SHARED.PutCharPtr2
.6 jsr SHARED.PutCP2
iny
bra .5
.8 lda #0
jmp SHARED.PutCharPtr2
jmp SHARED.PutCP2
*--------------------------------------
PWDX.NextString lda (ZPPtr3),y
PWDX.NextS lda (ZPPtr3),y
beq .8
iny
cmp #':'
bne PWDX.NextString
bne PWDX.NextS
.8 rts
*--------------------------------------
PWDX.NextLine lda (ZPPtr3),y
PWDX.NextL lda (ZPPtr3),y
beq .8
iny
cmp #C.CR
bne PWDX.NextLine
bne PWDX.NextL
tya
clc
@ -725,7 +725,7 @@ PWDX.GetByte stz .8+1
clc
rts
*--------------------------------------
PWDX.AppendRecord
PWDX.AppRec
.1 lda (ZPPtr3)
beq .8
@ -737,64 +737,61 @@ PWDX.AppendRecord
.8 sec
.HS 90 BCC
*--------------------------------------
PWDX.GetRecordLen
clc
PWDX.GetRecLen clc
ldx #0
ldy #S.PW.NAME
jsr PWDX.StoreString
jsr PWDX.StoreS
lda #':'
jsr PWDX.StoreChar
jsr PWDX.StoreC
ldy #S.PW.PASSWD
jsr PWDX.StoreString
jsr PWDX.StoreS
lda #':'
jsr PWDX.StoreChar
jsr PWDX.StoreC
ldy #S.PW.UID
jsr SHARED.TXTPTR.GetY
jsr PWDX.StoreByte
jsr SHARED.TXTPTRgY
jsr PWDX.StoreB
lda #':'
jsr PWDX.StoreChar
jsr PWDX.StoreC
ldy #S.PW.GID
jsr SHARED.TXTPTR.GetY
jsr PWDX.StoreByte
jsr SHARED.TXTPTRgY
jsr PWDX.StoreB
lda #':'
jsr PWDX.StoreChar
jsr PWDX.StoreC
ldy #S.PW.GECOS
jsr PWDX.StoreString
jsr PWDX.StoreS
lda #':'
jsr PWDX.StoreChar
jsr PWDX.StoreC
ldy #S.PW.DIR
jsr PWDX.StoreString
jsr PWDX.StoreS
lda #':'
jsr PWDX.StoreChar
jsr PWDX.StoreC
ldy #S.PW.SHELL
jsr PWDX.StoreString
jsr PWDX.StoreS
lda #C.CR
jsr PWDX.StoreChar
jsr PWDX.StoreC
txa
PWDX.GetRecordLen.RTS
rts
PWDX.RTS rts
*--------------------------------------
PWDX.StoreString
jsr SHARED.TXTPTR.GetY
beq PWDX.GetRecordLen.RTS
jsr PWDX.StoreChar
PWDX.StoreS jsr SHARED.TXTPTRgY
beq PWDX.RTS
jsr PWDX.StoreC
iny
bra PWDX.StoreString
bra PWDX.StoreS
*--------------------------------------
PWDX.StoreByte php
PWDX.StoreB php
phx
jsr MATH.A2STR10NP
plx
@ -802,13 +799,13 @@ PWDX.StoreByte php
ldy #0
.1 lda A2osX.NumStrBuf,y
beq PWDX.GetRecordLen.RTS
.1 lda FOUTBuf,y
beq PWDX.RTS
iny
jsr PWDX.StoreChar
jsr PWDX.StoreC
bra .1
*--------------------------------------
PWDX.StoreChar inx
PWDX.StoreC inx
bcc .9 Dry run, no store
sta (ZPPtr3)
inc ZPPtr3
@ -816,15 +813,14 @@ PWDX.StoreChar inx
inc ZPPtr3+1
.9 rts
*--------------------------------------
PWDX.ROOTSESSION
.DA #S.SESSION.P.ROOT
PWDX.ROOT .DA #S.SESSION.P.ROOT
.DA #0 UID
.DA #0 GID
.AZ "root" NAME
.AZ "Root User" GECOS
.AZ "${ROOT}root/" DIR
.AZ "${ROOT}bin/sh" SHELL
PWDX.ROOTSESSION.Size .EQ *-PWDX.ROOTSESSION
PWDX.ROOT.Size .EQ *-PWDX.ROOT
*--------------------------------------
PWDX.GROUP .AS "root:0"
.DA #C.CR

View File

@ -9,12 +9,12 @@ SHARED.IsIDValid
beq SHARED.IsDigit.8
SHARED.IsDigitOrL
cmp #'z'+1
bcs SHARED.IsDigit.RTS
bcs SHARED.RTS
cmp #'a'
bcs SHARED.IsDigit.8
SHARED.IsDigitOrUC
cmp #'Z'+1
bcs SHARED.IsDigit.RTS
bcs SHARED.RTS
cmp #'A'
bcs SHARED.IsDigit.8
@ -24,122 +24,97 @@ SHARED.IsDigit.9
rts
SHARED.IsDigit.8
clc
SHARED.IsDigit.RTS
rts
*--------------------------------------
SHARED.IsHexDigit
jsr ZP.IsDigit
bcc .8
cmp #'A'
bcc SHARED.IsDigit.9
cmp #'F'+1
bcc .1
cmp #'a'
bcc SHARED.IsDigit.9
cmp #'f'+1
bcs SHARED.IsDigit.RTS
eor #$20
.1
* clc
sbc #'A'-11 cc so A->10 (11-CC)
clc
.8 and #$0F
rts
*--------------------------------------
SHARED.TXTPTR.GetY
sta CLRREADAUX
SHARED.TXTPTRgY sta CLRREADAUX
lda (TXTPTR),y
sta SETREADAUX
rts
*--------------------------------------
SHARED.TXTPTR.GetNext
sta CLRREADAUX
SHARED.TXTPTRgn sta CLRREADAUX
lda (TXTPTR)
sta SETREADAUX
beq SHARED.RTS
SHARED.TXTPTR.Next
inc TXTPTR
SHARED.TXTPTRn inc TXTPTR
bne SHARED.RTS
inc TXTPTR+1
rts
*--------------------------------------
SHARED.FORPNT.getY
sta CLRREADAUX
SHARED.FORPNTgY sta CLRREADAUX
lda (FORPNT),y
sta SETREADAUX
rts
*--------------------------------------
SHARED.FORPNT.PutY
sta CLRWRITEAUX
SHARED.FORPNTpY sta CLRWRITEAUX
sta (FORPNT),y
sta SETWRITEAUX
rts
*--------------------------------------
SHARED.FORPNT.GetNext
sta CLRREADAUX
SHARED.FORPNTgn sta CLRREADAUX
lda (FORPNT)
sta SETREADAUX
bra SHARED.FORPNT.Next
bra SHARED.FORPNTn
*--------------------------------------
SHARED.FORPNT.PutNext
sta CLRWRITEAUX
SHARED.FORPNTpn sta CLRWRITEAUX
sta (FORPNT)
sta SETWRITEAUX
SHARED.FORPNT.Next
inc FORPNT
SHARED.FORPNTn inc FORPNT
bne SHARED.RTS
inc FORPNT+1
SHARED.RTS rts
*--------------------------------------
SHARED.GetCharPtr1
lda (ZPPtr1)
SHARED.GetCP1 lda (ZPPtr1)
beq SHARED.RTS
inc ZPPtr1
bne .8
inc ZPPtr1+1 never Z
.8 rts
*--------------------------------------
SHARED.AddYp1ToPtr1
SHARED.AddYp12P1
sec
.HS 90 BCC
SHARED.AddYToPtr1
clc
SHARED.AddY2P1 clc
tya
adc ZPPtr1
sta ZPPtr1
bcc .8
inc ZPPtr1+1
.8 rts
*--------------------------------------
SHARED.AddYp1ToPtr2
SHARED.AddYp12P2
sec
.HS 90 BCC
SHARED.AddYToPtr2
clc
SHARED.AddY2P2 clc
tya
adc ZPPtr2
sta ZPPtr2
bcc .8
clc keep CC as some JMP exit here
inc ZPPtr2+1
.8 rts
*--------------------------------------
SHARED.GetCharPtr2
lda (ZPPtr2)
bne SHARED.NextCharPtr2
SHARED.GetCP2 lda (ZPPtr2)
bne SHARED.NextCP2
rts
SHARED.PutCharPtr2
sta (ZPPtr2)
SHARED.NextCharPtr2
inc ZPPtr2
*--------------------------------------
SHARED.PutCP2 sta (ZPPtr2)
SHARED.NextCP2 inc ZPPtr2
bne .8
inc ZPPtr2+1
.8 rts
*--------------------------------------
SHARED.ZPPtr3.GetY
sta CLRREADAUX
SHARED.PullP2P1 >PULLW ZPPtr2
>PULLW ZPPtr1
rts
*--------------------------------------
SHARED.P3gY sta CLRREADAUX
lda (ZPPtr3),y
sta SETREADAUX
rts

View File

@ -3,22 +3,16 @@ NEW
*--------------------------------------
ZPSListDataOfs .EQ ZPMEMMGR+8
ZPSListDataLen .EQ ZPMEMMGR+10
ZPSListIBlkPtr .EQ ZPMEMMGR+12
ZPSListDBlkPtr .EQ ZPMEMMGR+14
*--------------------------------------
SLIST.KeyLen .BS 1
SLIST.DataLen .BS 2
SLIST.nDataCnt .BS 2
SLIST.nBufCnt .BS 2
SLIST.bStringMode .BS 1
SLIST.bAppend0 .BS 1
SLIST.KeyID .EQ *
SLIST.BytePtr .BS 1
SLIST.BlockPtr .BS 1
SLIST.KeyID.Save .BS 2
SLIST.bStr .BS 1
SLIST.b0 .BS 1
SLIST.KeyID .BS 2
*--------------------------------------
SLISTX.SListGetData
jsr SLIST.Select
SLISTX.GetData jsr SLIST.Select
jsr SLIST.SkipKey
jsr SLIST.GetDataLen
@ -40,7 +34,7 @@ SLISTX.SListGetData
ldx ZPSListDataOfs+1
jsr SLIST.SkipDataAX
stz SLIST.bAppend0
stz SLIST.b0
lda FORPNT
ora FORPNT+1
@ -53,7 +47,7 @@ SLISTX.SListGetData
inc +1 for ending 0
sec
ror SLIST.bAppend0
ror SLIST.b0
.11 ldx #SYS.GetMem
jsr K.SYSCALL2.MAIN !!! Get a buffer In MAIN Mem !!!
@ -74,7 +68,7 @@ SLISTX.SListGetData
sta SLIST.nBufCnt+1
clc
.1 ror SLIST.bStringMode
.1 ror SLIST.bStr
stz ZPSListDataLen
stz ZPSListDataLen+1
@ -84,7 +78,7 @@ SLISTX.SListGetData
inc SLIST.nDataCnt+1
beq .80
.3 bit SLIST.bStringMode
.3 bit SLIST.bStr
bmi .4 String mode : until CR
inc SLIST.nBufCnt
@ -92,14 +86,14 @@ SLISTX.SListGetData
inc SLIST.nBufCnt+1
beq .80 not string mode : until end of buffer
.4 jsr SLIST.GetNextByte
bit SLIST.bStringMode
.4 jsr BLISTX.GetNByte
bit SLIST.bStr
bpl .5
cmp #C.CR
beq .81
.5 jsr SHARED.FORPNT.PutNext
.5 jsr SHARED.FORPNTpn
inc ZPSListDataLen
bne .2
inc ZPSListDataLen+1
@ -109,39 +103,38 @@ SLISTX.SListGetData
sec
.9 rts
.80 lda SLIST.bStringMode
ora SLIST.bAppend0
.80 lda SLIST.bStr
ora SLIST.b0
bpl .82
.81 lda #0
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
.82 >LDYA ZPSListDataLen
.88 ldx #$ff SELF MODIFIED
clc
rts
*--------------------------------------
SLISTX.SListAddData
jsr SLIST.Select
SLISTX.AddData jsr SLIST.Select
jsr SLIST.SkipKey
ldy SLIST.BytePtr
lda (ZPSListDBlkPtr),y
ldy iByte
lda (DBlkPtr),y
pha
clc
adc ZPSListDataLen
sta (ZPSListDBlkPtr),y
sta (DBlkPtr),y
php
jsr SLIST.ToNextByte skip LEN lo
jsr BLISTX.2NByte skip LEN lo
plp
ldy SLIST.BytePtr
lda (ZPSListDBlkPtr),y
ldy iByte
lda (DBlkPtr),y
pha
adc ZPSListDataLen+1
sta (ZPSListDBlkPtr),y
jsr SLIST.ToNextByte skip LEN hi
sta (DBlkPtr),y
jsr BLISTX.2NByte skip LEN hi
plx
pla
@ -161,22 +154,21 @@ SLISTX.SListAddData
inc ZPSListDataLen+1
beq .8
.2 jsr SHARED.FORPNT.GetNext
.2 jsr SHARED.FORPNTgn
bcc .3
jsr SLIST.SetBlockByte override ending 0, already allocated
jsr BLISTX.SetBlkByte override ending 0, already allocated
clc
bra .1
.3 jsr SLIST.AddDataByte
.3 jsr BLISTX.AddByte
bcc .1
rts
.8 lda #0
jmp SLIST.AddDataByte Add an extra 0 to stop Search here
jmp BLISTX.AddByte Add an extra 0 to stop Search here
*--------------------------------------
SLISTX.SListSetData
jsr SLIST.Select
SLISTX.SetData jsr SLIST.Select
jsr SLIST.SkipKey
jsr SLIST.GetDataLen
@ -200,8 +192,8 @@ SLISTX.SListSetData
inc SLIST.nDataCnt+1
beq .8
.2 jsr SHARED.FORPNT.GetNext
jsr SLIST.SetBlockByte
.2 jsr SHARED.FORPNTgn
jsr BLISTX.SetBlkByte
bra .1
.8 clc
@ -210,20 +202,19 @@ SLISTX.SListSetData
sec
rts
*--------------------------------------
SLISTX.SListGetByID
jsr SLIST.Select
SLISTX.GetByID jsr SLIST.Select
jsr SLIST.GetNextByte
jsr BLISTX.GetNByte
tax
beq .9
ldy #0
.1 phy
jsr SLIST.GetNextByte
jsr BLISTX.GetNByte
ply
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
iny
dex
@ -231,10 +222,10 @@ SLISTX.SListGetByID
txa lda #0
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
jsr SLIST.SkipData
>LDYA SLIST.KeyID
>LDYA KeyID
clc
rts
@ -242,20 +233,19 @@ SLISTX.SListGetByID
sec
rts
*--------------------------------------
SLISTX.SListNewKey
jsr SLIST.Search
SLISTX.NewKey jsr SLIST.Search
bcc .99
>LDYA SLIST.KeyID
>STYA SLIST.KeyID.Save End of list
>LDYA KeyID
>STYA SLIST.KeyID End of list
lda SLIST.KeyLen
jsr SLIST.SetBlockByte override ending 0, already allocated
jsr BLISTX.SetBlkByte override ending 0, already allocated
ldy #0
.1 jsr SHARED.TXTPTR.GetY
jsr SLIST.AddDataByte
.1 jsr SHARED.TXTPTRgY
jsr BLISTX.AddByte
bcs .9
iny
@ -263,18 +253,18 @@ SLISTX.SListNewKey
bne .1
lda #0 Data Len lo = 0
jsr SLIST.AddDataByte
jsr BLISTX.AddByte
bcs .9
lda #0 Data Len hi = 0
jsr SLIST.AddDataByte
jsr BLISTX.AddByte
bcs .9
lda #0 Ending Len = 0
jsr SLIST.AddDataByte
jsr BLISTX.AddByte
bcs .9
>LDYA SLIST.KeyID.Save
>LDYA SLIST.KeyID
ldx SLIST.KeyLen
* clc
rts
@ -283,67 +273,25 @@ SLISTX.SListNewKey
sec
.9 rts
*--------------------------------------
SLISTX.SListLookup
jsr SLIST.Search
SLISTX.Lookup jsr SLIST.Search
bcs .9
ldx SLIST.KeyLen
.9 rts
*--------------------------------------
SLISTX.SListFree
pha
jsr K.GetMemPtr
>STYA .1+1
ldx #0
.1 lda $ffff,x SELF MODIFIED
beq .8
jsr K.FreeMem
inx
bra .1
.8 pla
jmp K.FreeMem
*--------------------------------------
SLISTX.SListNew >LDYAI 128 32k Max before out of memory!!!
ldx #S.MEM.F.INIT0+8 index
jsr MEM.GetMem.YAX
bcs .9
>STYA ZPSListIBlkPtr
stx .8+1
>LDYAI 256
ldx #4 data
jsr MEM.GetMem.YAX
bcs .9
>STYA ZPSListDBlkPtr
lda #0
sta (ZPSListDBlkPtr)
txa
sta (ZPSListIBlkPtr)
.8 lda #$ff SELF MODIFIED
.9 rts
*--------------------------------------
* PRIVATE
*--------------------------------------
SLIST.Search jsr K.GetMemPtr
>STYA ZPSListIBlkPtr
>STYA IBlkPtr
lda (ZPSListIBlkPtr)
lda (IBlkPtr)
jsr K.GetMemPtr
>STYA ZPSListDBlkPtr
>STYA DBlkPtr
ldy #$ff
.1 iny
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
beq .11
jsr SHARED.IsIDValid
@ -351,29 +299,29 @@ SLIST.Search jsr K.GetMemPtr
.11 sty SLIST.KeyLen
stz SLIST.BytePtr
stz SLIST.BlockPtr
stz iByte
stz iBlk
.2 >LDYA SLIST.KeyID
>STYA SLIST.KeyID.Save
.2 >LDYA KeyID
>STYA SLIST.KeyID
ldy SLIST.BytePtr
lda (ZPSListDBlkPtr),y
ldy iByte
lda (DBlkPtr),y
beq .9
cmp SLIST.KeyLen
bne .5
jsr SLIST.GetNextByte Skip Len
jsr BLISTX.GetNByte Skip Len
ldy #0
.3 phy
jsr SLIST.GetNextByte
jsr BLISTX.GetNByte
sta .4+1
ply
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
.4 cmp #$ff SELF MODIFIED
bne .5
@ -382,11 +330,11 @@ SLIST.Search jsr K.GetMemPtr
cpy SLIST.KeyLen
bne .3
>LDYA SLIST.KeyID.Save
>LDYA SLIST.KeyID
clc
rts
.5 >LDYA SLIST.KeyID.Save
.5 >LDYA SLIST.KeyID
jsr SLIST.Select.I move back...
jsr SLIST.Next
@ -397,17 +345,17 @@ SLIST.Search jsr K.GetMemPtr
rts
*--------------------------------------
SLIST.Select jsr K.GetMemPtr
>STYA ZPSListIBlkPtr
>STYA IBlkPtr
>LDYA TXTPTR
SLIST.Select.I >STYA SLIST.KeyID
SLIST.Select.I >STYA KeyID
ldy SLIST.BlockPtr
ldy iBlk
lda (ZPSListIBlkPtr),y
lda (IBlkPtr),y
jsr K.GetMemPtr
>STYA ZPSListDBlkPtr
>STYA DBlkPtr
rts
*--------------------------------------
@ -419,90 +367,36 @@ SLIST.SkipData jsr SLIST.GetDataLen
ldx SLIST.DataLen+1
SLIST.SkipDataAX
clc
adc SLIST.BytePtr
sta SLIST.BytePtr
adc iByte
sta iByte
txa
adc SLIST.BlockPtr
sta SLIST.BlockPtr
adc iBlk
sta iBlk
tay
lda (ZPSListIBlkPtr),y
lda (IBlkPtr),y
jsr K.GetMemPtr
>STYA ZPSListDBlkPtr
>STYA DBlkPtr
rts
*--------------------------------------
SLIST.SkipKey ldy SLIST.BytePtr
lda (ZPSListDBlkPtr),y Get KeyLen
SLIST.SkipKey ldy iByte
lda (DBlkPtr),y Get KeyLen
sec
adc SLIST.BytePtr
sta SLIST.BytePtr
bcs SLIST.ToNextBlock
adc iByte
sta iByte
bcc .8
jmp BLISTX.2NBlk
.8 rts
*--------------------------------------
SLIST.GetDataLen
jsr SLIST.GetNextByte Get DataLenLo
jsr BLISTX.GetNByte Get DataLenLo
sta SLIST.DataLen
jsr SLIST.GetNextByte Get DataLenHI
jsr BLISTX.GetNByte Get DataLenHI
sta SLIST.DataLen+1
rts
*--------------------------------------
SLIST.GetNextByte
ldy SLIST.BytePtr
lda (ZPSListDBlkPtr),y
SLIST.ToNextByte
inc SLIST.BytePtr
bne .8
pha
jsr SLIST.ToNextBlock
pla
.8 rts
*--------------------------------------
SLIST.AddDataByte
phy
ldy SLIST.BytePtr
sta (ZPSListDBlkPtr),y
inc SLIST.BytePtr
bne .8
phx
>LDYAI 256
ldx #4
jsr MEM.GetMem.YAX
bcs .9
>STYA ZPSListDBlkPtr
txa
inc SLIST.BlockPtr
ldy SLIST.BlockPtr
sta (ZPSListIBlkPtr),y
* stz SLIST.BytePtr
plx
.8 ply
clc
rts
.9 plx
ply
rts
*--------------------------------------
SLIST.SetBlockByte
ldy SLIST.BytePtr
sta (ZPSListDBlkPtr),y
inc SLIST.BytePtr
bne SLIST.ToNextBlock.RTS
*--------------------------------------
SLIST.ToNextBlock
inc SLIST.BlockPtr
ldy SLIST.BlockPtr
lda (ZPSListIBlkPtr),y
jsr K.GetMemPtr
>STYA ZPSListDBlkPtr
SLIST.ToNextBlock.RTS
rts
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.slistx
LOAD usr/src/sys/kernel.s

View File

@ -56,7 +56,7 @@ K.SetAttr jsr PFT.CheckPath1
K.ChMod jsr PFT.CheckPath2
bcs K.ChMod.RET4
jsr STAT.PullPathAndMode
jsr STAT.PM
stz K.MLI.PARAMS+3+S.FIEX.ACL read mode
@ -100,14 +100,14 @@ K.FStat jsr PFT.CheckNode2
jsr PFT.YAToMLIPATH
jsr FS.Stat.203
bcs K.Stat.Store.RTS
bcs STAT.RTS
ldy #S.FD.REG.REF
lda (pFD),y
sta K.MLI.PARAMS+1
>MLICALL MLIGETEOF
bcs K.Stat.Store.RTS
bcs STAT.RTS
ldx #2
@ -124,8 +124,7 @@ K.Stat.Store.2 sta $ffff,y SELF MODIFIED
bpl K.Stat.Store.1
* clc
K.Stat.Store.RTS
rts
STAT.RTS rts
*/--------------------------------------
* # Stat
* Return information about a file
@ -166,7 +165,7 @@ K.Stat jsr PFT.CheckPath2
K.MKDir jsr PFT.CheckPath2
bcs K.ChMod.RET4
jsr STAT.PullPathAndMode
jsr STAT.PM
lda #S.FI.T.DIR
sta K.MLI.PARAMS+4
@ -187,11 +186,11 @@ K.MKDir jsr PFT.CheckPath2
* CC = OK, CS = ERROR
* A = hFILE
*\--------------------------------------
K.MKFIFO jsr STAT.PullPathAndMode
K.MKFIFO jsr STAT.PM
>LDYAI 512
jsr K.pipe
bcs K.Stat.Store.RTS
bcs STAT.RTS
ldy #0
.1 lda STAT.FIFO,y
@ -227,7 +226,7 @@ K.MKFIFO jsr STAT.PullPathAndMode
*\--------------------------------------
K.MkNod >PULLB IO.hFD
jsr STAT.PullPathAndMode
jsr STAT.PM
K.MkNod.I ldx #2
@ -307,8 +306,7 @@ K.Pipe sta .1+1 SIZE HI
.99
rts
*--------------------------------------
STAT.PullPathAndMode
>PULLW K.S.STAT+S.STAT.MODE
STAT.PM >PULLW K.S.STAT+S.STAT.MODE
>PULLW ZPPtr1 pathname
rts
*--------------------------------------

View File

@ -50,7 +50,7 @@ K.FPutC jsr PFT.CheckNodeA
>PUSHA
>PUSHWI K.IOBuf buf
jsr UNISTD.Write
jsr IO.Write
bcc .8 pop char...
cmp #E.NODATA
@ -158,7 +158,7 @@ K.FPutS jsr PFT.CheckNode2 set IO.hFD
>PUSHA push len LO
>PUSHW ZPPtr2
jsr UNISTD.Write
jsr IO.Write
bcc K.PutS.RET3
cmp #E.NODATA
@ -240,7 +240,7 @@ K.FGetS jsr PFT.CheckNode4
cmp #C.CR
beq .8
jsr SHARED.PutCharPtr2
jsr SHARED.PutCP2
inc ZPPtr1
bne .4
@ -299,28 +299,28 @@ K.GetChar ldy #S.PS.hStdIn
* A = char
*\--------------------------------------
K.GetC jsr PFT.CheckNodeA
bcs K.GetC.RTS
bcs .9
jsr STDIO.Get.1
bcc .8
cmp #E.NODATA
sec
bne K.GetC.RTS I/O error
bne .9 I/O error
inc 0 = BLOCKING
rts
.8 lda K.IOBuf
K.GetC.RTS rts
.9 rts
*--------------------------------------
STDIO.Get.1 lda #0
>PUSHA
inc read 1 byte
>PUSHA
>PUSHWI K.IOBuf
jmp UNISTD.READ
jmp IO.Read
*/--------------------------------------
* # ungetc
* push byte back into input stream
@ -376,7 +376,7 @@ K.FOpen jsr PFT.CheckPath4
inc pStack discard filename
inc pStack
jmp UNISTD.Open
jmp IO.Open
.9 >POP 6
.99 rts
@ -394,7 +394,7 @@ K.FOpen jsr PFT.CheckPath4
K.FClose jsr PFT.CheckNodeA
bcs K.FRead.RTS
jmp UNISTD.Close
jmp IO.Close
*/--------------------------------------
* # FRead (BLOCKING)
* Read bytes from file
@ -412,7 +412,7 @@ K.FClose jsr PFT.CheckNodeA
K.FRead jsr PFT.CheckNodeA
bcs K.FWrite.RET4
jsr UNISTD.Read
jsr IO.Read
bcs K.FWrite.9
K.FRead.RTS rts
@ -433,7 +433,7 @@ K.FRead.RTS rts
K.FWrite jsr PFT.CheckNodeA
bcs K.FWrite.RET4
jsr UNISTD.Write
jsr IO.Write
bcc K.FWrite.RTS
K.FWrite.9 cmp #E.NODATA
@ -720,8 +720,8 @@ K.Rename jsr PFT.CheckPath2
.OR ZPTMP+5 5 Bytes
PrintF.Cnt .BS 2
PrintF.hFILE .BS 1
STDIO.StackBytePtr .BS 1
STDIO.ExitPopCnt .BS 1
STDIO.iStkB .BS 1
STDIO.PopCnt .BS 1
.ED
*--------------------------------------
K.PrintF.PadL .EQ FAC+5
@ -745,9 +745,9 @@ K.PrintF.1 sec format string->ptr2
stx pIOBuf
sta pIOBuf+1 Output buffer->pIOBuf
sty STDIO.ExitPopCnt Total bytes to POP
sty STDIO.PopCnt Total bytes to POP
.1 jsr SHARED.GetCharPtr2
.1 jsr SHARED.GetCP2
bne .22
jmp .8 end of format..
@ -764,7 +764,7 @@ K.PrintF.1 sec format string->ptr2
cmp #'0' ...a 0...mmm... padding char?
bne .4
sta K.PrintF.PadC
jsr SHARED.NextCharPtr2 skip 0 ...
jsr SHARED.NextCP2 skip 0 ...
lda (ZPPtr2)
beq .7
@ -780,7 +780,7 @@ K.PrintF.1 sec format string->ptr2
lda #C.SPACE
sta K.PrintF.PadC
.5 jsr SHARED.AddYToPtr2 skip all processed chars
.5 jsr SHARED.AddY2P2 skip all processed chars
lda (ZPPtr2)
beq .7
@ -792,7 +792,7 @@ K.PrintF.1 sec format string->ptr2
bpl .61
bra .20 unknown ...
.62 jsr SHARED.NextCharPtr2
.62 jsr SHARED.NextCP2
txa yes, jmp to it!
asl
tax
@ -805,7 +805,7 @@ K.PrintF.1 sec format string->ptr2
.10 cmp #'\'
bne .20
jsr SHARED.GetCharPtr2
jsr SHARED.GetCP2
beq .99
ldx #PrintFTBL2.Cnt-1
.12 cmp PrintFTBL2,x
@ -819,7 +819,7 @@ K.PrintF.1 sec format string->ptr2
jsr MATH.Hex2ACC32
bcs .99
jsr SHARED.AddYToPtr2
jsr SHARED.AddY2P2
.14 lda ACC32
bra .20
.19 lda PrintFTBL2.OUT,x
@ -849,6 +849,7 @@ K.PrintF.1 sec format string->ptr2
.80 ldy PrintF.Cnt A=0, Writing to buffer, append \0
sta (pIOBuf),y
clc
.81 >LDYA PrintF.Cnt
* clc
.9 jmp STDIO.Exit
@ -869,7 +870,7 @@ PrintF.ESC jmp (.1,x)
.DA PrintF.I,PrintF.II,PrintF.L
.DA PrintF.S,PrintF.SS
*--------------------------------------
PrintF.B jsr STDIO.GetStackByte
PrintF.B jsr STDIO.GetStkB
bcs PrintF.B.RTS
ldy #8
@ -913,7 +914,7 @@ PrintF.NUM sty .2+1
ror ACC32.Sign save signed/unsigned flag
jsr M32.ACC32Z
.1 jsr STDIO.GetStackByte
.1 jsr STDIO.GetStkB
bcs PrintF.B.RTS
sta ACC32-1,y PULL 4,2 or 1
@ -962,12 +963,13 @@ PrintF.F clc
ldy pStack+1 A,Y = float
ldx #FPU.SETFAC
jsr GP.ROMCALL
ldy #A2osX.NumStrBuf+1 FOUT.1 will do a DEY
ldy #FOUTBuf+1 FOUT.1 will do a DEY
ldx #FPU.FOUT
jsr GP.ROMCALL
PrintF.StrNum ldy #0
.2 lda A2osX.NumStrBuf,y
.2 lda FOUTBuf,y
beq .8
iny
jsr PrintF.PutC
@ -988,11 +990,11 @@ PrintF.SS ldy #$00 PSTR
sty .1+1
jsr STDIO.GetStackByte
jsr STDIO.GetStkB
bcs .9
sta ZPPtr1+1
jsr STDIO.GetStackByte
jsr STDIO.GetStkB
bcs .9
sta ZPPtr1
@ -1040,26 +1042,26 @@ PrintF.SS ldy #$00 PSTR
* clc
.9 rts
*--------------------------------------
PrintF.HH jsr STDIO.GetStackByte
bcs PrintF.PutC.RTS
PrintF.HH jsr STDIO.GetStkB
bcs STDIO.RTS
pha LO byte
jsr STDIO.GetStackByte
jsr STDIO.GetStkB
plx
bcs PrintF.PutC.RTS
bcs STDIO.RTS
pha
txa
jsr PrintF.H.1
plx
bcs PrintF.PutC.RTS
bcs STDIO.RTS
txa
bra PrintF.H.1
*--------------------------------------
PrintF.H jsr STDIO.GetStackByte
bcs PrintF.PutC.RTS
PrintF.H jsr STDIO.GetStkB
bcs STDIO.RTS
PrintF.H.1 jsr STDIO.A2HexAX
jsr PrintF.PutC
bcs PrintF.PutC.RTS
bcs STDIO.RTS
txa
*--------------------------------------
PrintF.PutC phy
@ -1078,7 +1080,7 @@ PrintF.PutC phy
.9 lda #E.BUF
sec
PrintF.PutC.RTS rts
STDIO.RTS rts
*/--------------------------------------
* # ScanF (BLOCKING)
* # FScanF (BLOCKING)
@ -1142,7 +1144,7 @@ K.SScanF.1 clc format string->ptr1
stx ZPPtr2
sta ZPPtr2+1 Output buffer->ZPPtr2
sty STDIO.ExitPopCnt Total bytes to POP
sty STDIO.PopCnt Total bytes to POP
ldx PrintF.hFILE
beq .1
@ -1155,10 +1157,10 @@ K.SScanF.1 clc format string->ptr1
bcc .1
tax
bne PrintF.PutC.RTS
bne STDIO.RTS
>RET 4
.1 jsr SHARED.GetCharPtr1 End Of format?
.1 jsr SHARED.GetCP1 End Of format?
beq .8
cmp #'%' Escape ?
@ -1169,7 +1171,7 @@ K.SScanF.1 clc format string->ptr1
sta .11+1
jsr SHARED.GetCharPtr2
jsr SHARED.GetCP2
beq .9
.11 cmp #$ff Same char in string?
@ -1177,18 +1179,18 @@ K.SScanF.1 clc format string->ptr1
bra .9
.12 jsr SHARED.GetCharPtr2
.12 jsr SHARED.GetCP2
beq .9
cmp #C.SPACE
bne .9
.13 jsr SHARED.GetCharPtr2
.13 jsr SHARED.GetCP2
cmp #C.SPACE another space ?
beq .13
bra .1
.2 jsr SHARED.GetCharPtr1 Get specifier after %
.2 jsr SHARED.GetCP1 Get specifier after %
beq .9 unexpected End of format after "%" ?
ldx #K.SScanFJMP-K.SScanFTBL-2
@ -1203,10 +1205,10 @@ K.SScanF.1 clc format string->ptr1
sec
jmp STDIO.Exit
.4 jsr STDIO.GetStackByte
.4 jsr STDIO.GetStkB
bcs .9
sta ZPPtr3+1
jsr STDIO.GetStackByte
jsr STDIO.GetStkB
bcs .9
sta ZPPtr3
@ -1250,7 +1252,7 @@ K.SScanF.H lda K.SScanFTBL+1,x Get VAR size
jsr MATH.Hex2ACC32
K.SScanF.GetVAL jsr SHARED.AddYToPtr2 Y=char count parsed
K.SScanF.GetVAL jsr SHARED.AddY2P2 Y=char count parsed
.1 ply get back VAL size
@ -1277,7 +1279,7 @@ K.SScanF.S ldy #$ff
.2 lda #0 add \0 to param ptr
sta (ZPPtr3),y
K.SScanF.Fwd jmp SHARED.AddYToPtr2 Y=char count parsed
K.SScanF.Fwd jmp SHARED.AddY2P2 Y=char count parsed
*--------------------------------------
* IN:
* CC : format in ZPPtr1
@ -1297,7 +1299,7 @@ STDIO.GetParams stz PrintF.Cnt
lda (pStack) Bytecount
tay
sty STDIO.StackBytePtr
sty STDIO.iStkB
iny
lda (pStack),y format LO
@ -1340,22 +1342,15 @@ STDIO.GetParams stz PrintF.Cnt
.1 ldx #K.IOBuf
lda /K.IOBuf
STDIO.GetParams.RTS
rts
*--------------------------------------
STDIO.GetStackPtr
jsr STDIO.GetStackByte
bcs STDIO.GetParams.RTS
tax
*--------------------------------------
STDIO.GetStackByte
phy
STDIO.GetStkB phy
ldy STDIO.StackBytePtr
ldy STDIO.iStkB
beq .9
lda (pStack),y
dec STDIO.StackBytePtr
dec STDIO.iStkB
ply
clc
@ -1372,7 +1367,7 @@ STDIO.Exit php
lda pStack
sec
adc STDIO.ExitPopCnt
adc STDIO.PopCnt
sta pStack
pla

View File

@ -43,7 +43,7 @@ K.AToF >STYA TXTPTR Ptr to source string
jsr CHARGOT
ldx #FPU.FIN
jmp GP.RomCallGetFacOnStack
jmp GP.GetFac
*/--------------------------------------
* # StrToL/StrToUL
* Convert String to 32 bits (unsigned) int
@ -340,7 +340,7 @@ K.Expand ldy #2
.10 lda (TXTPTR) End of CSTR?
beq .80
jsr SHARED.TXTPTR.Next
jsr SHARED.TXTPTRn
.11 cmp #'''
bne .21
@ -374,13 +374,13 @@ K.Expand ldy #2
dec ENV.VarEndChar "}" expected
jsr SHARED.TXTPTR.Next skip "{"
jsr SHARED.TXTPTRn skip "{"
bra .40
.31 jsr ENV.SysVar 0-9 *#?@$!
bcs .40
.35 jsr SHARED.TXTPTR.Next skip $x
.35 jsr SHARED.TXTPTRn skip $x
bra .10
.40 jsr ENV.ExpandStrVar
@ -408,7 +408,7 @@ K.Expand ldy #2
jsr SHARED.IsIDValid
bcs .72
jsr SHARED.TXTPTR.Next
jsr SHARED.TXTPTRn
bra .70
.72 lda ENV.VarEndChar
@ -465,7 +465,7 @@ ENV.SysVarsNum jsr MATH.A2STR10NP
ldy #0
.1 lda A2osX.NumStrBuf,y
.1 lda FOUTBuf,y
beq ENV.SysVarsNum.8
iny

View File

@ -35,8 +35,8 @@ K.StrLen >STYA .1+1
* `char * strcat ( char * destination, const char * source );`
* ## ASM
* **In:**
* `>PUSHWI destination`
* `>PUSHWI source`
* `>LDYAI destination`
* `>SYSCALL strcat`
* ## RETURN VALUE
* Y,A = destination
@ -50,8 +50,8 @@ K.StrCat sec
* `char * strcpy ( char * destination, const char * source );`
* ## ASM
* **In:**
* `>PUSHWI destination`
* `>PUSHWI source`
* `>LDYAI destination`
* `>SYSCALL strcpy`
* ## RETURN VALUE
* Y,A = destination
@ -59,11 +59,11 @@ K.StrCat sec
K.StrCpy clc
phy
pha
jsr SHARED.SPtr1PPtr2
jsr SHARED.PullP2P1
bcc .2
.1 jsr SHARED.GetCharPtr1
.1 jsr SHARED.GetCP1
bne .1
.2 ldy #0
@ -185,8 +185,8 @@ K.StrLwr ldx #2
* `int strcmp(const char *s1, const char *s2);`
* ## ASM
* **In:**
* `>PUSHWI s1`
* `>PUSHWI s2`
* `>LDYAI s1`
* `>SYSCALL strcmp`
* ## RETURN VALUE
* CC : match
@ -203,8 +203,8 @@ K.StrCmp sec
* `int strcasecmp(const char *s1, const char *s2);`
* ## ASM
* **In:**
* `>PUSHWI s1`
* `>PUSHWI s2`
* `>LDYAI s1`
* `>SYSCALL strcasecmp`
* ## RETURN VALUE
* CC : match
@ -213,19 +213,19 @@ K.StrCmp sec
* CS, Y,A > 0 or < 0
*\--------------------------------------
K.StrCaseCmp clc
jsr SHARED.SPtr1PPtr2
jsr SHARED.PullP2P1
ldy #0
.1 lda (ZPPtr1),y
beq .7
jsr K.StrCaseCmp.toUpper
jsr .80
sta .2+1
lda (ZPPtr2),y
beq .9
jsr K.StrCaseCmp.toUpper
jsr .80
.2 eor #$ff SELF MODIFIED
bne .9
@ -252,22 +252,19 @@ K.StrCaseCmp clc
sec
rts
*--------------------------------------
K.StrCaseCmp.toUpper
bcs .9
.80 bcs .99
cmp #'a'
bcc .9
bcc .99
cmp #'z'+1
bcs .1
bcs .81
eor #$20
.1 clc
.81 clc
.9 rts
*--------------------------------------
SHARED.SPtr1PPtr2
>STYA ZPPtr1
>PULLW ZPPtr2
rts
.99 rts
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.string

View File

@ -1,6 +1,11 @@
NEW
AUTO 3,1
*--------------------------------------
STRVX.StrVFree jsr K.FreeMem
clc
rts
*--------------------------------------
STRVX.StrVNew jsr K.GetMem
bcs .9
@ -21,7 +26,7 @@ STRVX.StrVSet jsr STRVX.GetID
ldy #$ff
.1 iny
jsr SHARED.FORPNT.GetY
jsr SHARED.FORPNTgY
bne .1
tya
@ -44,7 +49,7 @@ STRVX.StrVSet jsr STRVX.GetID
.2 ldy #$ff
.3 iny
jsr SHARED.FORPNT.GetY
jsr SHARED.FORPNTgY
sta (ZPPtr1),y
bne .3
@ -74,14 +79,14 @@ STRVX.StrVSet jsr STRVX.GetID
sta (ZPPtr2),y
bne .6
jsr SHARED.AddYp1ToPtr1
jsr SHARED.AddYp1ToPtr2
jsr SHARED.AddYp12P1
jsr SHARED.AddYp12P2
bra .40
*--------------------------------------
.7 ldy #$ff
.8 iny
jsr SHARED.FORPNT.GetY
jsr SHARED.FORPNTgY
bne .8
tya
@ -109,7 +114,7 @@ STRVX.StrVSet jsr STRVX.GetID
.10 ldy #$ff
.11 iny
jsr SHARED.FORPNT.GetY
jsr SHARED.FORPNTgY
sta (ZPPtr1),y
bne .11
@ -138,7 +143,7 @@ STRVX.StrVGet jsr STRVX.GetID
.5 iny
lda (ZPPtr1),y
jsr SHARED.FORPNT.PutY
jsr SHARED.FORPNTpY
bne .5
>LDYA FORPNT
@ -149,11 +154,6 @@ STRVX.StrVGet jsr STRVX.GetID
clc
.9 rts
*--------------------------------------
STRVX.StrVFree jsr K.FreeMem
clc
rts
*--------------------------------------
STRVX.GetID jsr K.GetMemPtr
>STYA ZPPtr1 strV

View File

@ -18,7 +18,7 @@ DRV.TERM cld
*--------------------------------------
TERM.STATUS jsr TERM.GetIOCTLBufCntDCB
ldy #S.IOCTL.STATCODE
ldy #S.IOCTL.S
lda (ZPIOCTL),y
tay
bra TERM.TOAUX

View File

@ -41,7 +41,7 @@ TERMX .DA TERMX.STATUS
TERMX.STATUS tya
beq .1
cmp #S.IOCTL.STATCODE.GETDIB
cmp #S.IOCTL.S.GETDIB
bne .3
ldy #S.DIB-1
@ -55,13 +55,13 @@ TERMX.STATUS tya
dey
bne .2
ldy #S.DCB.TTY.STATUS
ldy #S.DCB.TTY.S
lda (ZPDCBPtr),y
sta (ZPBufPtr)
clc
rts
.3 cmp #S.IOCTL.STATCODE.EOF
.3 cmp #S.IOCTL.S.EOF
bne .9
jsr TERMX.ISOPENED
@ -120,7 +120,7 @@ TERMX.OPEN jsr TERMX.ISOPENED
sta (ZPDCBPtr) #S.DCB.TTY.DEVID
ldy #S.DCB.TTY.STATUS
ldy #S.DCB.TTY.S
lda (ZPDCBPtr),y
ora #S.DIB.S.OPENED
ora TERMX.DIB+S.DIB.S
@ -171,7 +171,7 @@ TERMX.CLOSE jsr TERMX.ISOPENED
sec
rts
*--------------------------------------
TERMX.ISOPENED ldy #S.DCB.TTY.STATUS
TERMX.ISOPENED ldy #S.DCB.TTY.S
lda (ZPDCBPtr),y
bit #S.DIB.S.OPENED
rts
@ -279,7 +279,7 @@ TERMX.WRITE jsr TERMX.CUROFF
inc ZPCnt+1
beq .8
.2 ldy #S.DCB.TTY.MODE
.2 ldy #S.DCB.TTY.M
lda (ZPDCBPtr),y
tax
jsr .3
@ -306,7 +306,7 @@ TERMX.OUT jsr TERM.GetBufByte
cmp #IAC
bne .1
lda #S.DCB.TTY.MODE.IAC
lda #S.DCB.TTY.M.IAC
jmp TERMX.SETM
.1 cmp #C.DEL
@ -421,10 +421,10 @@ TERMX.OUT.SI clc
clc
rts
*--------------------------------------
TERMX.OUT.ESC lda #S.DCB.TTY.MODE.ESC
TERMX.OUT.ESC lda #S.DCB.TTY.M.ESC
bra TERMX.SETM
*--------------------------------------
TERMX.ESC jsr TERM.GetBufByte y = #S.DCB.TTY.MODE
TERMX.ESC jsr TERM.GetBufByte y = #S.DCB.TTY.M
ldx #EscCodes.Cnt-1
.2 cmp EscCodes,x
@ -450,19 +450,18 @@ TERMX.ESC jsr TERM.GetBufByte y = #S.DCB.TTY.MODE
.DA Scroll.Dn M
.DA Scroll.Up D
.DA RESET c
.DA TERMX.SETM.RTS [
.DA TERMX.SETM.RTS (
.DA TERMX.SETM.RTS )
.DA TERMX.RTS [
.DA TERMX.RTS (
.DA TERMX.RTS )
*--------------------------------------
TERMX.SETM0 lda #0
TERMX.SETM ldy #S.DCB.TTY.MODE
TERMX.SETM ldy #S.DCB.TTY.M
sta (ZPDCBPtr),y
ldy #S.DCB.TTY.INBUF
lda #S.DCB.TTY.INBUF
sta (ZPDCBPtr),y
clc
TERMX.SETM.RTS rts
rts
*--------------------------------------
TERMX.CSI ldy #S.DCB.TTY.INBUF
lda (ZPDCBPtr),y
@ -501,12 +500,12 @@ TERMX.CSI.Exec stz CsiH
sta CsiH
.1 jsr SHARED.NextCharPtr2
.1 jsr SHARED.NextCP2
.2 jsr MATH.Dec2ACC32
bcs .5
jsr SHARED.AddYToPtr2
jsr SHARED.AddY2P2
lda #255
ldx ACC32+1
bne .3
@ -921,12 +920,12 @@ COUT.IAC.DONT
COUT.IAC.EXIT
*--------------------------------------
RESET.MODE lda #0
ldy #S.DCB.TTY.MODE
ldy #S.DCB.TTY.M
sta (ZPDCBPtr),y
rts
*--------------------------------------
RESET ldy #S.DCB.TTY.MODE
.1 lda RESET.VALUES-S.DCB.TTY.MODE,y
RESET ldy #S.DCB.TTY.M
.1 lda RESET.VALUES-S.DCB.TTY.M,y
sta (ZPDCBPtr),y
iny
cpy #S.DCB.TTY.INBUF+1
@ -1076,16 +1075,16 @@ TERMX.CBLNK bit bActive
.9 rts
TERMX.CUROFF bit bActive
bpl TERMX.CBLNK.RTS
bpl TERMX.RTS
ldy #S.DCB.TTY.bCURON
lda (ZPDCBPtr),y
beq TERMX.CBLNK.RTS
beq TERMX.RTS
TERMX.CBLNK.1 lda (ZPDCBPtr),y
bne TERMX.CBLNK.OFF
jsr GetCharAtCurPos
bcs TERMX.CBLNK.RTS Out of screen
bcs TERMX.RTS Out of screen
and #$80
eor #" "
@ -1101,14 +1100,14 @@ TERMX.CBLNK.SET
TERMX.CBLNK.OFF
jsr GetCharAtCurPos
bcc TERMX.CBLNK.SET if not Out of screen
TERMX.CBLNK.RTS
rts
TERMX.RTS rts
*--------------------------------------
DecOut jsr MATH.A2STR10NP
ldx #0
.1 lda A2osX.NumStrBuf,x
beq TERMX.CBLNK.RTS
.1 lda FOUTBuf,x
beq TERMX.RTS
inx
jsr Char.Out.Put
bra .1
@ -1225,7 +1224,7 @@ TERMX.CLRSCR.2 sty .1+1
*--------------------------------------
TERMX.Title.ON ldy #S.DCB.TTY.bTITLE
lda (ZPDCBPtr),y
bmi TERMX.Title.RTS
bmi TERMX.RTS2
lda #$ff
sta (ZPDCBPtr),y
@ -1240,7 +1239,7 @@ TERMX.Title.ON ldy #S.DCB.TTY.bTITLE
ldy #0
.1 jsr SHARED.TXTPTR.GetNext
.1 jsr SHARED.TXTPTRgn
beq .3
cmp #$40
@ -1264,11 +1263,12 @@ TERMX.Title.ON ldy #S.DCB.TTY.bTITLE
cpy #80
bne .4
TERMX.Title.RTS rts
TERMX.RTS2 rts
TERMX.Title.OFF ldy #S.DCB.TTY.bTITLE
lda (ZPDCBPtr),y
bpl TERMX.Title.RTS
bpl TERMX.RTS2
lda #$0
sta (ZPDCBPtr),y
*--------------------------------------
@ -1455,7 +1455,7 @@ CtrlChars.Cnt .EQ *-CtrlChars
*--------------------------------------
EscCodes .AZ "78MDc[()"
EscCodes.Cnt .EQ *-EscCodes
EscModes .DA #0,#0,#0,#0,#0,#S.DCB.TTY.MODE.CSI,#S.DCB.TTY.MODE.G0,#S.DCB.TTY.MODE.G1
EscModes .DA #0,#0,#0,#0,#0,#S.DCB.TTY.M.CSI,#S.DCB.TTY.M.G0,#S.DCB.TTY.M.G1
CsiCodes .AS "hlmnrABCDJKH"
CsiCodes.Cnt .EQ *-CsiCodes
*--------------------------------------

View File

@ -13,17 +13,17 @@ DAY0 .EQ 4 day 0 was a thursday
* TXTPTR format
*--------------------------------------
TIMEX.StrFTime
.1 jsr SHARED.TXTPTR.GetNext
.1 jsr SHARED.TXTPTRgn
beq .8
cmp #'%'
beq .2
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
bra .1
.2 ldx #K.StrFTime.Cnt-1
jsr SHARED.TXTPTR.GetNext
jsr SHARED.TXTPTRgn
beq .8
.3 cmp K.StrFTime.Tbl,x
@ -47,7 +47,7 @@ TIMEX.StrFTime
.7 jmp (K.StrFTime.JMP,x)
.8 lda #0 Terminate C string
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
clc
rts
*--------------------------------------
@ -83,7 +83,7 @@ K.StrFTime.STR sta ZPPtr4
bcc .10
ldx #3
.10 jsr SHARED.ZPPtr3.GetY get required S.Time field value
.10 jsr SHARED.P3gY get required S.Time field value
tay
beq .2 Illegal value, print ???
@ -100,7 +100,7 @@ K.StrFTime.STR sta ZPPtr4
.3 iny
lda (ZPPtr4),y
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
tya
cmp (ZPPtr4)
beq .8
@ -110,22 +110,22 @@ K.StrFTime.STR sta ZPPtr4
.8 rts
*--------------------------------------
K.StrFTime.II ldy #S.Time.HOUR
jsr SHARED.ZPPtr3.GetY
jsr SHARED.P3gY
cmp #12
bcc K.StrFTime.addDecA
sbc #12
bra K.StrFTime.addDecA
K.StrFTime.P ldy #S.Time.HOUR
jsr SHARED.ZPPtr3.GetY
jsr SHARED.P3gY
cmp #12
bcc .1
lda #'p'
.HS 2C bit abs
.1 lda #'a'
jsr SHARED.FORPNT.PutNext
jsr SHARED.FORPNTpn
lda #'m'
jmp SHARED.FORPNT.PutNext
jmp SHARED.FORPNTpn
t
K.StrFTime.YY ldy #S.Time.CENTURY
jsr K.StrFTime.addDecPtr3Y
@ -133,16 +133,16 @@ K.StrFTime.YY ldy #S.Time.CENTURY
K.StrFTime.AtX ldy K.StrFTime.OfsX-7,x
*--------------------------------------
K.StrFTime.addDecPtr3Y
jsr SHARED.ZPPtr3.GetY
jsr SHARED.P3gY
K.StrFTime.addDecA
ldx #2
ldy #'0'
clc
jsr MATH.A2STR10
lda A2osX.NumStrBuf
jsr SHARED.FORPNT.PutNext
lda A2osX.NumStrBuf+1
jmp SHARED.FORPNT.PutNext
lda FOUTBuf
jsr SHARED.FORPNTpn
lda FOUTBuf+1
jmp SHARED.FORPNTpn
*--------------------------------------
TIMEX.DAY >PSTR "???"
>PSTR "Monday"
@ -173,25 +173,25 @@ TIMEX.PTime2Time.BAD
rts
TIMEX.PTime2Time
ldy #3
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
and #%11100000
bne TIMEX.PTime2Time.BAD
dey
jsr SHARED.TXTPTR.GetY
jsr SHARED.TXTPTRgY
and #%11000000
bne TIMEX.PTime2Time.BAD
dey ldy #1
jsr SHARED.TXTPTR.GetY Get Year
jsr SHARED.TXTPTRgY Get Year
lsr C is high bit of month
ldy #S.Time.YEAR
jsr SHARED.FORPNT.PutY set year
jsr SHARED.FORPNTpY set year
sta ARG32+3 for computing Century/WDAY later
ldy #0
jsr SHARED.TXTPTR.GetY Get Month/day
jsr SHARED.TXTPTRgY Get Month/day
tax save Day
ror C is high bit of month
@ -205,7 +205,7 @@ TIMEX.PTime2Time
bcs TIMEX.PTime2Time.BAD
ldy #S.Time.MONTH
jsr SHARED.FORPNT.PutY set month
jsr SHARED.FORPNTpY set month
sta K.ComputeWDAY.1+1
txa get back day
@ -216,7 +216,7 @@ TIMEX.PTime2Time
bcs TIMEX.PTime2Time.BAD
iny
jsr SHARED.FORPNT.PutY set day
jsr SHARED.FORPNTpY set day
dec adjust range 0.30 for MOD 7
sta ARG32.Sign For later...
@ -231,22 +231,22 @@ TIMEX.PTime2Time
eor #1 toggle C
adc #19 set date before 1970 -> 20xx
ldy #0
jsr SHARED.FORPNT.PutY set Century
jsr SHARED.FORPNTpY set Century
sta ARG32+2 for computing WDAY later
ldy #2
jsr SHARED.TXTPTR.GetY Get Min
jsr SHARED.TXTPTRgY Get Min
tax
iny
jsr SHARED.TXTPTR.GetY Get Hour
jsr SHARED.TXTPTRgY Get Hour
ldy #S.Time.HOUR
jsr SHARED.FORPNT.PutY set hour
jsr SHARED.FORPNTpY set hour
iny
txa
jsr SHARED.FORPNT.PutY set min
jsr SHARED.FORPNTpY set min
iny
lda #0
jsr SHARED.FORPNT.PutY set seconds (ProDOS does not provide it)
jsr SHARED.FORPNTpY set seconds (ProDOS does not provide it)
*--------------------------------------
* 1/1/1970 was Thursday...if not leap, add one, if leap add 2
*--------------------------------------
@ -324,7 +324,7 @@ K.ComputeWDAY.1 ldx #$ff SELF MODIFIED : month
ldy #S.Time.WDAY
* clc
jmp SHARED.FORPNT.PutY
jmp SHARED.FORPNTpY
*--------------------------------------
* TXTPTR ctime
* FORPNT S.TIME
@ -332,7 +332,7 @@ K.ComputeWDAY.1 ldx #$ff SELF MODIFIED : month
TIMEX.CTime2Time
ldy #3
.1 jsr SHARED.TXTPTR.GetY
.1 jsr SHARED.TXTPTRgY
sta ARG32,y ARG = ctime
dey
bpl .1
@ -366,7 +366,7 @@ TIMEX.CTime2Time
tya
ldy #S.Time.WDAY
jsr SHARED.FORPNT.PutY
jsr SHARED.FORPNTpY
ldy #CENT0
sty ZPPtr3
@ -402,11 +402,11 @@ K.CTime2Time.Y
lda ZPPtr3
ldy #S.Time.CENTURY
jsr SHARED.FORPNT.PutY
jsr SHARED.FORPNTpY
ldy #S.Time.YEAR
lda ZPPtr3+1
jsr SHARED.FORPNT.PutY
jsr SHARED.FORPNTpY
K.CTime2Time.MD
ldx #1 X = January
@ -442,13 +442,13 @@ K.CTime2Time.MD
.4 pla
ldy #S.TIME.MONTH
txa
jsr SHARED.FORPNT.PutY
jsr SHARED.FORPNTpY
iny S.TIME.DAY
lda ARG32
inc
jsr SHARED.FORPNT.PutY
jsr SHARED.FORPNTpY
K.CTime2Time.HMS
ldx #3
@ -467,7 +467,7 @@ K.CTime2Time.HMS
dey #S.TIME.HOUR
lda ARG32
jsr SHARED.FORPNT.PutY
jsr SHARED.FORPNTpY
clc
rts
@ -479,7 +479,7 @@ K.CTime2Time.HMS
jsr M32.DIVMOD
ply
lda TMP32
jsr SHARED.FORPNT.PutY
jsr SHARED.FORPNTpY
rts
*--------------------------------------
* In :

View File

@ -21,12 +21,12 @@ K.Open jsr PFT.YAToMLIPATH
stz IO.Open.AUXTYPE
stz IO.Open.AUXTYPE+1
*--------------------------------------
UNISTD.Open ldx #5 /dev/
IO.Open ldx #5 /dev/
cpx K.MLI.PATH
bcs .8
.1 lda K.MLI.PATH,x
cmp UNISTD.DEV-1,x
cmp IO.DEV-1,x
bne .8
dex
bne .1
@ -47,11 +47,11 @@ UNISTD.Open ldx #5 /dev/
.2
* .DA STDIO.IOERR REG
.DA STDIO.IOERR DIR
.DA IO.OPEN.CDEV
.DA IO.OPEN.BDEV
.DA IO.OPEN.DEV
.DA IO.OPEN.DEV
.DA STDIO.IOERR LNK
.DA IO.OPEN.DSOCK
.DA IO.OPEN.SSOCK
.DA IO.OPEN.SOCK
.DA IO.OPEN.SOCK
.DA IO.OPEN.PIPE
.8 jmp FS.OPEN.REG
@ -68,16 +68,16 @@ UNISTD.Open ldx #5 /dev/
*\--------------------------------------
K.Close jsr DEV.GetPFD
UNISTD.Close lda (pFD) #S.FD.T
IO.Close lda (pFD) #S.FD.T
tax
jmp (.1,x)
.1 .DA FS.CLOSE.REG
.DA FS.CLOSE.DIR
.DA IO.CLOSE.CDEV
.DA IO.CLOSE.BDEV
.DA IO.CLOSE.DEV
.DA IO.CLOSE.DEV
.DA STDIO.IOERR LNK
.DA IO.CLOSE.DSOCK
.DA IO.CLOSE.SSOCK
.DA IO.CLOSE.SOCK
.DA IO.CLOSE.SOCK
.DA IO.CLOSE.PIPE
*/--------------------------------------
* # read
@ -95,7 +95,7 @@ UNISTD.Close lda (pFD) #S.FD.T
*\--------------------------------------
K.Read jsr DEV.GetPFD
UNISTD.Read lda (pFD) #S.FD.T
IO.Read lda (pFD) #S.FD.T
tax
jmp (.1,x)
.1 .DA FS.READ.REG
@ -122,7 +122,7 @@ UNISTD.Read lda (pFD) #S.FD.T
*\--------------------------------------
K.Write jsr DEV.GetPFD
UNISTD.Write lda (pFD) #S.FD.T
IO.Write lda (pFD) #S.FD.T
tax
jmp (.1,x)
.1 .DA FS.WRITE.REG
@ -134,19 +134,16 @@ UNISTD.Write lda (pFD) #S.FD.T
.DA IO.WRITE.SSOCK
.DA IO.WRITE.PIPE
*--------------------------------------
IO.OPEN.CDEV
IO.OPEN.BDEV ldx #IOCTL.OPEN
IO.OPEN.DEV ldx #IOCTL.OPEN
lda IO.hDevNod
jsr DEV.pDrvJmp
bcs IO.WRITE.CDEV.RTS
bcs IO.RTS
*--------------------------------------
IO.OPEN.DSOCK
IO.OPEN.SSOCK lda IO.hDevNod
IO.OPEN.SOCK lda IO.hDevNod
clc
rts
*--------------------------------------
IO.CLOSE.CDEV
IO.CLOSE.BDEV ldx #IOCTL.CLOSE
IO.CLOSE.DEV ldx #IOCTL.CLOSE
lda IO.hDevNod
jmp DEV.pDrvJmp
*--------------------------------------
@ -160,17 +157,13 @@ IO.WRITE.CDEV ldx #IOCTL.WRITE
>LDYAI K.S.IOCTL
jsr DEV.pDrvJmp
bcs .9
bcs IO.RTS
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
.9
IO.WRITE.CDEV.RTS
rts
IO.RTS rts
*--------------------------------------
IO.CLOSE.DSOCK
IO.CLOSE.SSOCK
ldy #S.FD.SSOCK.CLOSE
IO.CLOSE.SOCK ldy #S.FD.SSOCK.CLOSE
.HS 2C BIT ABS
*--------------------------------------
IO.EOF.SSOCK ldy #S.FD.SSOCK.EOF
@ -184,14 +177,14 @@ IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE
lda (pFD),y
tax Function Offset in LIB
ldy #S.FD.SSOCK.IOHANDLER
ldy #S.FD.SSOCK.IOH
lda (pFD),y
jsr K.GetMemPtr
>STYA .1+1
lda IO.hFD
.1 jmp $FFFF SELF MODIFIED
*--------------------------------------
IO.EOF.CDEV lda #S.IOCTL.STATCODE.EOF
IO.EOF.CDEV lda #S.IOCTL.S.EOF
jmp DEV.GetDevStatus
*/--------------------------------------
* # ChOwn
@ -206,12 +199,12 @@ IO.EOF.CDEV lda #S.IOCTL.STATCODE.EOF
* ## RETURN VALUE
*\--------------------------------------
K.ChOwn jsr PFT.CheckPath2
bcs K.ChOwn.RET4
bcs .9
stz K.MLI.PARAMS+3+S.FIEX.ACL read mode
>MLICALL MLIACL
bcs K.ChOwn.RET4
bcs .9
lda (pStack)
bmi .1
@ -229,9 +222,9 @@ K.ChOwn jsr PFT.CheckPath2
>MLICALL MLIACL
K.ChOwn.RET4 >RET 4
.9 >RET 4
*--------------------------------------
UNISTD.DEV .AS "/dev/"
IO.DEV .AS "/dev/"
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.unistd

View File

@ -23,31 +23,32 @@ NEW
A2osX.Unpak >STYA ZPOutBufPtr
.INB usr/src/shared/x.unpak.s
PAKME.MAIN .DA A2osX.MAIN
PAKME.AUX .DA A2osX.AUX
PAKME.GP .DA A2osX.GP
PAKME.D1 .DA A2osX.D1
PAKME.D2 .DA A2osX.D2
PAKME.E0 .DA A2osX.E0
PAKME.MAIN .DA MAIN
PAKME.AUX .DA AUX
PAKME.GP .DA GP
PAKME.D1 .DA D1
PAKME.D2 .DA D2
PAKME.E0 .DA E0
A2osX.MAIN .DA #0
.DA A2osX.MAIN.S
MAIN .DA #0
.DA MAIN.S
A2osX.MAIN.B .PH A2osX.EndTables
MAIN.B .PH A2osX.EndTables
.INB usr/src/sys/kernel.s.core
.INB usr/src/sys/kernel.s.drv
.INB usr/src/sys/kernel.s.pft
.INB usr/src/sys/kernel.s.fs
.INB usr/src/sys/kernel.s.mathf
Mem.MLoMem .EQ *
.EP
A2osX.MAIN.S .EQ *-A2osX.MAIN.B
MAIN.S .EQ *-MAIN.B
A2osX.AUX .DA #0
.DA A2osX.AUX.S
AUX .DA #0
.DA AUX.S
A2osX.AUX.B .PH Mem.XHiMem
AUX.B .PH Mem.XHiMem
.DA SHARED.TXTPTR.GetNext
.DA SHARED.TXTPTRgn
.INB usr/src/sys/kernel.s.jmpx
.INB usr/src/sys/kernel.s.termx
@ -57,24 +58,23 @@ A2osX.AUX.B .PH Mem.XHiMem
.INB usr/src/sys/kernel.s.md5x
.INB usr/src/sys/kernel.s.pwdx
.INB usr/src/sys/kernel.s.slistx
* .INB usr/src/sys/kernel.s.blistx
.INB usr/src/sys/kernel.s.blistx
.INB usr/src/sys/kernel.s.errorx
.EP
A2osX.AUX.S .EQ *-A2osX.AUX.B
AUX.S .EQ *-AUX.B
A2osX.GP .DA #0
.DA A2osX.GP.S
GP .DA #0
.DA GP.S
A2osX.GP.B .PH A2osX.SYSCALL
GP.B .PH A2osX.SYSCALL
.INB usr/src/sys/kernel.s.gp
A2osX.GP.SC .EQ GP.CodeEnd-GP.CodeStart
.EP
A2osX.GP.S .EQ *-A2osX.GP.B
GP.S .EQ *-GP.B
A2osX.D1 .DA #0
.DA A2osX.D1.S
D1 .DA #0
.DA D1.S
A2osX.D1.B .PH $D000
D1.B .PH $D000
.DA #RRAMWRAMBNK1
.INB usr/src/sys/kernel.s.stat
.INB usr/src/sys/kernel.s.dirent
@ -83,12 +83,12 @@ A2osX.D1.B .PH $D000
.INB usr/src/sys/kernel.s.dev
.INB usr/src/sys/kernel.s.pipe
.EP
A2osX.D1.S .EQ *-A2osX.D1.B
D1.S .EQ *-D1.B
A2osX.D2 .DA #0
.DA A2osX.D2.S
D2 .DA #0
.DA D2.S
A2osX.D2.B .PH $D000
D2.B .PH $D000
.DA #RRAMWRAMBNK2
.INB usr/src/sys/kernel.s.mount
.INB usr/src/sys/kernel.s.arg
@ -98,12 +98,12 @@ A2osX.D2.B .PH $D000
.INB usr/src/sys/kernel.s.bin
.INB usr/src/sys/kernel.s.ps
.EP
A2osX.D2.S .EQ *-A2osX.D2.B
D2.S .EQ *-D2.B
A2osX.E0 .DA #0
.DA A2osX.E0.S
E0 .DA #0
.DA E0.S
A2osX.E0.B .PH $E000
E0.B .PH $E000
.INB usr/src/sys/kernel.s.jmp
.INB usr/src/sys/kernel.s.irq
.INB usr/src/sys/kernel.s.shared
@ -127,7 +127,8 @@ DevMgr.Free .DA DevMgr.FreeMem
.DA DevMgr.HiMem
DevMgr.FreeMem .EQ *
.EP
A2osX.E0.S .EQ *-A2osX.E0.B
E0.S .EQ *-E0.B
.AS "PAKME" TAG
.DA $2000 BIN ORG