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. | | | 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. | | | 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. | | | 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. | | | 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. | | | 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). | | | BL | -- n | | | Leave the ASCII character value for space (decimal 32). | |

View File

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

View File

@ -6,7 +6,7 @@ Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.
# D2TrkRead16s # D2TrkRead16s
Write a track (16 sectors) Write a track (16 sectors)
PUSHB = DSSS0000 PUSHB = DSSS0000
PUSHB = TrackNum * 4 : 0->136+ PUSHB = TrackNum * 4 : 0->136+
PUSHW = Ptr to 16*256 buffer PUSHW = Ptr to 16*256 buffer
## RETURN VALUE ## RETURN VALUE
@ -16,7 +16,9 @@ Write a track (16 sectors)
# D2TrkWrite16s # D2TrkWrite16s
Write a track (16 sectors) Write a track (16 sectors)
PUSHB = DSSS0000 PUSHB = DSSS0000
PUSHB = TrackNum * 4 : 0->136+ PUSHB = VolNum
PUSHB = HeadNum (0,1)
PUSHB = TrackNum * 4 : 0->136+
PUSHW = Ptr to 16*256 buffer PUSHW = Ptr to 16*256 buffer
## RETURN VALUE ## RETURN VALUE
@ -38,7 +40,7 @@ Write a track (NIBBLE)
Compute space needed for ProDOS Catalog Compute space needed for ProDOS Catalog
## C ## C
int getprodoscatsize (short int options, short int catsize, int devsize ); int getprodoscatsize (short int options, short int catsize, int devsize );
## ASM ## ASM
**In:** **In:**
@ -46,7 +48,7 @@ int getprodoscatsize (short int options, short int catsize, int devsize );
PUSHB = Catalog Size (in blocks) PUSHB = Catalog Size (in blocks)
PUSHB = Options PUSHB = Options
## RETURN VALUE ## RETURN VALUE
X=BlockCount (max 22) X=BlockCount (max 22)
Y,A=BufSize (max $4400) 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) 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 ldx #0
.1 ldy #$ff .1 ldy #$ff
.2 jsr .7 get next valid char in src text .2 jsr .10 get next valid char in src text
bcs .3 bcs .4
.20 jsr CORE.ToUpperCase jsr CORE.ToUpperCase
eor (ZPPtr1),y match table char ? eor (ZPPtr1),y match table char ?
asl compare only 7 bits 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 bcc .2 not last char in this keyword
jsr .7 next char in text... jsr .10 next char in text...
bcc .4 valid....failed bcc .4 valid....failed
.8 tya Keyword Len .3 tya Keyword Len
jmp CORE.SkipA jmp CORE.SkipA
.3 dey .4 dey
lda (ZPPtr1),y was last char in this keyword ? lda (ZPPtr1),y was last char in this keyword ?
bmi .8 bmi .3
iny iny
.41 jsr CORE.IncPtr1 skip chars to next keyword .5 jsr CORE.IncPtr1 skip chars to next keyword
.4 lda (ZPPtr1) .6 lda (ZPPtr1)
bpl .41 bpl .5
jsr CORE.IncPtr1 jsr CORE.IncPtr1
.6 inx
inx inx
lda (ZPPtr1) Array Ending 0, lookup failed lda (ZPPtr1) Array Ending 0, lookup failed
bne .1 bne .1
.9 sec .9 sec
rts 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... lda (ZPInputBufPtr),y Get Src text char...
beq .9 end of text beq .9 end of text
cmp #'$' cmp #'$'
bne .70 bne .11
clc clc
rts rts
.70 jmp CORE.IsLetterOrDigit CS=end of valid chars .11 jmp CORE.IsLetterOrDigit CS=end of valid chars
*-------------------------------------- *--------------------------------------
CORE.IncPtr1 inc ZPPtr1 CORE.IncPtr1 inc ZPPtr1
bne .8 bne .8
@ -517,22 +585,22 @@ CORE.ToUpperCase
CORE.ToUpperCase.RTS CORE.ToUpperCase.RTS
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 beq .8
inx dex
cpx #ACOS.AOPSChars.Cnt bpl .1
bcc .1
plx
sec
rts rts
.8 txa .8 plx
asl clc
tax
* clc
rts rts
*-------------------------------------- *--------------------------------------
CORE.IsEndExp cmp #')' CORE.IsEndExp cmp #')'

View File

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

View File

@ -61,7 +61,7 @@ CS.START cld
.DA #0 .DA #0
.DA CS.END-CS.START Code Size (without Constants) .DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize .DA DS.END-DS.START Data SegmentSize
.DA #128 Stack Size .DA #256 Stack Size
.DA #ZS.END-ZS.START Zero Page Size .DA #ZS.END-ZS.START Zero Page Size
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
@ -84,13 +84,7 @@ L.MSG.FWREFERR .DA MSG.FWREFERR
L.MSG.STR .DA MSG.STR L.MSG.STR .DA MSG.STR
L.MSG.INT16 .DA MSG.INT16 L.MSG.INT16 .DA MSG.INT16
*-------------------------------------- *--------------------------------------
L.ACOS.AOPS .DA ACOS.AOPS L.ACOS.OPS .DA ACOS.OPS
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.KW .DA ACOS.KW L.ACOS.KW .DA ACOS.KW
J.ACOS.KW .DA KW.ADDINT J.ACOS.KW .DA KW.ADDINT
.DA KW.APPEND .DA KW.APPEND
@ -515,26 +509,34 @@ MSG.INT16 .AZ "%I"
OptionList .AS "DdTt" OptionList .AS "DdTt"
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
*-------------------------------------- *--------------------------------------
ACOS.AOPSChars .AS "+-*/" ACOS.OPSChars .AS "+-*/<>="
ACOS.AOPSChars.Cnt .EQ *-ACOS.AOPSChars ACOS.OPSChars.Cnt .EQ *-ACOS.OPSChars
*-------------------------------------- *--------------------------------------
ACOS.AOPS .AT "MOD" ACOS.OPS .AT "*"
.HS 00 .AT "/"
*-------------------------------------- .AT "MOD"
ACOS.BOPS .AT "=" .AT "+"
.AT "<>" .AT "-"
.AT "><"
.AT "<" .AT "<"
.AT ">"
.AT "<=" .AT "<="
.AT "=<" .AT "=<"
.AT ">"
.AT ">=" .AT ">="
.AT "=>" .AT "=>"
.AT "NOT" .AT "<>"
.AT "><"
.AT "="
* .AT "NOT"
.AT "AND" .AT "AND"
.AT "OR" .AT "OR"
.HS 00 .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" ACOS.KW .AT "ADDINT"
.AT "APPEND" .AT "APPEND"
.AT "BYTE" .AT "BYTE"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -2,14 +2,30 @@ NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
* A = Type, X = OP * Y = Type, A = OP
*-------------------------------------- *--------------------------------------
CSH.BOP.EXEC jmp (J.CSH.BOPS,x) CSH.BOP.EXEC cpy #CSH.T.UINT
*-------------------------------------- bcs .1
CSH.BOPS.ADD asl
tax
jmp (J.CSH.BOPS.ADDt,x)
.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.ADDi8
CSH.BOPS.ADDu8 clc CSH.BOPS.ADDu8 clc
>PULLA >PULLA
@ -17,24 +33,8 @@ CSH.BOPS.ADDu8 clc
sta (pStack) sta (pStack)
clc clc
rts 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 CSH.BOPS.SUB
tax
jmp (J.CSH.BOPS.SUBt,x)
CSH.BOPS.SUBi8 CSH.BOPS.SUBi8
CSH.BOPS.SUBu8 sec CSH.BOPS.SUBu8 sec
ldy #1 ldy #1
@ -44,52 +44,8 @@ CSH.BOPS.SUBu8 sec
inc pStack inc pStack
clc clc
rts 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 CSH.BOPS.SHL
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.SHL8 lda (pStack) CSH.BOPS.SHL8 lda (pStack)
tax tax
beq .8 beq .8
@ -106,80 +62,20 @@ CSH.BOPS.SHL8 lda (pStack)
.8 inc pStack .8 inc pStack
clc clc
rts 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.SHR
CSH.BOPS.L CSH.BOPS.L
CSH.BOPS.G CSH.BOPS.G
CSH.BOPS.LE CSH.BOPS.LE
CSH.BOPS.GE CSH.BOPS.GE
CSH.BOPS.EQ CSH.BOPS.EQ
CSH.BOPS.NE CSH.BOPS.NE
CSH.BOPS.AND CSH.BOPS.AND
CSH.BOPS.OR CSH.BOPS.OR
CSH.BOPS.EOR CSH.BOPS.EOR
CSH.BOPS.LAND CSH.BOPS.LAND
CSH.BOPS.LOR CSH.BOPS.LOR
@ -224,7 +120,8 @@ EXEC.puts >PULLYA
>PUSHYA >PUSHYA
rts rts
*-------------------------------------- *--------------------------------------
EXEC.printf >SYSCALL PrintF EXEC.printf
>SYSCALL PrintF
>PUSHYA >PUSHYA
rts rts
*-------------------------------------- *--------------------------------------

View File

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

View File

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

View File

@ -10,20 +10,22 @@ NEW
.INB inc/mli.i .INB inc/mli.i
.INB inc/mli.e.i .INB inc/mli.e.i
*-------------------------------------- *--------------------------------------
CSH.E.SYNTAX .EQ $C0 CSH.T.VOID .EQ 0
CSH.E.STACKERR .EQ $C2 CSH.T.UCHAR .EQ 1
CSH.E.SOVERFLW .EQ $C3 CSH.T.SCHAR .EQ 2
*E.NOWHILE .EQ $C4 CSH.T.UINT .EQ 3
*E.NOFOR .EQ $C5 CSH.T.SINT .EQ 4
*E.NOIF .EQ $C6 CSH.T.ULONG .EQ 5
CSH.E.UNEXPEOF .EQ $C8 CSH.T.SLONG .EQ 6
CSH.E.UNDEF .EQ $C9 CSH.T.FLOAT .EQ 7
CSH.E.INVDIR .EQ $CA CSH.T.VARIADIC .EQ $FF
* *--------------------------------------
CSH.E.NOVERFLW .EQ $D0 CSH.Q.POINTER .EQ %01000000
CSH.E.TMISMATCH .EQ $D1 CSH.Q.PPOINTER .EQ %10000000
CSH.E.OOM .EQ $D2 CSH.Q.PPPOINTER .EQ %11000000
CSH.E.DUP .EQ $D3 CSH.Q.PCONST .EQ %00100000
CSH.Q.CONST .EQ %00010000
CSH.Q.FUNC .EQ %00001000
*-------------------------------------- *--------------------------------------
* Zero Page Segment, up to 32 bytes * Zero Page Segment, up to 32 bytes
*-------------------------------------- *--------------------------------------
@ -86,16 +88,16 @@ L.MSG.DEBUG .DA MSG.DEBUG
L.MSG.ERR .DA MSG.ERR L.MSG.ERR .DA MSG.ERR
L.ENV.INCLUDE .DA ENV.INCLUDE L.ENV.INCLUDE .DA ENV.INCLUDE
L.CSH.BOPS .DA CSH.BOPS L.CSH.BOPS .DA CSH.BOPS
J.CSH.BOPS .DA CSH.BOPS.ADD J.CSH.BOPS .DA CSH.BOPS.MUL
.DA CSH.BOPS.SUB
.DA CSH.BOPS.MUL
.DA CSH.BOPS.DIV .DA CSH.BOPS.DIV
.DA CSH.BOPS.MOD .DA CSH.BOPS.MOD
.DA CSH.BOPS.ADD
.DA CSH.BOPS.SUB
.DA CSH.BOPS.SHL .DA CSH.BOPS.SHL
.DA CSH.BOPS.SHR .DA CSH.BOPS.SHR
.DA CSH.BOPS.L .DA CSH.BOPS.L
.DA CSH.BOPS.G
.DA CSH.BOPS.LE .DA CSH.BOPS.LE
.DA CSH.BOPS.G
.DA CSH.BOPS.GE .DA CSH.BOPS.GE
.DA CSH.BOPS.EQ .DA CSH.BOPS.EQ
.DA CSH.BOPS.NE .DA CSH.BOPS.NE
@ -104,30 +106,6 @@ J.CSH.BOPS .DA CSH.BOPS.ADD
.DA CSH.BOPS.EOR .DA CSH.BOPS.EOR
.DA CSH.BOPS.LAND .DA CSH.BOPS.LAND
.DA CSH.BOPS.LOR .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.FN .DA CSH.FN
L.CSH.DIRS .DA CSH.DIRS L.CSH.DIRS .DA CSH.DIRS
L.CSH.KW .DA CSH.KW L.CSH.KW .DA CSH.KW
@ -450,23 +428,6 @@ OptionList .AS "DdTt"
OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace 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 .AS "!~+-*/%=&|^<>"
CSH.OPChars.Cnt .EQ *-CSH.OPChars CSH.OPChars.Cnt .EQ *-CSH.OPChars
*-------------------------------------- *--------------------------------------
@ -505,16 +466,16 @@ CSH.AOPS >PSTR "="
* Bitwise Operators: & | ^ ~ * Bitwise Operators: & | ^ ~
* Logical Operators: && || * Logical Operators: && ||
*-------------------------------------- *--------------------------------------
CSH.BOPS >PSTR "+" CSH.BOPS >PSTR "*"
>PSTR "-"
>PSTR "*"
>PSTR "/" >PSTR "/"
>PSTR "%" >PSTR "%"
>PSTR "+"
>PSTR "-"
>PSTR "<<" >PSTR "<<"
>PSTR ">>" >PSTR ">>"
>PSTR "<" >PSTR "<"
>PSTR ">"
>PSTR "<=" >PSTR "<="
>PSTR ">"
>PSTR ">=" >PSTR ">="
>PSTR "==" >PSTR "=="
>PSTR "!=" >PSTR "!="
@ -525,6 +486,8 @@ CSH.BOPS >PSTR "+"
>PSTR "||" >PSTR "||"
.HS 00 .HS 00
*-------------------------------------- *--------------------------------------
CSH.Type2FPU .DA #FPU.wMUL,#FPU.iMUL,#FPU.uMUL,#FPU.lMUL,FPU.fMUL
*--------------------------------------
* Reserved Directives: * Reserved Directives:
*-------------------------------------- *--------------------------------------
CSH.DIRS >PSTR "define" CSH.DIRS >PSTR "define"
@ -559,7 +522,7 @@ CSH.TYPES >PSTR "void"
CSH.FTYPES >PSTR "fastcall" CSH.FTYPES >PSTR "fastcall"
* .HS 00 * .HS 00
*-------------------------------------- *--------------------------------------
CSH.TYPESIZE .HS 0001020405010204 CSH.TYPESIZE .HS 0001010202040405
*-------------------------------------- *--------------------------------------
CSH.FN CSH.FN
* float cos ( float x ); * float cos ( float x );

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -502,8 +502,8 @@ CMD.REN lda (ZPArgVBufPtr)
lda #0 lda #0
sta (ZPPtr2),y sta (ZPPtr2),y
>PUSHW ZPPtr2
>PUSHW ZPArgVBufPtr >PUSHW ZPArgVBufPtr
>LDYA ZPPtr2
>SYSCALL StrCat >SYSCALL StrCat
lda ZPTmpW lda ZPTmpW
@ -776,6 +776,7 @@ CMD.CASE jsr CORE.StkGetCtx Get context in CORE.TestResult
dey get hVALUE dey get hVALUE
lda (pData),y lda (pData),y
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>PUSHYA
>SYSCALL StrCmp >SYSCALL StrCmp
ror CS if != ror CS if !=
and #$80 and #$80
@ -832,8 +833,8 @@ CMD.FOR jsr CORE.StkGetCtx
jsr CORE.ArgV.Next jsr CORE.ArgV.Next
beq CMD.E.CSYN beq CMD.E.CSYN
>PUSHW L.IN
>PUSHW ZPArgVBufPtr >PUSHW ZPArgVBufPtr
>LDYA L.IN
>SYSCALL StrCaseCmp >SYSCALL StrCaseCmp
bcs CMD.E.CSYN 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 bra EXP.OP.UNARY.DEF.8 TRUE
*-------------------------------------- *--------------------------------------
EXP.TEST.BINARY lda CORE.Operator EXP.TEST.BINARY lda CORE.Operator
cmp #6 =, !=, <= <, >=, > cmp #6
bcs EXP.TEST.BINARY.NUM bcc EXP.TEST.BINARY.NUM
>LDYA ZPArgVBufPrev
>LDYA ZPArgVBufPrev =, !=, <= <, >=, >
>STYA ZPPtr1 >STYA ZPPtr1
jsr CORE.ArgV.Next jsr CORE.ArgV.Next
beq EXP.TEST.BINARY.ESYN beq EXP.TEST.BINARY.ESYN
>PUSHW ZPPtr1 >PUSHW ZPPtr1
>LDYA ZPArgVBufPtr >PUSHW ZPArgVBufPtr
>SYSCALL StrCmp >SYSCALL StrCmp
bcs .1 CS if != bcs .1 CS if !=
lda #%010 010 str1 = str2 lda #%010 010 str1 = str2
bra EXP.TEST.BINARY.END bra .3
.1 asl CS if < .1 asl CS if <
bcs .2 bcs .2
lda #%100 010 str1 < str2 lda #%100 010 str1 < str2
bra EXP.TEST.BINARY.END bra .3
.2 lda #%001 010 str1 > str2 .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 EXP.TEST.BINARY.ESYN4
jsr IncPStack4 jsr IncPStack4
@ -259,26 +268,18 @@ EXP.TEST.BINARY.NUM
jsr EXP.GetInt32Arg jsr EXP.GetInt32Arg
bcs EXP.TEST.BINARY.ESYN4 bcs EXP.TEST.BINARY.ESYN4
>FPU CMP32 lda CORE.Operator
* clc
adc #FPU.lL
tax tax
bmi .4 ACC < ARG jsr A2osX.FPUCALL
bne .5 lda (pStack)
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
beq .8 false beq .8 false
lda #$80 true lda #$80 true
.8 rts .8 >RET 4
*-------------------------------------- *--------------------------------------
EXP.GetInt8Exp jsr EXP.GET EXP.GetInt8Exp jsr EXP.GET
bcc EXP.GetInt8YA bcc EXP.GetInt8YA

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -129,53 +129,149 @@ NEW
*-------------------------------------- *--------------------------------------
* FPU Entry Point * FPU Entry Point
*-------------------------------------- *--------------------------------------
FPU.ADD16 .EQ 0 FPU.wMUL .EQ 0
FPU.SUB16 .EQ 2 FPU.wDIV .EQ 2
FPU.MUL16 .EQ 4 FPU.wMOD .EQ 4
FPU.IMUL16 .EQ 6 FPU.wADD .EQ 6
FPU.DIV16 .EQ 8 FPU.wSUB .EQ 8
FPU.IDIV16 .EQ 10
FPU.MOD16 .EQ 12
FPU.IMOD16 .EQ 14
FPU.CMP16 .EQ 16
FPU.ICMP16 .EQ 18
FPU.ADD32 .EQ 20 FPU.wSHL .EQ 10
FPU.SUB32 .EQ 22 FPU.wSHR .EQ 12
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.FADD .EQ 40 FPU.wL .EQ 14
FPU.FSUB .EQ 42 FPU.wLE .EQ 16
FPU.FMULT .EQ 44 FPU.wG .EQ 18
FPU.FDIV .EQ 46 FPU.wGE .EQ 20
FPU.PWR .EQ 48
FPU.LOG .EQ 50 FPU.wE .EQ 22
FPU.SQR .EQ 52 FPU.wNE .EQ 24
FPU.EXP .EQ 54
FPU.COS .EQ 56
FPU.SIN .EQ 58
FPU.TAN .EQ 60
FPU.ATAN .EQ 62
FPU.SETARG .EQ 64 fadd..... FPU.wAND .EQ 26
FPU.SETFAC .EQ 66 log...., PrintF FPU.wOR .EQ 28
FPU.wxOR .EQ 30
FPU.GETFAC .EQ 68 Copy FAC to (FORPNT) FPU.wLAND .EQ 32
FPU.FCOMP .EQ 70 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.iSHL .EQ 46
FPU.QINT .EQ 74 lrintf FPU.iSHR .EQ 48
FPU.FIN .EQ 76 sscanf FPU.iL .EQ 50
FPU.FOUT .EQ 78 PrintF 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 .MA FPU
ldx #FPU.]1 ldx #FPU.]1

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,6 @@
NEW NEW
AUTO 3,1 AUTO 3,1
.LIST ON .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF lib/string.o .TF lib/string.o
@ -12,12 +12,20 @@ NEW
*-------------------------------------- *--------------------------------------
>PSTR "strlen" >PSTR "strlen"
.DA CODE.strlen .DA CODE.strlen
>PSTR "strcat"
.DA CODE.strcat
>PSTR "strcpy"
.DA CODE.strcpy
>PSTR "strdup" >PSTR "strdup"
.DA CODE.strdup .DA CODE.strdup
>PSTR "strupr" >PSTR "strupr"
.DA CODE.strupr .DA CODE.strupr
>PSTR "strlwr" >PSTR "strlwr"
.DA CODE.strlwr .DA CODE.strlwr
>PSTR "strcmp"
.DA CODE.strcmp
>PSTR "strcasecmp"
.DA CODE.strcasecmp
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CODE.strlen .DA #CODE.strlen.L CODE.strlen .DA #CODE.strlen.L
@ -25,7 +33,15 @@ CODE.strlen .DA #CODE.strlen.L
CODE.strlen.L .EQ *-CODE.strlen CODE.strlen.L .EQ *-CODE.strlen
rts 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 CODE.strdup .DA #CODE.strdup.L
>SYSCALL strdup >SYSCALL strdup
@ -42,7 +58,15 @@ CODE.strlwr .DA #CODE.strlwr.L
CODE.strlwr.L .EQ *-CODE.strlwr CODE.strlwr.L .EQ *-CODE.strlwr
rts 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 MAN
SAVE usr/src/lib/string.o.s SAVE usr/src/lib/string.o.s

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -337,10 +337,12 @@ CORE.Dispatch ldx #1 skip PS0
* X unmodified * X unmodified
*-------------------------------------- *--------------------------------------
CORE.GetPSByID jsr CORE.GetPS CORE.GetPSByID jsr CORE.GetPS
bcs CORE.GetPS.RTS bcs .9
lda PS.TABLE.hPS,y lda PS.TABLE.hPS,y
jmp K.GetMemPtr jmp K.GetMemPtr
.9 rts
*-------------------------------------- *--------------------------------------
* X,A unmodified * X,A unmodified
*-------------------------------------- *--------------------------------------
@ -362,7 +364,7 @@ CORE.GetPS tay
rts rts
.8 clc .8 clc
CORE.GetPS.RTS rts rts
*-------------------------------------- *--------------------------------------
*CORE.DumpEvent ldy #S.EVT-1 *CORE.DumpEvent ldy #S.EVT-1
*.1 >PUSHB (pEvent),y *.1 >PUSHB (pEvent),y
@ -470,35 +472,6 @@ CORE.PSResume sei
inc IRQ.InKernel inc IRQ.InKernel
rti 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.VBLState .BS 1
CORE.TickPerSec .BS 1 CORE.TickPerSec .BS 1
CORE.TickPer10t .BS 1 CORE.TickPer10t .BS 1

View File

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

View File

@ -119,10 +119,10 @@ IO.hFD .BS 1
IO.hDevNod .BS 1 IO.hDevNod .BS 1
.ED .ED
*-------------------------------------- *--------------------------------------
A2osX.SaveSM .EQ $100 Aux SaveSM .EQ $100 Aux
A2osX.SaveSX .EQ $101 Aux SaveSX .EQ $101 Aux
A2osX.NumStrLen .EQ $102 Aux *FOUTBufPtr .EQ $102 Aux
A2osX.NumStrBuf .EQ $103 Aux FOUTBuf .EQ $103 Aux
*-------------------------------------- *--------------------------------------
* Main $200 -> 2FF : (Used By ProDOS,Clock DRV....) * Main $200 -> 2FF : (Used By ProDOS,Clock DRV....)
* Main $300 -> 3EF : <free> * Main $300 -> 3EF : <free>
@ -186,21 +186,15 @@ H.BIN.CS.SIZE .EQ 8
H.BIN.DS.SIZE .EQ 10 H.BIN.DS.SIZE .EQ 10
H.BIN.SS.SIZE .EQ 12 H.BIN.SS.SIZE .EQ 12
H.BIN.ZP.SIZE .EQ 13 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.DEVID .EQ 0
S.DCB.TTY.STATUS .EQ 1 S.DCB.TTY.S .EQ 1
S.DCB.TTY.MODE .EQ 2 S.DCB.TTY.M .EQ 2
S.DCB.TTY.MODE.ESC .EQ 2 S.DCB.TTY.M.ESC .EQ 2
S.DCB.TTY.MODE.CSI .EQ 4 S.DCB.TTY.M.CSI .EQ 4
S.DCB.TTY.MODE.IAC .EQ 6 S.DCB.TTY.M.IAC .EQ 6
S.DCB.TTY.MODE.G0 .EQ 8 S.DCB.TTY.M.G0 .EQ 8
S.DCB.TTY.MODE.G1 .EQ 10 S.DCB.TTY.M.G1 .EQ 10
S.DCB.TTY.CH .EQ 3 S.DCB.TTY.CH .EQ 3
S.DCB.TTY.CH.SAVE .EQ 4 S.DCB.TTY.CH.SAVE .EQ 4
S.DCB.TTY.CV .EQ 5 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 lda Nod.Table.hFD-2,x
jsr K.GetMemPtr Y,A = pPD, X = hDevNod jsr K.GetMemPtr Y,A = pPD, X = hDevNod
>STYA pFD for UNISTD.Open >STYA pFD for IO.Open
* clc * clc
rts rts
@ -107,10 +107,10 @@ K.GetDevStatus >PULLW K.S.IOCTL+S.IOCTL.BUFPTR
jsr DEV.GetPFD jsr DEV.GetPFD
bcs K.GetDev.9 bcs K.GetDev.9
lda #S.IOCTL.STATCODE.GETDIB lda #S.IOCTL.S.GETDIB
*-------------------------------------- *--------------------------------------
DEV.GetDevStatus DEV.GetDevStatus
sta K.S.IOCTL+S.IOCTL.STATCODE sta K.S.IOCTL+S.IOCTL.S
ldy #S.FD.DEV.DEVID ldy #S.FD.DEV.DEVID
lda (pFD),y lda (pFD),y
@ -132,8 +132,7 @@ DEV.pDrvJmp jmp (pDrv)
* ## RETURN VALUE * ## RETURN VALUE
* A = hDEV * A = hDEV
*\-------------------------------------- *\--------------------------------------
K.MKDev >PULLW ZPPtr2 ptr2=name K.MKDev jsr SHARED.PullP2P1 ptr2=name,tr1=fd
>PULLW ZPPtr1 ptr1=fd
ldx #1 ldx #1
@ -193,7 +192,7 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
jsr DEV.GetPDrv jsr DEV.GetPDrv
lda #S.IOCTL.STATCODE.STATUS lda #S.IOCTL.S.STATUS
jsr DEV.GetDevStatus jsr DEV.GetDevStatus
bcs .99 bcs .99

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,12 @@
NEW NEW
AUTO 3,1 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) M16.ADD lda #$72 ADC (zp)
.HS 2C BIT ABS .HS 2C BIT ABS
M16.SUB lda #$F2 SBC (zp) M16.SUB lda #$F2 SBC (zp)
@ -22,30 +28,99 @@ M16.SUB lda #$F2 SBC (zp)
rts rts
*-------------------------------------- *--------------------------------------
* Returns: M16.SHL sec
* ff X < Y .HS 90 BCC
* 0 X = Y M16.SHR clc
* 1 X > Y
*--------------------------------------
*M16.UCMP
*M16.ICMP
M16.CMP jsr M16.SUB
tay A = HI byte
bmi .2
.1 ora (pStack) LO byte lda (pStack)
inc pStack
inc pStack
tax
beq .8 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 .HS 2C BIT ABS
.2 lda #$ff .1 lda #%100
.HS 2C BIT ABS
.8 inc pStack .2 lda #%010
inc pStack .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 M16.UMUL clc
.HS B0 BCS .HS B0 BCS
@ -56,19 +131,18 @@ M16.IMUL sec
jsr M16.MUL jsr M16.MUL
plp plp
bcc M16.PutTMP32 bcc M16.PutTMP
M16.ITMP lda ACC32.Sign M16.ITMP lda ACC32.Sign
eor ARG32.Sign eor ARG32.Sign
bpl M16.PutTMP32 bpl M16.PutTMP
*-------------------------------------- *--------------------------------------
* M16.PutnTMP32 * M16.PutnTMP
*-------------------------------------- *--------------------------------------
lda #TMP32 lda #TMP32
.HS 2C BIT ABS .HS 2C BIT ABS
*-------------------------------------- *--------------------------------------
M16.PutnARG32 M16.PutnARG lda #ARG32
lda #ARG32
sta .1+1 sta .1+1
ldy #0 ldy #0
ldx #3 ldx #3
@ -84,7 +158,7 @@ M16.PutnARG32
rts rts
*-------------------------------------- *--------------------------------------
M16.UDIV clc M16.uDIV clc
.HS B0 BCS .HS B0 BCS
M16.IDIV sec M16.IDIV sec
clv clv
@ -106,15 +180,15 @@ M16.MOD php
lda ACC32.Sign IDIV lda ACC32.Sign IDIV
eor ARG32.Sign eor ARG32.Sign
bpl M16.PutARG32 bpl M16.PutARG
bra M16.PutnARG32 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 .HS 2C BIT ABS
*-------------------------------------- *--------------------------------------
M16.PutARG32 ldy #ARG32 M16.PutARG ldy #ARG32
lda $0,y lda $0,y
sta (pStack) sta (pStack)
@ -151,7 +225,7 @@ M16.MULDIVMOD >PULLW ACC32
.1 lda ACC32.Sign .1 lda ACC32.Sign
bpl M16.RTS bpl M16.RTS
*-------------------------------------- *--------------------------------------
* M16.nACC32 * M16.nACC
*-------------------------------------- *--------------------------------------
ldy #ACC32 ldy #ACC32
.HS 2C BIT ABS .HS 2C BIT ABS
@ -198,7 +272,6 @@ M16.MUL stz TMP32
dex dex
bne .1 bne .1
clc
rts rts
*-------------------------------------- *--------------------------------------
M16.DIVMOD stz TMP32 M16.DIVMOD stz TMP32

View File

@ -1,57 +1,149 @@
NEW NEW
AUTO 3,1 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) M32.ADD lda #$72 ADC (zp)
.HS 2C BIT ABS .HS 2C BIT ABS
M32.SUB lda #$F2 SBC (zp) 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 ldy #4
ldx #4 ldx #4
.2 lda (pStack),y .1 lda (pStack),y
.3 adc (pStack) SELF MODIFIED .2 adc (pStack) SELF MODIFIED
sta (pStack),y sta (pStack),y
inc pStack inc pStack
dex dex
bne .2 bne .1
rts rts
*-------------------------------------- *--------------------------------------
* Returns: M32.SHL sec
* ff X < Y .HS 90 BCC
* 0 X = Y M32.SHR clc
* 1 X > Y
*--------------------------------------
*M32.UCMP
*M32.ICMP
M32.CMP jsr M32.SUB
tay A = BYTE 3 lda (pStack)
bmi .2 inc pStack
.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
inc pStack inc 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 M32.UMUL clc
.HS B0 BCS .HS B0 BCS
@ -62,18 +154,18 @@ M32.IMUL sec
jsr M32.MUL jsr M32.MUL
plp plp
bcc M32.PutTMP32 bcc M32.PutTMP
M32.ITMP lda ACC32.Sign M32.ITMP lda ACC32.Sign
eor ARG32.Sign eor ARG32.Sign
bpl M32.PutTMP32 bpl M32.PutTMP
*-------------------------------------- *--------------------------------------
* M32.PutnTMP32 * M32.PutnTMP
*-------------------------------------- *--------------------------------------
lda #TMP32 lda #TMP32
.HS 2C BIT ABS .HS 2C BIT ABS
*-------------------------------------- *--------------------------------------
M32.PutnARG32 lda #ARG32 M32.PutnARG lda #ARG32
sta .1+1 sta .1+1
ldy #0 ldy #0
ldx #3 ldx #3
@ -111,15 +203,15 @@ M32.MOD php
lda ACC32.Sign IDIV lda ACC32.Sign IDIV
eor ARG32.Sign eor ARG32.Sign
bpl M32.PutARG32 bpl M32.PutARG
bra M32.PutnARG32 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 .HS 2C BIT ABS
*-------------------------------------- *--------------------------------------
M32.PutARG32 lda #ARG32 M32.PutARG lda #ARG32
sta .1+1 sta .1+1
ldy #3 ldy #3
@ -131,7 +223,7 @@ M32.PutARG32 lda #ARG32
rts rts
*-------------------------------------- *--------------------------------------
M32.PopACC32 ldy #0 M32.PopACC ldy #0
.1 lda (pStack) .1 lda (pStack)
inc pStack inc pStack
@ -143,7 +235,7 @@ M32.PopACC32 ldy #0
sta ACC32.Sign sta ACC32.Sign
rts rts
*-------------------------------------- *--------------------------------------
M32.GetARG32 ldy #0 M32.GetARG ldy #0
.1 lda (pStack),y .1 lda (pStack),y
sta ARG32,y sta ARG32,y
@ -156,8 +248,8 @@ M32.GetARG32 ldy #0
M32.RTS rts M32.RTS rts
*-------------------------------------- *--------------------------------------
M32.MULDIVMOD php M32.MULDIVMOD php
jsr M32.PopACC32 jsr M32.PopACC
jsr M32.GetARG32 jsr M32.GetARG
plp plp
bcc M32.RTS bcc M32.RTS
jsr .1 jsr .1
@ -165,7 +257,7 @@ M32.MULDIVMOD php
* M32.ARG32ABS * M32.ARG32ABS
*-------------------------------------- *--------------------------------------
lda ARG32.Sign lda ARG32.Sign
bmi M32.nARG32 bmi M32.nARG
rts rts
*-------------------------------------- *--------------------------------------
* M32.ACC32ABS * M32.ACC32ABS
@ -173,9 +265,9 @@ M32.MULDIVMOD php
.1 lda ACC32.Sign .1 lda ACC32.Sign
bpl M32.RTS bpl M32.RTS
*-------------------------------------- *--------------------------------------
M32.nACC32 ldy #ACC32 M32.nACC ldy #ACC32
.HS 2C BIT ABS .HS 2C BIT ABS
M32.nARG32 ldy #ARG32 M32.nARG ldy #ARG32
ldx #3 ldx #3
sec sec
@ -217,15 +309,11 @@ M32.MUL jsr M32.TMP32Z
eor #4 eor #4
bne .2 bne .2
.3 asl ACC32 .3 jsr MATH.ACC32x2
rol ACC32+1
rol ACC32+2
rol ACC32+3
dex dex
bne .1 bne .1
clc
rts rts
*-------------------------------------- *--------------------------------------
* ARG32 = ARG32 div ACC32 * ARG32 = ARG32 div ACC32
@ -239,11 +327,14 @@ M32.DIVMOD jsr M32.TMP32Z
rol ARG32+1 rol ARG32+1
rol ARG32+2 rol ARG32+2
rol ARG32+3 rol ARG32+3
rol TMP32 rol TMP32
rol TMP32+1 rol TMP32+1
rol TMP32+2 rol TMP32+2
rol TMP32+3 rol TMP32+3
sec sec
lda TMP32 lda TMP32
sbc ACC32 sbc ACC32
pha pha

View File

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

View File

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

View File

@ -21,7 +21,7 @@ PFT.CheckPathYA >PUSHYA
>PUSHWI K.Buf256 >PUSHWI K.Buf256
>SYSCALL2 realpath >SYSCALL2 realpath
bcs PFT.YAToMLIPATH.RTS bcs PFT.RTS
ldx #0 ldx #0
@ -92,8 +92,7 @@ PFT.YAToMLIPATH >STYA .1+1
>STYA K.MLI.PARAMS+1 >STYA K.MLI.PARAMS+1
clc clc
PFT.YAToMLIPATH.RTS PFT.RTS rts
rts
*-------------------------------------- *--------------------------------------
PFT.CheckNode4 ldy #4 PFT.CheckNode4 ldy #4
.HS 2C BIT ABS .HS 2C BIT ABS
@ -107,7 +106,7 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL #
jsr DEV.GetPFD jsr DEV.GetPFD
bcs .99 bcs .99
ldy #S.FD.HANDLER ldy #S.FD.PFT
lda (pFD),y lda (pFD),y
beq .8 Handler is 0, back to kernel.... 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 .8 lda #$ff SELF MODIFIED
* clc * clc
.9 .9
PS.Exec.RTS rts rts
*/-------------------------------------- */--------------------------------------
* # Fork * # Fork
* ## C * ## C
@ -79,7 +79,8 @@ PS.Exec.RTS rts
* A = Child PSID * A = Child PSID
*\-------------------------------------- *\--------------------------------------
K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem 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 sta .8+1
ldy #S.PS.S 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 ldy #S.PS.hDS
lda (ZPPtr1),y lda (ZPPtr1),y
jsr MEM.Dup jsr MEM.Dup
bcs .9 .99 bcs .9
ldy #S.PS.hDS ldy #S.PS.hDS
sta (PS.NewPSPtr),y sta (PS.NewPSPtr),y
@ -358,7 +359,7 @@ PS.Load ldy #$ff
>LDYAI PS.SHUTDOWN >LDYAI PS.SHUTDOWN
jsr PS.Find.PATH jsr PS.Find.PATH
bcs PS.Load.RTS bcs PS.RTS
jmp PS.LoadBIN jmp PS.LoadBIN
*-------------------------------------- *--------------------------------------
@ -366,12 +367,12 @@ PS.Load.IPATH lda #E.BADPATH
.HS 2C .HS 2C
PS.Load.IBIN lda #E.IBIN PS.Load.IBIN lda #E.IBIN
sec sec
PS.Load.RTS rts PS.RTS rts
*-------------------------------------- *--------------------------------------
PS.Load.SCRIPT jsr PS.Buf2IO PS.Load.SCRIPT jsr PS.Buf2IO
jsr PS.LoadGetHeader jsr PS.LoadGetHeader
bcs PS.Load.RTS bcs PS.RTS
>PUSHWI PS.Load.ROOT >PUSHWI PS.Load.ROOT
>PUSHWI K.Buf256 K.Buf256 = "$ROOT" >PUSHWI K.Buf256 K.Buf256 = "$ROOT"
@ -406,7 +407,7 @@ PS.Load.SCRIPT jsr PS.Buf2IO
.5 >LDYAI K.Buf256 .5 >LDYAI K.Buf256
jsr PS.STAT.YA jsr PS.STAT.YA
bcs PS.Load.RTS bcs PS.RTS
lda K.S.STAT+S.STAT.P.TYPE lda K.S.STAT+S.STAT.P.TYPE
cmp #S.FI.T.BIN cmp #S.FI.T.BIN
@ -580,7 +581,7 @@ PS.AddArgV ldy #$ff In both cases, remove ARGV[0]
* lda #0 * lda #0
jsr PS.AddYAp12ArgSize jsr PS.AddYAp12ArgSize
jsr SHARED.AddYp1ToPtr1 jsr SHARED.AddYp12P1
bra .1 bra .1
.4 txa .4 txa
@ -634,8 +635,8 @@ PS.AddPtr1ToStrV
sta (ZPPtr2),y sta (ZPPtr2),y
bne .2 bne .2
jsr SHARED.AddYp1ToPtr1 jsr SHARED.AddYp12P1
jmp SHARED.AddYp1ToPtr2 jmp SHARED.AddYp12P2
*-------------------------------------- *--------------------------------------
PS.AddYAp12ArgSize PS.AddYAp12ArgSize
pha pha

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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