Kernel 0.92

This commit is contained in:
Rémy GIBERT 2018-11-22 17:39:41 +01:00
parent 0de2ab8cdd
commit e88b1cf585
14 changed files with 208 additions and 100 deletions

View File

@ -98,6 +98,6 @@ CSH.FN >PSTR "printf"
.DA #0 .DA #0
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SBIN/SHELL.C.CSH SAVE USR/SRC/BIN/SHELL.C.CSH
LOAD USR/SRC/SBIN/SHELL.S LOAD USR/SRC/BIN/SHELL.S
ASM ASM

View File

@ -29,6 +29,6 @@ CSH.EXPBOP2 .BS 1
CSH.LookupOpt .BS 1 CSH.LookupOpt .BS 1
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SBIN/SHELL.G.CSH SAVE USR/SRC/BIN/SHELL.G.CSH
LOAD USR/SRC/SBIN/SHELL.S LOAD USR/SRC/BIN/SHELL.S
ASM ASM

View File

@ -49,6 +49,6 @@ J.CSH.KW.END .DA CSH.IF.END
.DA CSH.WHILE.END .DA CSH.WHILE.END
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SBIN/SHELL.R.CSH SAVE USR/SRC/BIN/SHELL.R.CSH
LOAD USR/SRC/SBIN/SHELL.S LOAD USR/SRC/BIN/SHELL.S
ASM ASM

View File

@ -457,7 +457,7 @@ CL.CheckCmd ldy #$ff
ldy #CMD.Stat+S.STAT.P.TYPE ldy #CMD.Stat+S.STAT.P.TYPE
lda (pData),y lda (pData),y
cmp #S.FI.T.TXT cmp #S.FI.T.TXT
beq CL.CheckCmd.TXT beq CL.CheckCmd.BIN
cmp #S.FI.T.BIN cmp #S.FI.T.BIN
beq CL.CheckCmd.BIN beq CL.CheckCmd.BIN
cmp #S.FI.T.SYS cmp #S.FI.T.SYS
@ -478,8 +478,7 @@ CL.CheckCmd.RTS
*-------------------------------------- *--------------------------------------
* TXT : add "/PATH/SHELL" "/PATH/CMD" * TXT : add "/PATH/SHELL" "/PATH/CMD"
*-------------------------------------- *--------------------------------------
CL.CheckCmd.TXT lda #0 CL.CheckCmd.TXT >LDYA L.SHELL
>SYSCALL ArgV
jsr CL.AddYAToArgV jsr CL.AddYAToArgV
bcs CL.CheckCmd.90 bcs CL.CheckCmd.90
*-------------------------------------- *--------------------------------------
@ -633,6 +632,6 @@ CL.AddYAToArgV >STYA ZPPtr1
rts rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SBIN/SHELL.S.CL SAVE USR/SRC/BIN/SHELL.S.CL
LOAD USR/SRC/SBIN/SHELL.S LOAD USR/SRC/BIN/SHELL.S
ASM ASM

View File

@ -272,11 +272,11 @@ Cmd.INT.SET.1 >STZ.G CMD.Varname
jsr Cmd.GetArgX jsr Cmd.GetArgX
bcs Cmd.INT.SET.UNSET bcs Cmd.INT.SET.UNSET
jsr Cmd.INT.GetEXP jsr Cmd.GetEXP
bcs .99 bcs .99
>PUSHYA >PUSHEA.G M32.Buf
>LDA.G CMD.Varname >LDA.G CMD.Varname
tax tax
jsr Cmd.GetArgX jsr Cmd.GetArgX
@ -848,8 +848,16 @@ Cmd.GetEXP >LDA.G CMD.ArgIndex
bcs .9 bcs .9
>PULLL.G M32.ARG >PULLL.G M32.ARG
jsr .80
bcs .9
>PUSHL.G M32.ACC
>PUSHBI 4
>PUSHEA.G M32.BUF
>LDYA L.M32.Printf
>SYSCALL sprintf
bcs .9
rts
.9 lda #E.BADEXP .9 lda #E.BADEXP
rts rts
@ -1006,6 +1014,6 @@ CMD.StkGet lda (pData) StackPtr
rts rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SBIN/SHELL.S.CMD SAVE USR/SRC/BIN/SHELL.S.CMD
LOAD USR/SRC/SBIN/SHELL.S LOAD USR/SRC/BIN/SHELL.S
ASM ASM

View File

@ -1095,6 +1095,6 @@ CSH.IsDigit10 cmp #'0'
rts rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SBIN/SHELL.S.CSH SAVE USR/SRC/BIN/SHELL.S.CSH
LOAD USR/SRC/SBIN/SHELL.S LOAD USR/SRC/BIN/SHELL.S
ASM ASM

View File

@ -180,6 +180,6 @@ HIS.Quit >LDA.G HIS.hBuf
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SBIN/SHELL.S.HIS SAVE USR/SRC/BIN/SHELL.S.HIS
LOAD USR/SRC/SBIN/SHELL.S LOAD USR/SRC/BIN/SHELL.S
ASM ASM

View File

@ -198,6 +198,6 @@ IO.PrintErrMsg pha Save EC for PrintF
rts rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SBIN/SHELL.S.IO SAVE USR/SRC/BIN/SHELL.S.IO
LOAD USR/SRC/SBIN/SHELL.S LOAD USR/SRC/BIN/SHELL.S
ASM ASM

View File

@ -4,7 +4,7 @@ AUTO 4,1
.LIST OFF .LIST OFF
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF SBIN/SHELL .TF BIN/SHELL
*-------------------------------------- *--------------------------------------
CSH .EQ 0 CSH .EQ 0
*-------------------------------------- *--------------------------------------
@ -96,10 +96,12 @@ L.MSG.BATCHERR .DA MSG.BATCHERR
L.MSG.ERROR .DA MSG.ERROR L.MSG.ERROR .DA MSG.ERROR
L.MSG.PRINTENV .DA MSG.PRINTENV L.MSG.PRINTENV .DA MSG.PRINTENV
L.MSG.PID .DA MSG.PID L.MSG.PID .DA MSG.PID
L.SHELL .DA SHELL
L.ENV.ROOT .DA ENV.ROOT L.ENV.ROOT .DA ENV.ROOT
L.ENV.PATH .DA ENV.PATH L.ENV.PATH .DA ENV.PATH
L.ENV.PWD .DA ENV.PWD L.ENV.PWD .DA ENV.PWD
L.ENV.PS1 .DA ENV.PS1 L.ENV.PS1 .DA ENV.PS1
L.ENV.SHELL .DA ENV.SHELL
L.ENV.HOME .DA ENV.HOME L.ENV.HOME .DA ENV.HOME
L.FMT.DATE .DA FMT.DATE L.FMT.DATE .DA FMT.DATE
L.FMT.TIME .DA FMT.TIME L.FMT.TIME .DA FMT.TIME
@ -153,10 +155,11 @@ J.CMD.IF.TOKEN4 .DA M32.Add
.DA M32.Mul .DA M32.Mul
.DA M32.Div .DA M32.Div
.DA M32.Mod .DA M32.Mod
L.M32.Printf .DA M32.Printf
L.ERR.Codes .DA ERR.Codes L.ERR.Codes .DA ERR.Codes
L.ERR.Messages .DA ERR.Messages L.ERR.Messages .DA ERR.Messages
.DO CSH=1 .DO CSH=1
.INB USR/SRC/SBIN/SHELL.R.CSH .INB USR/SRC/BIN/SHELL.R.CSH
.FIN .FIN
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
@ -166,9 +169,18 @@ CS.INIT.RTS rts
CS.RUN jsr CMD.Init CS.RUN jsr CMD.Init
bcs CS.INIT.RTS bcs CS.INIT.RTS
ldy #S.PS.ARGC
lda (pPS),y
beq .1 no arg, continue starting interactive
>PUSHW L.ENV.SHELL
lda #0
>SYSCALL ArgV
>SYSCALL setenv
bcs CS.INIT.RTS
lda #1 lda #1
>SYSCALL ArgV >SYSCALL ArgV
bcs .1 no arg, continue starting interactive
>SYSCALL LoadTxtFile >SYSCALL LoadTxtFile
bcs CS.INIT.RTS bcs CS.INIT.RTS
@ -181,7 +193,7 @@ CS.RUN jsr CMD.Init
jsr SetPWD jsr SetPWD
lda #0 lda #0
jsr ShiftA Remove $0=/bin/shell jsr ShiftA Remove $0=/bin/shell
.DO CSH=1 .DO CSH=1
jsr CSH.Init jsr CSH.Init
@ -533,12 +545,12 @@ Lookup >STYA ZPPtr2
sec sec
rts rts
*-------------------------------------- *--------------------------------------
.INB USR/SRC/SBIN/SHELL.S.CL .INB USR/SRC/BIN/SHELL.S.CL
.INB USR/SRC/SBIN/SHELL.S.CMD .INB USR/SRC/BIN/SHELL.S.CMD
.INB USR/SRC/SBIN/SHELL.S.IO .INB USR/SRC/BIN/SHELL.S.IO
.INB USR/SRC/SBIN/SHELL.S.HIS .INB USR/SRC/BIN/SHELL.S.HIS
.DO CSH=1 .DO CSH=1
.INB USR/SRC/SBIN/SHELL.S.CSH .INB USR/SRC/BIN/SHELL.S.CSH
.FIN .FIN
*-------------------------------------- *--------------------------------------
CS.END CS.END
@ -554,11 +566,13 @@ MSG.PID .AZ "PID=%d\r\n"
FMT.DATE .AZ "%A (%w), %B %d %Y" FMT.DATE .AZ "%A (%w), %B %d %Y"
FMT.TIME .AZ "%H:%M:%S (%I:%M:%S%p)" FMT.TIME .AZ "%H:%M:%S (%I:%M:%S%p)"
*-------------------------------------- *--------------------------------------
SHELL .AZ "${ROOT}SBIN/SHELL"
ENV.ROOT .AZ "ROOT" ENV.ROOT .AZ "ROOT"
ENV.PATH .AZ "PATH" ENV.PATH .AZ "PATH"
ENV.PWD .AZ "PWD" ENV.PWD .AZ "PWD"
ENV.PS1 .AZ "PS1" ENV.PS1 .AZ "PS1"
ENV.HOME .AZ "HOME" ENV.HOME .AZ "HOME"
ENV.SHELL .AZ "SHELL"
*-------------------------------------- *--------------------------------------
* https://www.tldp.org/LDP/abs/html/io-redirection.html * https://www.tldp.org/LDP/abs/html/io-redirection.html
*-------------------------------------- *--------------------------------------
@ -631,13 +645,14 @@ CMD.IF.TOKEN3.BITS
.DA #%011 .DA #%011
*-------------------------------------- *--------------------------------------
.DO CSH=1 .DO CSH=1
.INB USR/SRC/SBIN/SHELL.C.CSH .INB USR/SRC/BIN/SHELL.C.CSH
.FIN .FIN
.INB USR/SRC/X.M32.S .INB USR/SRC/X.M32.S
.INB USR/SRC/X.ERRORS.S .INB USR/SRC/X.ERRORS.S
*-------------------------------------- *--------------------------------------
EscChars .AS 'DBAC' EscChars .AS 'DBAC'
EscChars.Cnt .EQ *-EscChars EscChars.Cnt .EQ *-EscChars
M32.Printf .AZ "%L"
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0
@ -684,14 +699,14 @@ IO.hIn .BS 1
IO.hOut .BS 1 IO.hOut .BS 1
IO.hErr .BS 1 IO.hErr .BS 1
.DO CSH=1 .DO CSH=1
.INB USR/SRC/SBIN/SHELL.G.CSH .INB USR/SRC/BIN/SHELL.G.CSH
.FIN .FIN
M32.BUF .BS 12 -1234567890\0
M32.ACC .BS 4 M32.ACC .BS 4
M32.ARG .BS 4 M32.ARG .BS 4
M32.TMP .BS 4 M32.TMP .BS 4
DS.END .ED DS.END .ED
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SBIN/SHELL.S SAVE USR/SRC/BIN/SHELL.S
ASM ASM

View File

@ -78,7 +78,7 @@ A2osX.S.DISABLE .EQ $FF
*-------------------------------------- *--------------------------------------
* ProDOS ERROR CODES : $00->$5F * ProDOS ERROR CODES : $00->$5F
* Lib ERROR CODES : $80->$BF * Lib ERROR CODES : $80->$BF
* Kernel ERROR CODES : $C0->$FF * Kernel ERROR CODES : $F0->$FF
*-------------------------------------- *--------------------------------------
E.OOM .EQ $FF Out Of Memory Error E.OOM .EQ $FF Out Of Memory Error
E.OOH .EQ $FE Out Of Handle Error E.OOH .EQ $FE Out Of Handle Error
@ -86,13 +86,11 @@ E.INVH .EQ $FD Invalid Handle
E.BUF .EQ $FC Buffer Overflow E.BUF .EQ $FC Buffer Overflow
E.BADPATH .EQ $FB E.BADPATH .EQ $FB
E.BADARG .EQ $FA E.BADARG .EQ $FA
*-------------------------------------- E.NSP .EQ $F9 No Such Process Error
E.NSP .EQ $DD No Such Process Error E.SYN .EQ $F8 Syntax Error
*-------------------------------------- E.ENVF .EQ $F7 Env is Full
E.SYN .EQ $CF Syntax Error E.IBIN .EQ $F6 Invalid BIN format
E.ENVF .EQ $CE Env is Full E.FTB .EQ $F5 File Too Big Error
E.IBIN .EQ $CD Invalid BIN format
E.FTB .EQ $CC File Too Big Error
*-------------------------------------- *--------------------------------------
* A2osX.SYSCALL Constants * A2osX.SYSCALL Constants
*-------------------------------------- *--------------------------------------

View File

@ -201,11 +201,14 @@ BIN.Load >STYA BIN.CmdLine
clc clc
rts X=hMem, Y,A=Ptr rts X=hMem, Y,A=Ptr
*-------------------------------------- *--------------------------------------
BIN.Load.1 >PUSHWI K.S.STAT BIN.Load.1
>LDYA BIN.CmdLine * >PUSHWI K.S.STAT
>SYSCALL STAT BANK1!!! Look for AUXTYPE * >LDYA BIN.CmdLine
bcs .9 * >SYSCALL STAT BANK1!!! Look for AUXTYPE
* bcs .9
* Already called by Filesearch in FindDRV, FindLIB
* Already called by PS.Load (TXT,BIN,SYS)
>LDYA K.S.STAT+S.STAT.P.AUXTYPE >LDYA K.S.STAT+S.STAT.P.AUXTYPE
>STYA BIN.R.CS.Start >STYA BIN.R.CS.Start
@ -535,35 +538,6 @@ BIN.RelDrv ldy #H.BIN.DRV.REL.TABLE
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
* 6502/65C02/65816 OPCODES
* Bit 3 : 1 = absolute addressing
* Bit 2-1-0 : opcode + @ length
*--------------------------------------
* 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F
BIN.65816
* TO DO : Make 2 different tables
* http://axis.llx.com/~nparker/a2/opcodes.html
*--------------------------------------
* 65R02 OPCODES
*--------------------------------------
* 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F
BIN.65R02 .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS B.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
.HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
*--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.BIN SAVE USR/SRC/SYS/KERNEL.S.BIN
LOAD USR/SRC/SYS/KERNEL.S LOAD USR/SRC/SYS/KERNEL.S

View File

@ -138,11 +138,11 @@ Kernel.Init3 sta SETALTZP
>LDYAI MSG.Prefix >LDYAI MSG.Prefix
>SYSCALL printf >SYSCALL printf
lda KBD * lda KBD
bpl .1 * bpl .1
sta KBDSTROBE * sta KBDSTROBE
cmp #$84 CTRL-D for Maintenace mode * cmp #$84 CTRL-D for Maintenace mode
bne .1 * bne .1
>PUSHBI 0 >PUSHBI 0
>LDYAI MSG.CTRLD >LDYAI MSG.CTRLD
@ -1064,8 +1064,8 @@ I.ENV.ROOT .AZ "ROOT"
I.ENV.PATH .AZ "PATH=${ROOT}SBIN/:${ROOT}BIN/" I.ENV.PATH .AZ "PATH=${ROOT}SBIN/:${ROOT}BIN/"
I.ENV.LIB .AZ "LIB=${ROOT}LIB/" I.ENV.LIB .AZ "LIB=${ROOT}LIB/"
I.ENV.DRV .AZ "DRV=${ROOT}DRV/" I.ENV.DRV .AZ "DRV=${ROOT}DRV/"
CTRLD.SHELL .AZ "${ROOT}SBIN/SHELL" CTRLD.SHELL .AZ "${ROOT}BIN/SHELL"
ETCINIT.CMDLINE .AZ "${ROOT}SBIN/SHELL ${ROOT}ETC/INIT" ETCINIT.CMDLINE .AZ "${ROOT}ETC/INIT"
*-------------------------------------- *--------------------------------------
MLIOPEN00 .DA #3 MLIOPEN00 .DA #3
.DA A2OSXCONF .DA A2OSXCONF

View File

@ -742,6 +742,35 @@ MEM.PutCharPtr2 sta (ZPPtr2)
inc ZPPtr2+1 inc ZPPtr2+1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
* 6502/65C02/65816 OPCODES
* Bit 3 : 1 = absolute addressing
* Bit 2-1-0 : opcode + @ length
*--------------------------------------
* 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F
BIN.65816
* TO DO : Make 2 different tables
* http://axis.llx.com/~nparker/a2/opcodes.html
*--------------------------------------
* 65R02 OPCODES
*--------------------------------------
* 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F
BIN.65R02 .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS B.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
.HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
.HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3
.HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3
*--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.MEM SAVE USR/SRC/SYS/KERNEL.S.MEM
LOAD USR/SRC/SYS/KERNEL.S LOAD USR/SRC/SYS/KERNEL.S

View File

@ -62,23 +62,13 @@ PS.Exec jsr PS.CreateChild Child S.PS at ZPPtr3
sta .8+1 sta .8+1
>LDYA PS.ArgV
jsr PS.DupArgs
bcs .9
ldy #S.PS.hARGV
sta (ZPPtr3),y
pha
dey S.PS.ARGC
txa
sta (ZPPtr3),y
pla
jsr K.GetMemPtr
jsr PS.Load jsr PS.Load
bcs .99
jsr PS.AddArgV
bcc .8 bcc .8
pha save error code .99 pha save error code
lda .8+1 lda .8+1
jsr CORE.PSFree jsr CORE.PSFree
pla get back error code pla get back error code
@ -93,7 +83,7 @@ PS.Exec jsr PS.CreateChild Child S.PS at ZPPtr3
* out : * out :
* A = PSID * A = PSID
* we cannot use ZPPtrs1 & 2 * we cannot use ZPPtrs1 & 2
* because of calling K.NewStr.YA & PS.Dup * because of calling K.NewStr & PS.Dup
*-------------------------------------- *--------------------------------------
PS.CreateChild ldx CORE.PSCount PS.CreateChild ldx CORE.PSCount
beq .3 beq .3
@ -211,7 +201,63 @@ PS.CreateChild ldx CORE.PSCount
clc Exit with A=PSID clc Exit with A=PSID
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
PS.Load jsr BIN.Load Y,A=filename full path PS.Load >PUSHWI K.S.STAT
>LDYA PS.ArgV
>SYSCALL stat BANK 1
bcs .99
lda K.S.STAT+S.STAT.P.TYPE
cmp #S.FI.T.BIN
beq PS.LoadBIN
cmp #S.FI.T.TXT
beq .10
cmp #S.FI.T.SYS
bne .98
bra *
.10 jsr PS.LoadGetHeader
bcs .99
>LDYAI PS.Load.ROOT
jsr K.GetEnv
bcs .97
>STYA .21+1
ldx #$ff
.2 inx
.21 lda $ffff,x
sta K.Buf256,x
bne .2
ldy #0
.3 lda K.IOBuf+128,y
cmp PS.Load.HEADER,y
bne .98
iny
cpy #3
bne .3
.4 iny
inx
lda K.IOBuf+128-1,y
sta K.Buf256-1,x
bne .4
>LDYAI K.Buf256
bra PS.LoadBIN.YA
.97 lda #E.BADPATH
.HS 2C
.98 lda #E.IBIN
sec
.99 rts
PS.LoadBIN >LDYA PS.ArgV
PS.LoadBIN.YA jsr BIN.Load
bcs .9 bcs .9
>STYA ZPPtr4 save PTR to Code Segment >STYA ZPPtr4 save PTR to Code Segment
@ -301,6 +347,45 @@ PS.Load jsr BIN.Load Y,A=filename full path
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
PS.LoadGetHeader
>PUSHWI 0 Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY
>LDYA PS.ArgV
>SYSCALL fopen
bcs .99
sta .1+1
>PUSHWI 128
>PUSHWI K.IOBuf+128
.1 lda #$ff SELF MODIFIED
>SYSCALL fgets
php
pha
lda .1+1
>SYSCALL fclose
pla
plp
.99 rts
*--------------------------------------
PS.Load.ROOT .AZ "ROOT"
PS.Load.HEADER .AZ "#!/"
*--------------------------------------
PS.AddArgV >LDYA PS.ArgV
jsr PS.DupArgs
bcs .9
ldy #S.PS.hARGV
sta (ZPPtr3),y
dey S.PS.ARGC
txa
dec don't include $0
sta (ZPPtr3),y
* clc
.9 rts
*--------------------------------------
* PS.DupArgs * PS.DupArgs
* In: * In:
* Y,A = Ptr To Args[] * Y,A = Ptr To Args[]