Kernel version 0.8 : SHELL, many new features, Error messages...etc...see README.md

Important KERNEL.S.ENV.txt rewrite to implement env in SHELL
This commit is contained in:
Rémy GIBERT 2016-10-29 21:58:21 +02:00
parent e6fe2048e3
commit 571fb59701
28 changed files with 539 additions and 357 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -57,8 +57,8 @@ FIO.OpenFileA sta FIO.hFileName
>STYA ZPPtr1 >STYA ZPPtr1
.1 >PUSHW ZPPtr1 .1 >PUSHW ZPPtr1
>PUSHW L.MSG.SRC.FILE >LDYA L.MSG.SRC.FILE
>LIBCALL hLIBSTR,LIBSTR.PRINTF >SYSCALL PrintFYA
ldy #SRC.COUNT ldy #SRC.COUNT
lda (pData),y lda (pData),y
@ -69,8 +69,12 @@ FIO.OpenFileA sta FIO.hFileName
sec sec
bra FIO.OpenFileA.Exit bra FIO.OpenFileA.Exit
.10 lda FIO.hFileName .10 >PUSHWI 0
>PUSHBI 4
>PUSHBI SYS.FOPEN.R+SYS.FOPEN.T
lda FIO.hFileName
>SYSCALL GetMemPtrA >SYSCALL GetMemPtrA
>PUSHYA
>SYSCALL MLIOpenYA >SYSCALL MLIOpenYA
bcs .99 bcs .99
@ -78,29 +82,11 @@ FIO.OpenFileA sta FIO.hFileName
ldy #SRC.COUNT ldy #SRC.COUNT
lda (pData),y lda (pData),y
clc clc
adc #SRC.hREFNUMS adc #SRC.hFILES
tay tay
pla pla
sta (pData),y sta (pData),y
ldy #SRC.COUNT
lda (pData),y
clc
adc #SRC.hBUFFERS
tay
txa
sta (pData),y
lda FIO.hFileName
>SYSCALL GetMemPtrA
>SYSCALL MLIGetFileInfoYA
bcs .99
>STYA ZPPtr1
ldy #1
lda (ZPPtr1),y
tax
ldy #SRC.COUNT ldy #SRC.COUNT
lda (pData),y lda (pData),y
clc clc
@ -110,25 +96,12 @@ FIO.OpenFileA sta FIO.hFileName
txa txa
sta (pData),y sta (pData),y
cmp #$FA S-C/BAS? * cmp #$FA S-C/BAS?
beq .8 * beq .8
cmp #$04 TXT ? * cmp #$04 TXT ?
bne .98 * bne .98
>PUSHBI $0D Line separator for TXT file
>PUSHBI $FF
ldy #SRC.COUNT
lda (pData),y
clc
adc #SRC.hREFNUMS
tay
lda (pData),y
>PUSHA
>SYSCALL MLINewLine
bcs .99
.8 ldy #SRC.COUNT .8 ldy #SRC.COUNT
lda (pData),y lda (pData),y
@ -292,8 +265,8 @@ FIO.LOAD.ASM.T ldy #ASM.T.hMem
sta (pData),y sta (pData),y
.1 >PUSHW L.ASM.T.FILENAME .1 >PUSHW L.ASM.T.FILENAME
>PUSHW L.MSG.T.FILE >LDYA L.MSG.T.FILE
>LIBCALL hLIBSTR,LIBSTR.PRINTF >SYSCALL PrintFYA
>PUSHWI 0 Aux type >PUSHWI 0 Aux type
>PUSHBI 6 S.FILEINFO.TYPE.BIN >PUSHBI 6 S.FILEINFO.TYPE.BIN

View File

@ -24,8 +24,8 @@ SRC.PrintLine ldy #ASM.MACRO.ON
>PUSHB (pData),y >PUSHB (pData),y
dey dey
>PUSHB (pData),y >PUSHB (pData),y
>PUSHW L.MSG.SRCLINE >LDYA L.MSG.SRCLINE
>LIBCALL hLIBSTR,LIBSTR.PRINTF >SYSCALL PrintFYA
.9 rts .9 rts
*--------------------------------------- *---------------------------------------
SRC.PrintLineErr ldx #0 SRC.PrintLineErr ldx #0

View File

@ -62,8 +62,8 @@ SYM.Quit ldy #SYM.pLastGBlock
.8 clc .8 clc
rts rts
*--------------------------------------- *---------------------------------------
SYM.Dump >PUSHW L.MSG.SYMBOLS SYM.Dump >LDYA L.MSG.SYMBOLS
>LIBCALL hLIBSTR,LIBSTR.PRINTF >SYSCALL PrintFYA
ldy #SYM.DumpCount ldy #SYM.DumpCount
lda #20 lda #20
@ -102,8 +102,8 @@ SYM.Dump >PUSHW L.MSG.SYMBOLS
lda SRC.GLabel.Value+2 lda SRC.GLabel.Value+2
>PUSHA >PUSHA
>PUSHW L.MSG.GSYMBOL >LDYA L.MSG.GSYMBOL
>LIBCALL hLIBSTR,LIBSTR.PRINTF >SYSCALL PrintFYA
bcs .9 bcs .9
@ -115,8 +115,8 @@ SYM.Dump >PUSHW L.MSG.SYMBOLS
>PUSHA >PUSHA
pla pla
>PUSHA >PUSHA
>PUSHW L.MSG.LSYMBOL >LDYA L.MSG.LSYMBOL
>LIBCALL hLIBSTR,LIBSTR.PRINTF >SYSCALL PrintFYA
bcc .4 bcc .4
rts rts

View File

@ -10,7 +10,6 @@ AUTO 6
*--------------------------------------- *---------------------------------------
.INB /A2OSX.DEV/INC/MACROS.I .INB /A2OSX.DEV/INC/MACROS.I
.INB /A2OSX.DEV/INC/A2OSX.I .INB /A2OSX.DEV/INC/A2OSX.I
.INB /A2OSX.DEV/INC/LIBSTR.I
*--------------------------------------- *---------------------------------------
ZPPtr1 .EQ ZPBIN ZPPtr1 .EQ ZPBIN
ZPPtr2 .EQ ZPBIN+2 ZPPtr2 .EQ ZPBIN+2
@ -71,7 +70,6 @@ CS.START cld
.DA CS.RUN .DA CS.RUN
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.LIBSTR .DA LIBSTR
L.MSG.HELP .DA MSG.HELP L.MSG.HELP .DA MSG.HELP
L.MSG.SRCLINE .DA MSG.SRCLINE L.MSG.SRCLINE .DA MSG.SRCLINE
L.MSG.ERROR .DA MSG.ERROR L.MSG.ERROR .DA MSG.ERROR
@ -151,11 +149,7 @@ J.EXP.OP .DA EXP.OP.EOR ^!|&<=>+-*/
.DA EXP.OP.DIV .DA EXP.OP.DIV
.DA 0 .DA 0
*--------------------------------------- *---------------------------------------
CS.INIT >LDYA L.LIBSTR CS.INIT >SYSCALL GetArgC
>SYSCALL LoadLibYA
sta hLIBSTR
>SYSCALL GetArgC
cmp #1 cmp #1
beq .99 No arg, new file.... beq .99 No arg, new file....
@ -183,8 +177,8 @@ CS.INIT >LDYA L.LIBSTR
clc clc
rts rts
.99 >PUSHW L.MSG.HELP .99 >LDYA L.MSG.HELP
>LIBCALL hLIBSTR,LIBSTR.PRINTF >SYSCALL PrintFYA
lda #ERR.INV.ARGS lda #ERR.INV.ARGS
sec sec
.9 rts .9 rts
@ -205,8 +199,8 @@ CS.RUN ldy #bCANCEL
lda (pData),y lda (pData),y
inc inc
>PUSHA >PUSHA
>PUSHW L.MSG.PASS >LDYA L.MSG.PASS
>LIBCALL hLIBSTR,LIBSTR.PRINTF >SYSCALL PrintFYA
ldy #SRC.hFILENAME ldy #SRC.hFILENAME
lda (pData),y lda (pData),y
@ -235,8 +229,8 @@ CS.RUN ldy #bCANCEL
.1 jsr SYM.Dump .1 jsr SYM.Dump
>PUSHW L.MSG.SUMMARY >LDYA L.MSG.SUMMARY
>LIBCALL hLIBSTR,LIBSTR.PRINTF >SYSCALL PrintFYA
lda #0 End of assembly, exit with no error lda #0 End of assembly, exit with no error
.99 sec .99 sec
@ -256,8 +250,8 @@ CS.RUN ldy #bCANCEL
pha pha
>PUSHA >PUSHA
>PUSHW SRC.LINENUM >PUSHW SRC.LINENUM
>PUSHW L.MSG.ERROR >LDYA L.MSG.ERROR
>LIBCALL hLIBSTR,LIBSTR.PRINTF >SYSCALL PrintFYA
pla pla
sec sec
rts rts
@ -313,9 +307,7 @@ CS.QUIT jsr FIO.FileClose
>SYSCALL FreeMemA >SYSCALL FreeMemA
.8 lda hLIBSTR .8 clc
>SYSCALL UnloadLibA
clc
rts rts
*--------------------------------------- *---------------------------------------
.INB BIN/ASM.S.DIR .INB BIN/ASM.S.DIR
@ -422,7 +414,6 @@ T.LI .HS 03
.AS "OFF" .AS "OFF"
.HS 00 .HS 00
*--------------------------------------- *---------------------------------------
LIBSTR >PSTR "libstr.o"
MSG.HELP >CSTR "A2osX-Macro Assembler (S-C MASM 3.0 Based)\nUsage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\n" MSG.HELP >CSTR "A2osX-Macro Assembler (S-C MASM 3.0 Based)\nUsage : ASM <src file> [type TXT ($04) or S-C/BAS ($FA)]\n"
MSG.PASS >CSTR "Pass:#%d\n" MSG.PASS >CSTR "Pass:#%d\n"
MSG.SRC.FILE >CSTR "Reading SRC File:%S\n" MSG.SRC.FILE >CSTR "Reading SRC File:%S\n"
@ -440,7 +431,6 @@ SRC.EXP.RESERVED >PSTR "^!|&<=>+-*/"
ASM.T.DEFAULT .AS ".T.6502" ASM.T.DEFAULT .AS ".T.6502"
ASM.T.FILENAMELEN .BS 1 ASM.T.FILENAMELEN .BS 1
ASM.T.FILENAME .BS 65 ASM.T.FILENAME .BS 65
hLIBSTR .BS 1
FIO.hFileName .BS 1 FIO.hFileName .BS 1
FIO.hFullPath .BS 1 FIO.hFullPath .BS 1
@ -489,8 +479,7 @@ bCANCEL .BS 1
SRC.hFILENAME .BS 1 SRC.hFILENAME .BS 1
SRC.COUNT .BS 1 SRC.COUNT .BS 1
SRC.hREFNUMS .BS SRC.IN.MAXDEPTH SRC.hFILES .BS SRC.IN.MAXDEPTH
SRC.hBUFFERS .BS SRC.IN.MAXDEPTH
SRC.hFILETYPES .BS SRC.IN.MAXDEPTH SRC.hFILETYPES .BS SRC.IN.MAXDEPTH
DST.hFILENAME .BS 1 DST.hFILENAME .BS 1

View File

@ -52,14 +52,14 @@ CS.INIT >LDYAI TSKMGR.TABLE+S.PS
>SYSCALL GetMemPtrA >SYSCALL GetMemPtrA
>PUSHYA >PUSHYA
ldy #S.PS.PID ldy #S.PS.PPID
lda (ZPPTR1),y lda (ZPPTR1),y
>PUSHA Parent PID >PUSHA Parent PID
lda (ZPPTR1) push flags lda (ZPPTR1) push flags
>PUSHA >PUSHA
ldy #S.PS.ID ldy #S.PS.PID
lda (ZPPTR1),y lda (ZPPTR1),y
>PUSHA PID >PUSHA PID
>LDYA L.MSG1 >LDYA L.MSG1

View File

@ -65,6 +65,8 @@ KrnBuf256 .EQ $0C00 Main
MLICALL.PARAMS .EQ $0D00 Main, $12 bytes min !!!! MLICALL.PARAMS .EQ $0D00 Main, $12 bytes min !!!!
KrnSTAT .EQ $0D12 KrnSTAT .EQ $0D12
*-------------------------------------- *--------------------------------------
KrnOut256 .EQ $0E00 Used to return Values to User Space
*--------------------------------------
*** Z80 Reserved $0F00-10FF*** *** Z80 Reserved $0F00-10FF***
*-------------------------------------- *--------------------------------------
Z80STACK .EQ $0FFF (0FFFFh) Down to $0F00 Z80STACK .EQ $0FFF (0FFFFh) Down to $0F00
@ -170,7 +172,7 @@ SYS.FOPEN.A .EQ $04 Append
SYS.FOPEN.T .EQ $08 Open/Append in Text mode SYS.FOPEN.T .EQ $08 Open/Append in Text mode
SYS.FOPEN.X .EQ $80 Create if not exists SYS.FOPEN.X .EQ $80 Create if not exists
SYS.FCLOSEA .EQ $22 SYS.FCloseA .EQ $22
SYS.FREAD .EQ $24 SYS.FREAD .EQ $24
SYS.FWRITE .EQ $26 SYS.FWRITE .EQ $26
@ -367,8 +369,8 @@ S.PS.F.HOLD .EQ %00100000
S.PS.F.SLEEP .EQ %00010000 S.PS.F.SLEEP .EQ %00010000
S.PS.F.EVENT .EQ %00001000 S.PS.F.EVENT .EQ %00001000
S.PS.F.ENV .EQ %00000100 S.PS.F.ENV .EQ %00000100
S.PS.ID .EQ 1 S.PS.PID .EQ 1
S.PS.PID .EQ 2 S.PS.PPID .EQ 2
S.PS.hCS .EQ 3 S.PS.hCS .EQ 3
S.PS.hDS .EQ 4 S.PS.hDS .EQ 4
S.PS.hPREFIX .EQ 5 S.PS.hPREFIX .EQ 5
@ -378,8 +380,8 @@ S.PS.UID .EQ 8
S.PS.hINDEV .EQ 9 S.PS.hINDEV .EQ 9
S.PS.hOUTDEV .EQ 10 S.PS.hOUTDEV .EQ 10
S.PS.hERRDEV .EQ 11 S.PS.hERRDEV .EQ 11
S.PS.CID .EQ 12 S.PS.CPID .EQ 12
S.PS.LASTERROR .EQ 13 S.PS.RC .EQ 13
S.PS.PC .EQ 14 S.PS.PC .EQ 14
* *
S.PS .EQ 16 S.PS .EQ 16
@ -439,7 +441,7 @@ S.STAT.MODE.RG .EQ $0020
S.STAT.MODE.XU .EQ $0040 S.STAT.MODE.XU .EQ $0040
S.STAT.MODE.WU .EQ $0080 S.STAT.MODE.WU .EQ $0080
S.STAT.MODE.RU .EQ $0100 S.STAT.MODE.RU .EQ $0100
*S.STAT.MODE.SST .EQ $0200 *S.STAT.MODE.SST .EQ $0200
*S.STAT.MODE.SGID .EQ $0400 *S.STAT.MODE.SGID .EQ $0400
*S.STAT.MODE.SUID .EQ $0800 *S.STAT.MODE.SUID .EQ $0800

View File

@ -112,43 +112,43 @@ MLI.ERR.VOLFULL .EQ $49
MLI.ERR.EOF .EQ $4C MLI.ERR.EOF .EQ $4C
*-------------------------------------- *--------------------------------------
MLI .EQ $BF00 MLI .EQ $BF00
JSPARE .EQ $BF03 *JSPARE .EQ $BF03
DATETIME .EQ $BF06 DATETIME .EQ $BF06
SYSERR .EQ $BF09 SYSERR .EQ $BF09
SYSDEATH .EQ $BF0C SYSDEATH .EQ $BF0C
SERR .EQ $BF0F SERR .EQ $BF0F
DEVPTRS0D1 .EQ $BF10 *DEVPTRS0D1 .EQ $BF10
DEVPTRS1D1 .EQ $BF12 *DEVPTRS1D1 .EQ $BF12
DEVPTRS2D1 .EQ $BF14 *DEVPTRS2D1 .EQ $BF14
DEVPTRS3D1 .EQ $BF16 *DEVPTRS3D1 .EQ $BF16
DEVPTRS4D1 .EQ $BF18 *DEVPTRS4D1 .EQ $BF18
DEVPTRS5D1 .EQ $BF1A *DEVPTRS5D1 .EQ $BF1A
DEVPTRS6D1 .EQ $BF1C *DEVPTRS6D1 .EQ $BF1C
DEVPTRS7D1 .EQ $BF1E *DEVPTRS7D1 .EQ $BF1E
DEVPTRS0D2 .EQ $BF20 *DEVPTRS0D2 .EQ $BF20
DEVPTRS1D2 .EQ $BF22 *DEVPTRS1D2 .EQ $BF22
DEVPTRS2D2 .EQ $BF24 *DEVPTRS2D2 .EQ $BF24
DEVPTRS3D2 .EQ $BF26 DEVPTRS3D2 .EQ $BF26
DEVPTRS4D2 .EQ $BF28 *DEVPTRS4D2 .EQ $BF28
DEVPTRS5D2 .EQ $BF2A *DEVPTRS5D2 .EQ $BF2A
DEVPTRS6D2 .EQ $BF2C *DEVPTRS6D2 .EQ $BF2C
DEVPTRS7D2 .EQ $BF2E *DEVPTRS7D2 .EQ $BF2E
DEVNUM .EQ $BF30 DEVNUM .EQ $BF30
DEVCNT .EQ $BF31 DEVCNT .EQ $BF31
DEVLST .EQ $BF32 -> $BF3F DEVLST .EQ $BF32 -> $BF3F
DEVLST0END .EQ $BF40 A 0 was added to ensure list ended with 0 if 14 devices in list DEVLST0END .EQ $BF40 A 0 was added to ensure list ended with 0 if 14 devices in list
PRODOSCOPYRIGHT .EQ $BF41 ;free->$BF4B PRODOSCOPYRIGHT .EQ $BF41 ;free->$BF4B
MEMTABL .EQ $BF58 -> $BF6F MEMTABL .EQ $BF58 -> $BF6F
GL.BUFF .EQ $BF70 *GL.BUFF .EQ $BF70
INTRUPT1 .EQ $BF80 *INTRUPT1 .EQ $BF80
INTRUPT2 .EQ $BF82 *INTRUPT2 .EQ $BF82
INTRUPT3 .EQ $BF84 *INTRUPT3 .EQ $BF84
INTRUPT4 .EQ $BF86 *INTRUPT4 .EQ $BF86
DATELO .EQ $BF90 DATELO .EQ $BF90
TIMELO .EQ $BF92 TIMELO .EQ $BF92
LEVEL .EQ $BF94 LEVEL .EQ $BF94
BUBIT .EQ $BF95 BUBIT .EQ $BF95
SPARE1 .EQ $BF96 *SPARE1 .EQ $BF96
MACHID .EQ $BF98 MACHID .EQ $BF98
MACHID.TYPE .EQ %11001000 MACHID.TYPE .EQ %11001000
MACHID.TYPE.II .EQ %00000000 MACHID.TYPE.II .EQ %00000000
@ -172,9 +172,9 @@ SAVEY .EQ $BF9F
*-------------------------------------- *--------------------------------------
* code $BFA0 -> $BFF3 * code $BFA0 -> $BFF3
*-------------------------------------- *--------------------------------------
BNKBYT1 .EQ $BFF4 *BNKBYT1 .EQ $BFF4
BNKBYT2 .EQ $BFF5 *BNKBYT2 .EQ $BFF5
SYS.RTS .EQ $BFF6 code -> $BFFB *SYS.RTS .EQ $BFF6 code -> $BFFB
IBAKVER .EQ $BFFC IBAKVER .EQ $BFFC
IVERSION .EQ $BFFD IVERSION .EQ $BFFD
KBAKVER .EQ $BFFE KBAKVER .EQ $BFFE

View File

@ -9,11 +9,10 @@ AUTO 6
*-------------------------------------- *--------------------------------------
Cmd.ExecYA stz Cmd.Exec.Mode Cmd.ExecYA stz Cmd.Exec.Mode
Cmd.ExecYA.1 >SYSCALL ExpandPStrYA Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
bcs .99
stx hCmdLine
>STYA ZPPtr1 >STYA ZPPtr1
phx
ldy #1 ldy #1
ldx #0 ARGS len ldx #0 ARGS len
@ -48,7 +47,7 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
.13 stx ARGS update ARGS len .13 stx ARGS update ARGS len
lda hCmdLine Discard Expanded Cmd Line pla
>SYSCALL FreeMemA >SYSCALL FreeMemA
>LDYA L.CMDS >LDYA L.CMDS
@ -82,17 +81,14 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
bcc .1 bcc .1
inc ZPPtr2+1 inc ZPPtr2+1
bra .1 bra .1
.99 rts
*-------------------------------------- *--------------------------------------
Cmd.Exec.EXT ldy #1 Cmd.Exec.EXT ldy #1
lda CMD,y lda CMD,y
cmp #'/' Command line is already full path, no search cmp #'/' Command line is already full path, no search
bne .10 beq .3
jmp .3
.10 >LDYA L.ENV.PATH push ENVNAME=PATH for search >LDYA L.ENV.PATH push ENVNAME=PATH for search
>SYSCALL GetEnvYA get value for ENV=PATH >SYSCALL GetEnvYA get value for ENV=PATH
bcs .1 No PATH, try in CD bcs .1 No PATH, try in CD
>PUSHYA push search list >PUSHYA push search list
@ -116,9 +112,9 @@ Cmd.Exec.EXT ldy #1
>PUSHW L.CMD replace CMD in TmpBuffer with full path >PUSHW L.CMD replace CMD in TmpBuffer with full path
>SYSCALL PStrCpy >SYSCALL PStrCpy
pla pla
>SYSCALL FreeMemA Discard this string... >SYSCALL FreeMemA Discard this string...
.3 stz UsrBuf256 reset UsrBuf256 for final CMDLINE .3 stz UsrBuf256 reset UsrBuf256 for final CMDLINE
>PUSHW L.STAT >PUSHW L.STAT
>PUSHW L.CMD >PUSHW L.CMD
@ -295,7 +291,7 @@ Cmd.Exec.CD1 stz UsrBuf256
ldy #S.PS.hPREFIX ldy #S.PS.hPREFIX
sta (pPs),y sta (pPs),y
jsr SetPWD
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------

52
SBIN/SHELL.S.ERR.txt Normal file
View File

@ -0,0 +1,52 @@
PR#3
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
ERR.Print >PUSHA Save EC for PrintF
ldx L.ERR.Codes
stx ZPPTR1
ldx L.ERR.Codes+1
stx ZPPTR1+1
ldy #0
.1 cmp (ZPPTR1),y
beq .2
iny
cpy #ERR.Count
bne .1
.2 sty .3+1
lda L.ERR.Messages
sta ZPPTR1
lda L.ERR.Messages+1
sta ZPPTR1+1
ldy #0
.3 cpy #$ff Self Modified
beq .8
lda (ZPPTR1)
sec
adc ZPPTR1
sta ZPPTR1
bcc .4
inc ZPPTR1+1
.4 iny
bra .3
.8 >PUSHW ZPPTR1
>LDYA L.MSG.ERROR
>SYSCALL PrintFYA
rts
*--------------------------------------
MAN
SAVE SBIN/SHELL.S.ERR
LOAD SBIN/SHELL.S
ASM

View File

@ -59,7 +59,7 @@ TXT.CloseFile ldy #hInputFile
lda (pData),y lda (pData),y
beq .9 beq .9
>SYSCALL FCLOSEA >SYSCALL FCloseA
.9 lda #0 .9 lda #0
ldy #hInputFile ldy #hInputFile

View File

@ -38,11 +38,14 @@ CS.START cld
.DA CS.QUIT .DA CS.QUIT
*-------------------------------------- *--------------------------------------
L.MSG.GREETINGS .DA MSG.GREETINGS L.MSG.GREETINGS .DA MSG.GREETINGS
L.MSG.PROMPT .DA MSG.PROMPT
L.MSG.ECHO .DA MSG.ECHO L.MSG.ECHO .DA MSG.ECHO
L.MSG.ERROR .DA MSG.ERROR L.MSG.ERROR .DA MSG.ERROR
L.MSG.PSTR .DA MSG.PSTR L.MSG.PSTR .DA MSG.PSTR
L.MSG.PRINTENV .DA MSG.PRINTENV L.MSG.PRINTENV .DA MSG.PRINTENV
L.ENV.PATH .DA ENV.PATH L.ENV.PATH .DA ENV.PATH
L.ENV.PWD .DA ENV.PWD
L.ENV.PS1 .DA ENV.PS1
L.CMD .DA CMD L.CMD .DA CMD
L.ARGS .DA ARGS L.ARGS .DA ARGS
L.TIME .DA TIME L.TIME .DA TIME
@ -61,9 +64,13 @@ J.INTCMDS .DA Cmd.Exec.CD
.DA Cmd.Exec.STARTPROC .DA Cmd.Exec.STARTPROC
.DA Cmd.Exec.TIME .DA Cmd.Exec.TIME
.DA Cmd.Exec.TYPE .DA Cmd.Exec.TYPE
L.ERR.Codes .DA ERR.Codes
L.ERR.Messages .DA ERR.Messages
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >SYSCALL GetArgC CS.INIT jsr SetPWD
>SYSCALL GetArgC
cmp #1 cmp #1
beq CS.INIT.INTERACTIVE no arg, continue starting interactive beq CS.INIT.INTERACTIVE no arg, continue starting interactive
@ -138,7 +145,11 @@ CS.RUN lda #0
bcc .8 bcc .8
tay tay
beq .8 beq .8
jsr PrintError
pha
jsr ERR.Print
pla
bcs .99
.8 ldy #bEXIT .8 ldy #bEXIT
lda (pData),y lda (pData),y
@ -319,7 +330,7 @@ CS.QUIT jsr HIS.Quit
ldy #hInputFile ldy #hInputFile
lda (pData),y lda (pData),y
beq .1 beq .1
>SYSCALL FCLOSEA >SYSCALL FCloseA
.1 .1
.8 clc .8 clc
@ -327,20 +338,25 @@ CS.QUIT jsr HIS.Quit
*-------------------------------------- *--------------------------------------
* PRIVATE * PRIVATE
*-------------------------------------- *--------------------------------------
PrintPrompt lda #'$' SetPWD ldy #S.PS.hPREFIX
>SYSCALL COutA lda (pPs),y
bcs .9 >SYSCALL GetMemPtrA
lda #' ' >PUSHYA
>SYSCALL COutA >PUSHW L.ENV.PWD
.9 rts >SYSCALL SetEnv
*--------------------------------------
PrintError pha
>PUSHA
>LDYA L.MSG.ERROR
>SYSCALL PrintFYA
pla
rts rts
*-------------------------------------- *--------------------------------------
PrintPrompt >LDYA L.ENV.PS1
>SYSCALL GetEnvYA
>SYSCALL ExpandPStrYA
phx
>PUSHYA
pla
>SYSCALL FreeMemA
>LDYA L.MSG.PROMPT
>SYSCALL PrintFYA
.9 rts
*--------------------------------------
* Remove extra SPACE & comment * Remove extra SPACE & comment
*-------------------------------------- *--------------------------------------
CmdBuffer.Normalize CmdBuffer.Normalize
@ -418,12 +434,15 @@ CmdBuffer.DEL lda (pData)
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
.INB SBIN/SHELL.S.CMD .INB SBIN/SHELL.S.CMD
.INB SBIN/SHELL.S.ERR
.INB SBIN/SHELL.S.HIS .INB SBIN/SHELL.S.HIS
.INB SBIN/SHELL.S.TXT .INB SBIN/SHELL.S.TXT
*-------------------------------------- *--------------------------------------
CS.END CS.END
*-------------------------------------- *--------------------------------------
ENV.PATH >PSTR "PATH" ENV.PATH >PSTR "PATH"
ENV.PWD >PSTR "PWD"
ENV.PS1 >PSTR "PS1"
CMDS >PSTR "CD" CMDS >PSTR "CD"
>PSTR "DATE" >PSTR "DATE"
>PSTR "ECHO" >PSTR "ECHO"
@ -438,12 +457,15 @@ CMDS >PSTR "CD"
.HS 00 .HS 00
*-------------------------------------- *--------------------------------------
MSG.GREETINGS >CSTR "\nA2osX-Shell on Dev=%h\n\n" MSG.GREETINGS >CSTR "\nA2osX-Shell on Dev=%h\n\n"
MSG.PROMPT >CSTR "%S$ "
MSG.ECHO >CSTR ">%S\n" MSG.ECHO >CSTR ">%S\n"
MSG.ERROR >CSTR "[%h]\n" MSG.ERROR >CSTR "%S ($%h)\n"
FMT.DATE >PSTR "%A, %B %d %Y" FMT.DATE >PSTR "%A, %B %d %Y"
FMT.TIME >PSTR "%H:%M:%S (%I:%M:%S%p)" FMT.TIME >PSTR "%H:%M:%S (%I:%M:%S%p)"
MSG.PSTR >CSTR "%S\n" MSG.PSTR >CSTR "%S\n"
MSG.PRINTENV >CSTR "%S=%S\n" MSG.PRINTENV >CSTR "%S=%S\n"
*--------------------------------------
.INB X.ERRORS.S
*-------------------------------------- *--------------------------------------
EscChars >PSTR "DBAC" EscChars >PSTR "DBAC"
EscAscii .HS 04080A0B15 EscAscii .HS 04080A0B15

View File

@ -7,7 +7,7 @@ AUTO 6
*-------------------------------------- *--------------------------------------
* BIN.LoadExeYA * BIN.LoadExeYA
* in : * in :
* A = hMem of FilePath (PSTRING) * A = hMem of FilePath (PSTR)
* out : * out :
* Y,A = MEMPTR * Y,A = MEMPTR
* X = hMem of Code Segment * X = hMem of Code Segment

View File

@ -9,9 +9,9 @@ AUTO 6
* Scan a PStr (in progress) * Scan a PStr (in progress)
* ##In: * ##In:
* PUSHW PTR to target buffer * PUSHW PTR to target buffer
* PUSHW PString pattern (ex: "%d.%d.%d.%d") * PUSHW PSTR pattern (ex: "%d.%d.%d.%d")
* %d : byte * %d : byte
* PUSHW PString to scan (ex: "192.168.1.5") * PUSHW PSTR to scan (ex: "192.168.1.5")
* ##Out: * ##Out:
*\-------------------------------------- *\--------------------------------------
K.SScanF jsr PullPtr1Ptr2Ptr3 K.SScanF jsr PullPtr1Ptr2Ptr3
@ -473,58 +473,6 @@ K.COutA phx
plx plx
rts rts
*-------------------------------------- *--------------------------------------
* Convert HEXBUF to ASCBUF decimal padded with 0
*--------------------------------------
HEX2DEC ldx #4
.1 stz BCDBUF,x Clear all 5 bytes
dex
bpl .1
sed switch to BCD mode
ldx #32 let's roll 32 bits
.2 asl HEXBUF
rol HEXBUF+1
rol HEXBUF+2
rol HEXBUF+3
ldy #4
.3 lda BCDBUF,y
adc BCDBUF,y
sta BCDBUF,y
dey
bpl .3
dex
bne .2
cld
ldy #4
ldx #9
.4 lda BCDBUF,y
pha
and #$0F
ora #$30
sta ASCBUF,x
dex
pla
lsr
lsr
lsr
lsr
ora #$30
sta ASCBUF,x
dey
dex
bpl .4
rts
*--------------------------------------
PRINTDEC lda PADLEN any Len format ? PRINTDEC lda PADLEN any Len format ?
beq .1 no beq .1 no
@ -569,84 +517,8 @@ PRINTDEC lda PADLEN any Len format ?
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
* Convert ASCBUF decimal to HEXBUF
*--------------------------------------
DEC2HEX stz HEXBUF
stz HEXBUF+1
stz HEXBUF+2
stz HEXBUF+3
ldx #0
.1 lda HEXBUF+3 save HEXBUF for 4+1
pha
lda HEXBUF+2
pha
lda HEXBUF+1
pha
lda HEXBUF
pha
asl HEXBUF HEXBUF * 2 -> HEXBUF
rol HEXBUF+1
rol HEXBUF+2
rol HEXBUF+3
* bcs .9 overflow!!!
asl HEXBUF HEXBUF * 4 -> HEXBUF
rol HEXBUF+1
rol HEXBUF+2
rol HEXBUF+3
* bcs .9 overflow!!!
pla HEXBUF * 4 + HEXBUF -> HEXBUF
adc HEXBUF
sta HEXBUF
pla
adc HEXBUF+1
sta HEXBUF+1
pla
adc HEXBUF+2
sta HEXBUF+2
pla
adc HEXBUF+3
sta HEXBUF+3
* bcs .99 overflow!!!
asl HEXBUF HEXBUF * 10 -> HEXBUF
rol HEXBUF+1
rol HEXBUF+2
rol HEXBUF+3
* bcs .99 overflow!!!
inx
lda ASCBUF,x
and #$0F
adc HEXBUF
sta HEXBUF
bcc .2
inc HEXBUF+1
bne .2
inc HEXBUF+2
bne .2
inc HEXBUF+3
.2 cpx ASCBUF
bne .1
rts
*.9 pla discard saved HEXBUF
* pla
* pla
* pla
*.99 rts
*--------------------------------------
TYPES .AS "-pcbdls" TYPES .AS "-pcbdls"
ACCESS .AS "rwxrwxrwx" ACCESS .AS "rwxrwxrwx"
HEXBUF .BS 4 32 bits max
BCDBUF .BS 5 5, enough to handle 10 digits (32bits)
ASCBUF .BS 12 LEN + sign + 10 digits ($FFFFFFFF=4.294.967.295)
SIGN .BS 1 SIGN .BS 1
PADLEN .BS 1 PADLEN .BS 1
PADCHAR .BS 1 PADCHAR .BS 1

140
SYS/KERNEL.S.CNV.txt Normal file
View File

@ -0,0 +1,140 @@
PR#3
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
* Convert HEXBUF to ASCBUF decimal padded with 0
*--------------------------------------
HEX2DEC ldx #4
.1 stz BCDBUF,x Clear all 5 bytes
dex
bpl .1
sed switch to BCD mode
ldx #32 let's roll 32 bits
.2 asl HEXBUF
rol HEXBUF+1
rol HEXBUF+2
rol HEXBUF+3
ldy #4
.3 lda BCDBUF,y
adc BCDBUF,y
sta BCDBUF,y
dey
bpl .3
dex
bne .2
cld
ldy #4
ldx #9
.4 lda BCDBUF,y
pha
and #$0F
ora #$30
sta ASCBUF,x
dex
pla
lsr
lsr
lsr
lsr
ora #$30
sta ASCBUF,x
dey
dex
bpl .4
rts
*--------------------------------------
* Convert ASCBUF decimal to HEXBUF
*--------------------------------------
DEC2HEX stz HEXBUF
stz HEXBUF+1
stz HEXBUF+2
stz HEXBUF+3
ldx #0
.1 lda HEXBUF+3 save HEXBUF for 4+1
pha
lda HEXBUF+2
pha
lda HEXBUF+1
pha
lda HEXBUF
pha
asl HEXBUF HEXBUF * 2 -> HEXBUF
rol HEXBUF+1
rol HEXBUF+2
rol HEXBUF+3
* bcs .9 overflow!!!
asl HEXBUF HEXBUF * 4 -> HEXBUF
rol HEXBUF+1
rol HEXBUF+2
rol HEXBUF+3
* bcs .9 overflow!!!
pla HEXBUF * 4 + HEXBUF -> HEXBUF
adc HEXBUF
sta HEXBUF
pla
adc HEXBUF+1
sta HEXBUF+1
pla
adc HEXBUF+2
sta HEXBUF+2
pla
adc HEXBUF+3
sta HEXBUF+3
* bcs .99 overflow!!!
asl HEXBUF HEXBUF * 10 -> HEXBUF
rol HEXBUF+1
rol HEXBUF+2
rol HEXBUF+3
* bcs .99 overflow!!!
inx
lda ASCBUF,x
and #$0F
adc HEXBUF
sta HEXBUF
bcc .2
inc HEXBUF+1
bne .2
inc HEXBUF+2
bne .2
inc HEXBUF+3
.2 cpx ASCBUF
bne .1
rts
*.9 pla discard saved HEXBUF
* pla
* pla
* pla
*.99 rts
*--------------------------------------
HEXBUF .BS 4 32 bits max
BCDBUF .BS 5 5, enough to handle 10 digits (32bits)
ASCBUF .BS 12 LEN + sign + 10 digits ($FFFFFFFF=4.294.967.295)
*--------------------------------------
MAN
SAVE SYS/KERNEL.S.CNV
LOAD SYS/KERNEL.S
ASM

View File

@ -13,6 +13,8 @@ TSKMGR.LASTID .BS 1
ENV.DRV >PSTR "DRV" ENV.DRV >PSTR "DRV"
ENV.LIB >PSTR "LIB" ENV.LIB >PSTR "LIB"
*-------------------------------------- *--------------------------------------
EmptyPSTR .DA #0
*--------------------------------------
MAN MAN
SAVE SYS/KERNEL.S.DAT SAVE SYS/KERNEL.S.DAT
LOAD SYS/KERNEL.S LOAD SYS/KERNEL.S

View File

@ -4,19 +4,21 @@ NEW
INC 1 INC 1
AUTO 6 AUTO 6
.LIST OFF .LIST OFF
*-------------------------------------- */--------------------------------------
* K.ExpandPStrYA * #ExpandPStrYA
* In: * ##In:
* Y,A = PTR to String to Expand (PSTRING) * Y,A = PTR to String to Expand (PSTR)
* Out: * ##Out:
* X = hMem to Expanded String (PSTRING) * X = hMem to Expanded String (PSTR)
* Y,A = PTR to Expanded String * Y,A = PTR to Expanded String
*-------------------------------------- *\--------------------------------------
K.ExpandPStrYA K.ExpandPStrYA stz K.ExpandPStr.hPStr Reset Intermediate string...
>STYA ZPQuickPtr3
stz KrnBuf256 init Expanded String len=0
.11 >STYA ZPQuickPtr3
stz KrnBuf256 init Expanded String len=0
stz K.ExpandPStr.bFound No var found yet
stz K.ExpandPStr.bNoExp Reset no expand flag
ldy #0 ldy #0
.10 stz K.ExpandPStr.Start .10 stz K.ExpandPStr.Start
@ -27,29 +29,43 @@ K.ExpandPStrYA
iny iny
lda (ZPQuickPtr3),y lda (ZPQuickPtr3),y
cmp #'''
bne .21
lda K.ExpandPStr.bNoExp
eor #$ff
sta K.ExpandPStr.bNoExp toggle flag
bra .1
.21 bit K.ExpandPStr.bNoExp
bmi .22
ldx K.ExpandPStr.Start ldx K.ExpandPStr.Start
bne .3 already in a var? bne .3 already in a var?
cmp #'$' no, found one ? cmp #'$' no, found one ?
beq .2 beq .2
inc KrnBuf256 no, copy char .22 inc KrnBuf256 no, copy char
ldx KrnBuf256 ldx KrnBuf256
sta KrnBuf256,x sta KrnBuf256,x
bra .1 bra .1
.2 sty K.ExpandPStr.Start save var start .2 sec
ror K.ExpandPStr.bFound Toggle flag
sty K.ExpandPStr.Start save var start
stz K.ExpandPStr.End stz K.ExpandPStr.End
bra .1 skip this char bra .1 skip this char
.3 cmp #'{' in var, "{" after "$"? .3 cmp #'{' we are in var, "{" after "$"?
beq .2 beq .2
cmp #'}' end of var? cmp #'}' end of var?
beq .5 beq .5
.4 jsr K.ExpandPStr.VC valid char ? jsr K.ExpandPStr.VC we are in var, is char valid?
bcs .5 no, end here bcs .5 no, end here
sty K.ExpandPStr.End yes, save end sty K.ExpandPStr.End yes, save end
bra .1 bra .1
@ -64,13 +80,26 @@ K.ExpandPStrYA
.6 sty K.ExpandPStr.End end of PSTR .6 sty K.ExpandPStr.End end of PSTR
lda K.ExpandPStr.Start are we in a var? lda K.ExpandPStr.Start are we in a var?
beq .7 no...exit... beq .8 no...exit...
jsr K.ExpandPStr.AV yes, expand and add to STR jsr K.ExpandPStr.AV yes, expand and add to STR
.7 >LDYAI KrnBuf256 .8 lda K.ExpandPStr.hPStr working from our temp string ?
beq .81 no...
jsr K.FreeMemA yes, discard....
.81 >LDYAI KrnBuf256
jsr K.NewPStrYA jsr K.NewPStrYA
rts bcs .9
stx K.ExpandPStr.hPStr save this as temp string, in case of recurse
bit K.ExpandPStr.bFound Did we expand something ?
bpl .9
jmp .11 Yes, start over with hPStr
* or exit with Y,A & X from K.NewPStrYA
.9 rts
*-------------------------------------- *--------------------------------------
K.ExpandPStr.AV lda K.ExpandPStr.End K.ExpandPStr.AV lda K.ExpandPStr.End
sec sec
@ -138,9 +167,15 @@ K.ExpandPStr.VC cmp #'0'
*-------------------------------------- *--------------------------------------
K.ExpandPStr.Start .BS 1 K.ExpandPStr.Start .BS 1
K.ExpandPStr.End .BS 1 K.ExpandPStr.End .BS 1
*-------------------------------------- K.ExpandPStr.bFound .BS 1
* K.PutEnvYA K.ExpandPStr.bNoExp .BS 1
*-------------------------------------- K.ExpandPStr.hPStr .BS 1
*/--------------------------------------
* #PutEnvYA
* ##In:
* Y,A = PTR to String NAME=VALUE (PSTR)
* ##Out:
*\--------------------------------------
K.PutEnvYA >STYA ZPQuickPtr2 NAME=VALUE K.PutEnvYA >STYA ZPQuickPtr2 NAME=VALUE
lda (ZPQuickPtr2) lda (ZPQuickPtr2)
beq .9 beq .9
@ -192,13 +227,13 @@ K.PutEnvYA >STYA ZPQuickPtr2 NAME=VALUE
.9 sec .9 sec
rts rts
*-------------------------------------- */--------------------------------------
* K.SetEnv * #SetEnv
* In: * ##In:
* PULLW = PTR To Name (PSTRING) * PUSHW = PTR To Value (PSTR)
* PULLW = PTR To Value (PSTRING) * PUSHW = PTR To Name (PSTR)
* Out: * ##Out:
*-------------------------------------- *\--------------------------------------
K.SetEnv >PULLW ZPQuickPtr2 NAME... K.SetEnv >PULLW ZPQuickPtr2 NAME...
>PULLW ZPQuickPtr3 ...VALUE >PULLW ZPQuickPtr3 ...VALUE
@ -272,30 +307,33 @@ K.SetEnvPtr2Ptr3
.99 lda #SYSMGR.ERRENVF .99 lda #SYSMGR.ERRENVF
sec sec
rts rts
*-------------------------------------- */--------------------------------------
* K.GetEnvYA * #GetEnvYA
* In: * ##In:
* Y,A = PTR to NAME (PSTRING) * Y,A = PTR to NAME (PSTR)
* Out: * ##Out:
* CC : Y,A = PTR to VALUE (PSTRING) * CC : Y,A = PTR to VALUE (PSTR)
* CS : not found * CS : not found
*-------------------------------------- *\--------------------------------------
K.GetEnvYA >STYA ZPQuickPtr2 K.GetEnvYA >STYA ZPQuickPtr2
jsr ENV.CheckSysVarPtr2 jsr ENV.CheckSysVarPtr2
bcc .9 bcc .8
jsr ENV.FindVarPtr2 jsr ENV.FindVarPtr2
bcs .9 bcs .9
jsr ENV.NextEnvPtr1 Skip NAME jsr ENV.NextEnvPtr1 Skip NAME
>LDYA ZPQuickPtr1 >LDYA ZPQuickPtr1
clc just in case ADC in NextEnvPtr1 disturb CC clc just in case ADC in NextEnvPtr1 disturb CC
.9 rts .8 rts
*--------------------------------------
* K.UnsetEnvYA .9 >LDYAI EmptyPSTR
* In: rts
* YA = PTR To Name (PSTRING) */--------------------------------------
* Out: * #UnsetEnvYA
*-------------------------------------- * ##In:
* Y,A = PTR To Name (PSTR)
* ##Out:
*\--------------------------------------
K.UnsetEnvYA >STYA ZPQuickPtr2 Store VAR Name K.UnsetEnvYA >STYA ZPQuickPtr2 Store VAR Name
S.UnsetEnvPtr2 jsr ENV.FindVarPtr2 S.UnsetEnvPtr2 jsr ENV.FindVarPtr2
bcs .8 not found, quit bcs .8 not found, quit
@ -325,24 +363,74 @@ ENV.CheckSysVarPtr2
cmp #'0' $0...$9 ?? cmp #'0' $0...$9 ??
bcc .1 no, bcc .1 no,
cmp #'9'+1 cmp #'9'+1
bcs .99 bcs .1
and #$0F and #$0F
jmp K.GetArgA jmp K.GetArgA
.1 cmp #'*' $* : All ARGS .1 ldx #ENV.SysVarsJmp-ENV.SysVars-1
bne .9
cmp #'#' $# : ARGC
bne .9
cmp #'?' $? : RC
bne .9
cmp #'$' $$ : PID
bne .9
.2 cmp ENV.SysVars,x
beq .3
dex
bpl .2
.9 sec .9 sec
.99 rts rts
.3 txa
asl
tax
jmp (ENV.SysVarsJmp,x)
*--------------------------------------
ENV.SysVars .AS "*#?$!"
ENV.SysVarsJmp .DA ENV.SysVarsArgs
.DA ENV.SysVarsArgC
.DA ENV.SysVarsRC
.DA ENV.SysVarsPID
.DA ENV.SysVarsCPID
*--------------------------------------
ENV.SysVarsArgs sec
rts
ENV.SysVarsArgC jsr K.GetArgC
bra ENV.SysVarsA
ENV.SysVarsRC ldy #S.PS.RC
.HS 2C
ENV.SysVarsPID ldy #S.PS.PID
.HS 2C
ENV.SysVarsCPID ldy #S.PS.CPID
lda (pPS),y
ENV.SysVarsA sta HEXBUF
stz HEXBUF+1
stz HEXBUF+2
stz HEXBUF+3
jsr HEX2DEC
ldx #0
.1 lda ASCBUF,x
cmp #'0'
bne .2
inx
cpx #10
bne .1
sta KrnOut256+1
ldy #1
bne .8 always
.2 ldy #0
.3 lda ASCBUF,x
iny
sta KrnOut256,y
inx
cpx #10
bne .3
.8 sty KrnOut256
>LDYAI KrnOut256
clc
rts
*-------------------------------------- *--------------------------------------
* ENV.FindVarPtr2 * ENV.FindVarPtr2
* In: * In:

View File

@ -102,7 +102,7 @@ K.FOPEN jsr PFT.CheckPathSTK
rts CC rts CC
.98 pha save MLI error .98 pha save MLI error
jsr K.FCLOSEA.1 jsr K.FCloseA.1
pla get back MLI error pla get back MLI error
sec sec
.99 rts .99 rts
@ -141,9 +141,9 @@ K.FCloseA.1 ldy #S.FILE.PRODOS.REF
* #FRead * #FRead
* Read bytes from file * Read bytes from file
* ##In : * ##In :
* PULLB = hFILE * PUSHW = Dest Ptr
* PULLW = Bytes To Read * PUSHW = Bytes To Read
* PULLW = Dest Ptr * PUSHB = hFILE
* ##Out : * ##Out :
* Y,A = Bytes Read * Y,A = Bytes Read
*\-------------------------------------- *\--------------------------------------
@ -153,9 +153,9 @@ K.FRead jsr PFT.CheckFileSTK
*/-------------------------------------- */--------------------------------------
* #FWrite * #FWrite
* ##In: * ##In:
* PULLB = hFILE * PUSHW = Src Ptr
* PULLW = Bytes To Write * PUSHW = Bytes To Write
* PULLW = Src Ptr * PUSHB = hFILE
* #Out: * #Out:
* Y,A = Bytes Written * Y,A = Bytes Written
*\-------------------------------------- *\--------------------------------------

View File

@ -7,10 +7,10 @@ AUTO 6
*/-------------------------------------- */--------------------------------------
* #FileSearch * #FileSearch
* ##In: * ##In:
* PUSHW = PSTR to Search Path (PSTRING) %LIB%;/SYS/SLIB * PUSHW = Ptr to Search Path (PSTR) %LIB%;/SYS/SLIB
* PUSHW = PSTR to File Name (PSTRING) * PUSHW = Ptr to File Name (PSTR)
* #Out: * #Out:
* Y,A = PSTR to FilePath (PSTRING) * Y,A = PSTR to FilePath (PSTR)
* X = hMem to FilePath * X = hMem to FilePath
*\-------------------------------------- *\--------------------------------------
K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA
@ -77,9 +77,9 @@ K.FileSearch.Index .BS 1
*/-------------------------------------- */--------------------------------------
* #GetFullPathYA * #GetFullPathYA
* ##In : * ##In :
* Y,A = Filename (PSTRING) * Y,A = Filename (PSTR)
* #Out : * #Out :
* Y,A = FullPath (PSTRING) * Y,A = FullPath (PSTR)
* X = hMem of FullPath * X = hMem of FullPath
*\-------------------------------------- *\--------------------------------------
K.GetFullPathYA >STYA ZPQuickPtr3 Ptr1 & 2 used by StrCpy K.GetFullPathYA >STYA ZPQuickPtr3 Ptr1 & 2 used by StrCpy
@ -173,7 +173,7 @@ K.LoadFile jsr K.FOPEN
.99 pha .99 pha
lda K.LoadFile.hFile lda K.LoadFile.hFile
jsr K.FCLOSEA jsr K.FCloseA
pla pla
sec sec
rts rts
@ -209,7 +209,7 @@ K.SaveFile jsr K.FOPEN
.99 pha .99 pha
lda K.LoadFile.hFile lda K.LoadFile.hFile
jsr K.FCLOSEA jsr K.FCloseA
pla pla
sec sec
rts rts

View File

@ -30,7 +30,7 @@ KERNEL.SYSCALL
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
.DA K.FOPEN $20 .DA K.FOPEN $20
.DA K.FCLOSEA .DA K.FCloseA
.DA K.FREAD .DA K.FREAD
.DA K.FWRITE .DA K.FWRITE
.DA K.FFLUSHA .DA K.FFLUSHA

View File

@ -126,7 +126,7 @@ K.GetMem >PULLB MemMgr.ReqFlags store requested flags
ldy #S.MEM.REFCNT ldy #S.MEM.REFCNT
sta (ZPMemMgrSPtr),y sta (ZPMemMgrSPtr),y
ldy #S.PS.ID ldy #S.PS.PID
lda (pPs),y lda (pPs),y
ldy #S.MEM.OWNERPID ldy #S.MEM.OWNERPID
sta (ZPMemMgrSPtr),y sta (ZPMemMgrSPtr),y

View File

@ -89,7 +89,7 @@ K.GetPSByIDA sta K.GetPSByIDA.PS
.2 lda (ZPQuickPtr1) .2 lda (ZPQuickPtr1)
bpl .3 bpl .3
ldy #S.PS.ID ldy #S.PS.PID
lda (ZPQuickPtr1),y lda (ZPQuickPtr1),y
cmp K.GetPSByIDA.PS cmp K.GetPSByIDA.PS
beq .8 beq .8
@ -165,7 +165,7 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS
jsr K.GetPSByIDA jsr K.GetPSByIDA
bcc .4 bcc .4
ldy #S.PS.ID ldy #S.PS.PID
lda TSKMGR.LASTID lda TSKMGR.LASTID
sta (ZPQuickPtr3),y sta (ZPQuickPtr3),y
@ -218,13 +218,13 @@ PS.CreateChild >LDYAI TskMgr.Table+S.PS
cpy #S.PS.hERRDEV+1 cpy #S.PS.hERRDEV+1
bne .81 bne .81
ldy #S.PS.ID ldy #S.PS.PID
lda (pPs),y lda (pPs),y
ldy #S.PS.PID ldy #S.PS.PPID
sta (ZPQuickPtr3),y sta (ZPQuickPtr3),y
ldy #S.PS.CID ldy #S.PS.CPID
lda TSKMGR.LASTID lda TSKMGR.LASTID
sta (pPs),y sta (pPs),y

View File

@ -12,7 +12,7 @@ AUTO 6
* ##Out: * ##Out:
* CC : success * CC : success
* Y,A = PTR to String * Y,A = PTR to String
* X = hMem (PSTRING) * X = hMem (PSTR)
* CS : error * CS : error
* A = SYS error code * A = SYS error code
*\-------------------------------------- *\--------------------------------------
@ -34,15 +34,15 @@ K.NewPStrYA >STYA ZPQuickPtr2
clc clc
.9 rts .9 rts
*-------------------------------------- */--------------------------------------
* #PStrCpy * #PStrCpy
* Copy string * Copy string
* ##In: * ##In:
* PUSHW = PSTR to SRC (PSTRING) * PUSHW = Ptr to SRC (PSTR)
* PUSHW = PSTR to DST (PSTRING) * PUSHW = Ptr to DST (PSTR)
* ##Out: * ##Out:
* DST = SRC (PSTRING) * DST = SRC (PSTR)
*-------------------------------------- *\--------------------------------------
K.PStrCpy jsr PullPtr1Ptr2 K.PStrCpy jsr PullPtr1Ptr2
K.PStrCpyPtr2Ptr1 K.PStrCpyPtr2Ptr1
@ -58,15 +58,15 @@ K.PStrCpyPtr2Ptr1
.2 clc .2 clc
rts rts
*-------------------------------------- */--------------------------------------
* #PStrCat * #PStrCat
* Append SRC to DST * Append SRC to DST
* ##In: * ##In:
* PUSHW = PSTR to SRC (PSTRING) * PUSHW = Ptr to SRC (PSTR)
* PUSHW = PSTR to DST (PSTRING) * PUSHW = Ptr to DST (PSTR)
* ##Out: * ##Out:
* DST = DST+SRC (PSTRING) * DST = DST+SRC (PSTR)
*-------------------------------------- *\--------------------------------------
K.PStrCat jsr PullPtr1Ptr2 K.PStrCat jsr PullPtr1Ptr2
lda (ZPQuickPtr2) lda (ZPQuickPtr2)
@ -171,7 +171,7 @@ K.PStrMatch jsr PullPtr1Ptr2
* #PStrUprYA/PStrLwrYA * #PStrUprYA/PStrLwrYA
* Convert string to UPPERCASE/lowercase * Convert string to UPPERCASE/lowercase
* ##In: * ##In:
* Y,A = PTR to String (PSTRING) * Y,A = PTR to String (PSTR)
* ##Out: * ##Out:
* Uppercased/lowercased String in Buffer * Uppercased/lowercased String in Buffer
*\-------------------------------------- *\--------------------------------------

View File

@ -22,7 +22,7 @@ TSK.TskMgrRun >LDYAI TskMgr.Table+S.PS skip PS 0
bit #S.PS.F.HOLD Waiting for Another Task to Terminate? bit #S.PS.F.HOLD Waiting for Another Task to Terminate?
beq .2 beq .2
ldy #S.PS.CID ldy #S.PS.CPID
lda (pPs),y lda (pPs),y
jsr K.GetPSByIDA jsr K.GetPSByIDA
bcc .7 yes, running.... bcc .7 yes, running....
@ -71,7 +71,7 @@ TSK.TskMgrRun >LDYAI TskMgr.Table+S.PS skip PS 0
ldx #TSKMGR.QUIT yes, quit this process ldx #TSKMGR.QUIT yes, quit this process
jsr pCodeJmp Call QUIT function jsr pCodeJmp Call QUIT function
ldy #S.PS.ID ldy #S.PS.PID
lda (pPs),y lda (pPs),y
jsr PS.FreeA jsr PS.FreeA
bcs * bcs *

View File

@ -84,6 +84,7 @@ A2osX.D002 .EQ *
.INB SYS/KERNEL.S.ARG .INB SYS/KERNEL.S.ARG
.INB SYS/KERNEL.S.ENV .INB SYS/KERNEL.S.ENV
*-------------------------------------- *--------------------------------------
.INB SYS/KERNEL.S.CNV
.INB SYS/KERNEL.S.RUN .INB SYS/KERNEL.S.RUN
.INB SYS/KERNEL.S.EVT .INB SYS/KERNEL.S.EVT
.INB SYS/KERNEL.S.TSK .INB SYS/KERNEL.S.TSK

45
X.ERRORS.S.txt Normal file
View File

@ -0,0 +1,45 @@
PR#3
PREFIX /A2OSX.SRC
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
ERR.Codes .DA #MLI.ERR.IO
.DA #MLI.ERR.NODEV
.DA #MLI.ERR.WRTPROT
.DA #MLI.ERR.DSKSWIT
.DA #MLI.ERR.INVPATH
.DA #MLI.ERR.PNOTFND
.DA #MLI.ERR.VNOTFND
.DA #MLI.ERR.FNOTFND
.DA #MLI.ERR.DUPFILE
.DA #MLI.ERR.OVERRUN
.DA #MLI.ERR.VOLFULL
.DA #MLI.ERR.EOF
*--------------------------------------
.DA #SYSMGR.ERRSYN
.DA #SYSMGR.ERRFNF
*--------------------------------------
ERR.Count .EQ *-ERR.Codes
*--------------------------------------
ERR.Messages >PSTR "I/O Error"
>PSTR "No Device"
>PSTR "Disk Write-Protected"
>PSTR "Disk Switched"
>PSTR "Invalid Path"
>PSTR "Path Not Found"
>PSTR "Volume Not Found"
>PSTR "File Not Found"
>PSTR "Duplicate Filename"
>PSTR "Buffer Overrun"
>PSTR "Volume Is Full"
>PSTR "End Of File"
*--------------------------------------
>PSTR "Syntax Error"
>PSTR "Command Not Found"
*--------------------------------------
>PSTR "Unknown Error"
*--------------------------------------
MAN
SAVE X.ERRORS.S