Kernel 0.94+

This commit is contained in:
Rémy GIBERT 2020-12-15 14:23:22 +01:00
parent fdca1edf79
commit 0f9ebec8be
83 changed files with 1296 additions and 1229 deletions

View File

@ -81,7 +81,7 @@ X = hDev
# GetDevStatus
## C
## C
`int getdevstatus(short int DevID, S.DIB *dstat);`
## ASM
@ -491,14 +491,11 @@ A = Child PSID
Load TXT a file in memory (with ending 0)
## C
`int loadtxtfile ( const char * filename, short int flags, short int ftype, int auxtype );`
`int loadtxtfile ( const char * filename );`
## ASM
**In:**
`>PUSHW filename`
`>PUSHB flags`
`>PUSHB ftype`
`>PUSHW auxtype`
`>LDYA filename`
`>SYSCALL loadtxtfile`
## RETURN VALUE

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,218 +1,218 @@
NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF bin/acc
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
*--------------------------------------
* Zero Page Segment, up to 32 bytes
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2 ; address pointer (used in arg parsing)
ArgIndex .BS 1 ; index offset for argument parsing
bFast .BS 1 ; arg variable - fast mode if = 1
bSlow .BS 1 ; arg variable - slow mode if = 1
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp (.1,x)
.DA #$61 ; 6502,Level 1 (65c02)
.DA #1 ; BIN Layout Version 1
.DA #0 ; Events disabled (enable with S.PS.F.EVENT)
.DA #0
.DA CS.END-CS.START ; Code Size (without Constants)
.DA DS.END-DS.START ; Data SegmentSize
.DA #32 ; Stack Size
.DA #ZS.END-ZS.START ; Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE ; msg for usage / help text
L.MSG.FAST .DA MSG.MSG.FAST ; msg for saying fast mode is enabled
L.MSG.SLOW .DA MSG.MSG.SLOW ; msg for saying slow mode is enabled
.DA 0
*--------------------------------------
* Called once at process creation
* Put code for loading LIB here
*--------------------------------------
CS.INIT clc ; nothing to init, so just clc and return
rts
*--------------------------------------
* Called until exit with CS
* if RUN exits with CC, RN entered again
*--------------------------------------
CS.RUN
.1 inc ArgIndex ; Check next argument
lda ArgIndex
>SYSCALL ArgV ; check for an arg at index in A
bcs .4 ; If doesn't exist, we're done with args
>STYA ZPPtr1 ; ArgV pointer was in Y,A so stick into ZPPtr1
lda (ZPPtr1)
cmp #'-' ; does arg have a hyphen?
bne .9 ; no, we're done as we don't use any non-hyphened args
jsr CS.RUN.CheckOpt ; if it had a hyphen, check and set arg if recognized
bcc .1 ; if we recognized the arg, then loop again to check next
*--- Fast Mode Test -------------------
.4
bit bFast ; did they want us to switch to fast mode?
bpl .5 ; no, so go check next possibility
>PUSHW L.MSG.FAST ; push address for fast mode message
>PUSHBI 0
>SYSCALL PrintF ; print fast mode msg
jsr CS.RUN.SetFastMode ; call fast mode routine
jmp .99 ; jump to successful exit
*--- Slow mode test -------------------
.5
bit bSlow ; did they want us to switch to slow mode?
bpl .9 ; no, so go display usage
>PUSHW L.MSG.SLOW ; push address for slow mode message
>PUSHBI 0
>SYSCALL PrintF ; print slow mode message
jsr CS.RUN.SetSlowMode ; call slow mode routine
jmp .99 ; jump to successful exit
*--- Display usage and error out ------
.9
>PUSHW L.MSG.USAGE ; push address for usage text
>PUSHBI 0
>SYSCALL PrintF ; print usage message
lda #E.SYN ; set OS return code as Syntax Error
sec ; indicate we don't want CS.RUN called again
rts ; return to OS
*--- Successful exit ------------------
.99
lda #0 ; set OS return code to success
sec ; indicate we don't want CS.RUN called again
rts ; return to OS
*--------------------------------------
* Called if option S.PS.F.EVENT enabled in Header
* Timer Event : every 10th seconds
*--------------------------------------
CS.DOEVENT sec ; we don't use this since we don't have timer events
rts
*--------------------------------------
* Called once, when RUN exited with CS
* Put code for unloading LIB here
*--------------------------------------
CS.QUIT clc ; nothing to do on exit except clear carry and return
rts
*--------------------------------------
* CheckOpt assumes a set ZPPtr1 which is the address of the command line argument being examined.
* We start at 1 to look past the '-' as position 0 since that was checked by the caller.
* OptionList is a list of possible options and each character correlates with a memory offset
* in OptionVars, which are only one byte since they are in ZP but this also allows for us to
* simply use indexed addressing to reference them easily as well instead of doing 16-bit
* address juggling.
* The options are checked in reverse from end-to-start and indexed by X.
*--------------------------------------
CS.RUN.CheckOpt ldy #1 ; set up y to look at second character of passed in arg
lda (ZPPtr1),y ; check second character of passed in argument into A
ldx #OptionVars-OptionList-1 ; clever way to put size of OptionList into X
.2 cmp OptionList,x ; compare the arg we got to the OptionList at X
beq .3 ; if it is a match, go handle it.
dex ; if not, decrement so we can check next OptionList
bpl .2 ; if we haven't reached end of OptionList, go check next
sec ; set carry if we didn't find a match
rts ; return to caller
.3 ldy OptionVars,x ; since we matched, find ZP addr of matching option into Y
lda #$ff ; we will set this ZP option to $FF
sta 0,y ; store A into the ZP address we have in Y
clc ; clear carry since we found a match
rts ; return to caller
*--------------------------------------
* CS.RUN.SetFastMode
* Calls a few different ways to enable accelerators, mainly ZipChip, Titan, and TransWarp.
* However, it also works for RocketChip as well.
* The first one (using $C05C) came from some documentation, but not sure which accelerator uses it.
*--------------------------------------
CS.RUN.SetFastMode
sta $C05C ; not sure which accelerator follows this? Not RC at least..
* lda #$05 ; enable Titan Accelerator //e fast mode
* sta $C086 ; by storing $05 to $C086
lda #$5A ; unlock ZipChip so we can configure it
sta $C05A ; by storing $5A into $C05A 4 times
sta $C05A ; to trigger the unlock latch
sta $C05A
sta $C05A
lda #0 ; enable ZipChip fast mode by storing #0
sta $C05B ; into $C05B
lda #$A5 ; lock ZipChip to prevent more configs
sta $C05A ; by setting $C05A to $A5
lda #0 ; enable TransWarp fast mode by storing #0
sta $C074 ; into $C074
rts
*--------------------------------------
* CS.RUN.SetSlowMode
* Calls a few different ways to disable accelerators, mainly ZipChip, Titan, and TransWarp.
* However, it also works for RocketChip as well.
* The first one (using $C05C) came from some documentation, but not sure which accelerator uses it.
*--------------------------------------
CS.RUN.SetSlowMode
sta $C05D ; not sure which accelerator follows this? Not RC at least..
* lda #$01 ; enable Titan Accelerator //e slow mode
* sta $C086 ; by storing $01 to $C086
lda #$5A ; unlock ZipChip so we can configure it
sta $C05A ; by storing $5A into $C05A 4 times
sta $C05A ; to trigger the unlock latch
sta $C05A
sta $C05A
lda #0 ; disable ZipChip acceleration by setting location
sta $C05A ; $C05A to #0
lda #$A5 ; lock ZipChip to prevent more configs
sta $C05A ; by setting $C05A to $A5
lda #1 ; disable TransWarp acceleration by storing #1
sta $C074 ; into $C074
rts
*--------------------------------------
CS.END
*--------------------------------------
MSG.USAGE .AS "Usage : ACC\r\n"
.AS " -F : Fast speed\r\n"
.AZ " -S : Slow speed\r\n"
MSG.MSG.FAST .AZ "FAST mode enabled\r\n"
MSG.MSG.SLOW .AZ "SLOW mode enabled\r\n"
*--------------------------------------
OptionList .AS "FfSs"
OptionVars .DA #bFast,#bFast,#bSlow,#bSlow
*--------------------------------------
* Per Process DATA segment (0 filled before INIT)
*--------------------------------------
.DUMMY
.OR 0
DS.START
DS.END .ED
*--------------------------------------
MAN
SAVE usr/src/bin/acc.s
ASM
NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF bin/acc
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
*--------------------------------------
* Zero Page Segment, up to 32 bytes
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2 ; address pointer (used in arg parsing)
ArgIndex .BS 1 ; index offset for argument parsing
bFast .BS 1 ; arg variable - fast mode if = 1
bSlow .BS 1 ; arg variable - slow mode if = 1
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp (.1,x)
.DA #$61 ; 6502,Level 1 (65c02)
.DA #1 ; BIN Layout Version 1
.DA #0 ; Events disabled (enable with S.PS.F.EVENT)
.DA #0
.DA CS.END-CS.START ; Code Size (without Constants)
.DA DS.END-DS.START ; Data SegmentSize
.DA #32 ; Stack Size
.DA #ZS.END-ZS.START ; Zero Page Size
.DA 0
*--------------------------------------
* Relocation Table
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.MSG.USAGE .DA MSG.USAGE ; msg for usage / help text
L.MSG.FAST .DA MSG.MSG.FAST ; msg for saying fast mode is enabled
L.MSG.SLOW .DA MSG.MSG.SLOW ; msg for saying slow mode is enabled
.DA 0
*--------------------------------------
* Called once at process creation
* Put code for loading LIB here
*--------------------------------------
CS.INIT clc ; nothing to init, so just clc and return
rts
*--------------------------------------
* Called until exit with CS
* if RUN exits with CC, RN entered again
*--------------------------------------
CS.RUN
.1 inc ArgIndex ; Check next argument
lda ArgIndex
>SYSCALL ArgV ; check for an arg at index in A
bcs .4 ; If doesn't exist, we're done with args
>STYA ZPPtr1 ; ArgV pointer was in Y,A so stick into ZPPtr1
lda (ZPPtr1)
cmp #'-' ; does arg have a hyphen?
bne .9 ; no, we're done as we don't use any non-hyphened args
jsr CS.RUN.CheckOpt ; if it had a hyphen, check and set arg if recognized
bcc .1 ; if we recognized the arg, then loop again to check next
*--- Fast Mode Test -------------------
.4
bit bFast ; did they want us to switch to fast mode?
bpl .5 ; no, so go check next possibility
>PUSHW L.MSG.FAST ; push address for fast mode message
>PUSHBI 0
>SYSCALL PrintF ; print fast mode msg
jsr CS.RUN.SetFastMode ; call fast mode routine
jmp .99 ; jump to successful exit
*--- Slow mode test -------------------
.5
bit bSlow ; did they want us to switch to slow mode?
bpl .9 ; no, so go display usage
>PUSHW L.MSG.SLOW ; push address for slow mode message
>PUSHBI 0
>SYSCALL PrintF ; print slow mode message
jsr CS.RUN.SetSlowMode ; call slow mode routine
jmp .99 ; jump to successful exit
*--- Display usage and error out ------
.9
>PUSHW L.MSG.USAGE ; push address for usage text
>PUSHBI 0
>SYSCALL PrintF ; print usage message
lda #E.SYN ; set OS return code as Syntax Error
sec ; indicate we don't want CS.RUN called again
rts ; return to OS
*--- Successful exit ------------------
.99
lda #0 ; set OS return code to success
sec ; indicate we don't want CS.RUN called again
rts ; return to OS
*--------------------------------------
* Called if option S.PS.F.EVENT enabled in Header
* Timer Event : every 10th seconds
*--------------------------------------
CS.DOEVENT sec ; we don't use this since we don't have timer events
rts
*--------------------------------------
* Called once, when RUN exited with CS
* Put code for unloading LIB here
*--------------------------------------
CS.QUIT clc ; nothing to do on exit except clear carry and return
rts
*--------------------------------------
* CheckOpt assumes a set ZPPtr1 which is the address of the command line argument being examined.
* We start at 1 to look past the '-' as position 0 since that was checked by the caller.
* OptionList is a list of possible options and each character correlates with a memory offset
* in OptionVars, which are only one byte since they are in ZP but this also allows for us to
* simply use indexed addressing to reference them easily as well instead of doing 16-bit
* address juggling.
* The options are checked in reverse from end-to-start and indexed by X.
*--------------------------------------
CS.RUN.CheckOpt ldy #1 ; set up y to look at second character of passed in arg
lda (ZPPtr1),y ; check second character of passed in argument into A
ldx #OptionVars-OptionList-1 ; clever way to put size of OptionList into X
.2 cmp OptionList,x ; compare the arg we got to the OptionList at X
beq .3 ; if it is a match, go handle it.
dex ; if not, decrement so we can check next OptionList
bpl .2 ; if we haven't reached end of OptionList, go check next
sec ; set carry if we didn't find a match
rts ; return to caller
.3 ldy OptionVars,x ; since we matched, find ZP addr of matching option into Y
lda #$ff ; we will set this ZP option to $FF
sta 0,y ; store A into the ZP address we have in Y
clc ; clear carry since we found a match
rts ; return to caller
*--------------------------------------
* CS.RUN.SetFastMode
* Calls a few different ways to enable accelerators, mainly ZipChip, Titan, and TransWarp.
* However, it also works for RocketChip as well.
* The first one (using $C05C) came from some documentation, but not sure which accelerator uses it.
*--------------------------------------
CS.RUN.SetFastMode
sta $C05C ; not sure which accelerator follows this? Not RC at least..
* lda #$05 ; enable Titan Accelerator //e fast mode
* sta $C086 ; by storing $05 to $C086
lda #$5A ; unlock ZipChip so we can configure it
sta $C05A ; by storing $5A into $C05A 4 times
sta $C05A ; to trigger the unlock latch
sta $C05A
sta $C05A
lda #0 ; enable ZipChip fast mode by storing #0
sta $C05B ; into $C05B
lda #$A5 ; lock ZipChip to prevent more configs
sta $C05A ; by setting $C05A to $A5
lda #0 ; enable TransWarp fast mode by storing #0
sta $C074 ; into $C074
rts
*--------------------------------------
* CS.RUN.SetSlowMode
* Calls a few different ways to disable accelerators, mainly ZipChip, Titan, and TransWarp.
* However, it also works for RocketChip as well.
* The first one (using $C05C) came from some documentation, but not sure which accelerator uses it.
*--------------------------------------
CS.RUN.SetSlowMode
sta $C05D ; not sure which accelerator follows this? Not RC at least..
* lda #$01 ; enable Titan Accelerator //e slow mode
* sta $C086 ; by storing $01 to $C086
lda #$5A ; unlock ZipChip so we can configure it
sta $C05A ; by storing $5A into $C05A 4 times
sta $C05A ; to trigger the unlock latch
sta $C05A
sta $C05A
lda #0 ; disable ZipChip acceleration by setting location
sta $C05A ; $C05A to #0
lda #$A5 ; lock ZipChip to prevent more configs
sta $C05A ; by setting $C05A to $A5
lda #1 ; disable TransWarp acceleration by storing #1
sta $C074 ; into $C074
rts
*--------------------------------------
CS.END
*--------------------------------------
MSG.USAGE .AS "Usage : ACC\r\n"
.AS " -F : Fast speed\r\n"
.AZ " -S : Slow speed\r\n"
MSG.MSG.FAST .AZ "FAST mode enabled\r\n"
MSG.MSG.SLOW .AZ "SLOW mode enabled\r\n"
*--------------------------------------
OptionList .AS "FfSs"
OptionVars .DA #bFast,#bFast,#bSlow,#bSlow
*--------------------------------------
* Per Process DATA segment (0 filled before INIT)
*--------------------------------------
.DUMMY
.OR 0
DS.START
DS.END .ED
*--------------------------------------
MAN
SAVE usr/src/bin/acc.s
ASM

View File

@ -47,7 +47,7 @@ CS.INIT clc
rts
*--------------------------------------
CS.RUN ldy #S.PS.ARGC
lda (pPs),y
lda (pPS),y
beq CS.RUN.USAGE
jsr CS.RUN.GetInfo

View File

@ -170,11 +170,7 @@ CS.RUN.ARGS inc ArgIndex
sec QUIT Process
rts
*--------------------------------------
CS.RUN.LoadFile >PUSHYA
>PUSHBI O.RDONLY
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
>SYSCALL LoadTxtFile
CS.RUN.LoadFile >SYSCALL LoadTxtFile
bcs .9
phx

View File

@ -140,9 +140,13 @@ CS.RUN lda #C.SPACE
.80 ldy #S.PS.hStdIn
lda (pPS),y
tax
lda OF.Table.hFD-1,x
lsr
bcs .97
lda Nod.Table.hFD-2,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)
cmp #S.FD.T.PIPE
bne .97

View File

@ -8,7 +8,6 @@ NEW
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/mli.e.i
.INB inc/kernel.i
.INB inc/libblkdev.i
*--------------------------------------
.DUMMY
@ -768,7 +767,7 @@ Disk2.XD .DA 640 BlkCnt
Disk2.HD .DA 1280 BlkCnt
.DA #80 TrkCnt
.DA #2 Stepping
.DA ##194 VolNum
.DA #194 VolNum
.DA #$80 AltBB
.DA #1 HeadCnt
.BS 1
@ -776,7 +775,7 @@ Disk2.HD .DA 1280 BlkCnt
Disk2.HXD .DA 1280 BlkCnt
.DA #80 TrkCnt
.DA #2 Stepping
.DA ##194 VolNum
.DA #194 VolNum
.DA #$80 AltBB
.DA #1 HeadCnt
.BS 1

109
BIN/FORTH.S.GFX.txt Normal file
View File

@ -0,0 +1,109 @@
NEW
AUTO 3,1
*--------------------------------------
GFX.Open >PUSHBI 0
>LDYA L.DEV.GFX
>SYSCALL Open
bcs .9
>STA.G hDevGFX
* ldy #S.PS.hStdIn
* lda (pPS),y
* >SYSCALL GetMemPtr
* >STYA ZPPtr1
* ldy #S.FD.DEV.DEVID
* lda (ZPPtr1),y
* >PUSHA
* >PUSHBI IOCTL.CONTROL
* >PUSHWI 0
* >SYSCALL IOCTL
.9 rts
*--------------------------------------
GFX.Close >LDA.G hDevGFX
beq .9
>SYSCALL Close
.9 rts
*--------------------------------------
* (Y X C)
*--------------------------------------
GFX.PLOT lda #S.CB.CMD.SETPIXEL
>STA.G GFX.CB+S.CB.CMD
lda #S.CB.OP.SET
>STA.G GFX.CB+S.CB.OP
lda #S.CB.M.C16
>STA.G GFX.CB+S.CB.M
>PULLA
>STA.G GFX.CB+S.CB.COLOR
>PULLA
ldx #4
ldy #GFX.CB+S.CB.X1+3
.1 >PULLA
sta (pData),y
dey
dex
bne .1
>PUSHB.G hDevGFX
>PUSHBI IOCTL.WRITE
>PUSHEA.G GFX.CB
>SYSCALL IOCTL
lda pStack
clc
adc #6
sta pStack
rts
*--------------------------------------
* (Y2 X2 Y1 X1 C)
*--------------------------------------
GFX.RECT lda #S.CB.CMD.FILLRECT
>STA.G GFX.CB+S.CB.CMD
lda #S.CB.OP.SET
>STA.G GFX.CB+S.CB.OP
lda #S.CB.M.C16
>STA.G GFX.CB+S.CB.M
>PULLA
>STA.G GFX.CB+S.CB.COLOR
>PULLA
ldx #8
ldy #GFX.CB+S.CB.X1+7
.1 >PULLA
sta (pData),y
dey
dex
bne .1
>PUSHB.G hDevGFX
>PUSHBI IOCTL.WRITE
>PUSHEA.G GFX.CB
>SYSCALL IOCTL
lda pStack
clc
adc #10
sta pStack
rts
*--------------------------------------
*--------------------------------------
*--------------------------------------
*--------------------------------------
MAN
SAVE usr/src/bin/forth.s.gfx
LOAD usr/src/bin/forth.s
ASM

View File

@ -4,9 +4,6 @@ NEW
KW.Lookup >LDYA L.KEYWORDS
>STYA ZPPtr1
>LDYA ZPCLBufPtr
>STYA ZPPtr2
ldx #0
.1 ldy #$ff
@ -51,7 +48,7 @@ KW.Lookup >LDYA L.KEYWORDS
rts
.7 iny
lda (ZPPtr2),y Get Src text char...
lda (ZPCLBufPtr),y Get Src text char...
beq .9 end of text
jmp IsSpaceOrCR CS=end of valid chars
@ -761,7 +758,7 @@ KW.PRINT >LDYAI 256
>SYSCALL PutS
pla
>SYSCALL freemem
>SYSCALL FreeMem
.9 rts
*--------------------------------------

View File

@ -9,6 +9,7 @@ NEW
.INB inc/a2osx.i
.INB inc/mli.i
.INB inc/mli.e.i
.INB inc/gfx.i
*--------------------------------------
CODE.SIZE .EQ 2048
DATA.SIZE .EQ 2048
@ -73,6 +74,7 @@ CS.START cld
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.DEV.GFX .DA DEV.GFX
L.MSG.GREETINGS .DA MSG.GREETINGS
L.MSG.USAGE .DA MSG.USAGE
L.MSG.ECHOCRLF .DA MSG.ECHOCRLF
@ -94,7 +96,9 @@ J.ESC .DA CL.BS left arrow
* .DA HIS.GetPrev
.DA CL.NAK right arrow
L.KEYWORDS .DA KEYWORDS
J.KEYWORDS .DA KW.DUP
J.KEYWORDS .DA GFX.PLOT
.DA GFX.RECT
.DA KW.DUP
.DA KW.DROP
.DA KW.SWAP
J.KEYWORDS.OVER .DA KW.OVER
@ -262,6 +266,8 @@ CS.RUN >PUSHW L.MSG.GREETINGS
stz bCompile
lda #127
sta RP
jsr GFX.Open
*--------------------------------------
CS.RUN.LOOP >SLEEP
@ -359,7 +365,7 @@ CS.FORTH.Run.File
>PUSHW ZPCLBuf
>LDA.G hFile
>SYSCALL fgets
>SYSCALL FGetS
bcs .9
>LDA.G bTrace
@ -577,7 +583,9 @@ CS.RUN.GetNum >PUSHW ZPCLBufPtr
CS.DOEVENT sec
rts
*--------------------------------------
CS.QUIT >LDA.G hSList
CS.QUIT jsr GFX.Close
>LDA.G hSList
beq .1
>PUSHA
@ -766,9 +774,11 @@ CheckStackPop4 lda pStack
.INB usr/src/bin/forth.s.cl
.INB usr/src/bin/forth.s.cp
.INB usr/src/bin/forth.s.kw
.INB usr/src/bin/forth.s.gfx
*--------------------------------------
CS.END
*--------------------------------------
DEV.GFX .AZ "/dev/gfx"
MSG.GREETINGS .AZ "\e[?7h\r\nA2osX-FORTH %d.%d (figFORTH)\r\n"
MSG.USAGE .AS "Usage : FORTH <option> file\r\n"
.AS " -D : Debug Mode\r\n"
@ -793,7 +803,10 @@ EscChars .AS 'DBAC'
EscChars.Cnt .EQ *-EscChars
EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS
*--------------------------------------
KEYWORDS .AT "DUP" ( n - n n ) Duplicate top of stack.
KEYWORDS .AT "PLOT"
.AT "RECT"
*--------------------------------------
.AT "DUP" ( n - n n ) Duplicate top of stack.
.AT "DROP" ( n - ) Discard top of stack.
.AT "SWAP" ( n1 n2 - n2 n1 ) Reverse top two stack items.
.AT "OVER" ( n1 n2 - n1 n2 n1 ) Copy second item to top.
@ -960,7 +973,8 @@ hCLBuf .BS 1
hFile .BS 1
LineCounter .BS 2
hSList .BS 1
hDevGFX .BS 1
GFX.CB .BS S.CB
DS.END .ED
*--------------------------------------
MAN

View File

@ -109,7 +109,11 @@ CS.RUN
ldy #S.PS.hStdIn
lda (pPS),y
tax
lda OF.Table.hFD-1,x
lsr
bcs .97
lda Nod.Table.hFD-2,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)

View File

@ -283,42 +283,27 @@ CS.QUIT lda hFont
.8 clc
rts
*--------------------------------------
LoadResources >PUSHW L.FONTFILE
>PUSHBI O.RDONLY
>PUSHBI $CC Type
>PUSHWZ Aux type
LoadResources >LDYA L.FONTFILE
>SYSCALL LoadStkObj
bcs .99
stx hFont
>PUSHW L.FONTFILEB
>PUSHBI O.RDONLY
>PUSHBI $CC Type
>PUSHWZ Aux type
>LDYA L.FONTFILEB
>SYSCALL LoadStkObj
bcs .99
stx hFontB
>PUSHW L.MARILYNFILE
>PUSHBI O.RDONLY
>PUSHBI $CB Type
>PUSHWZ Aux type
>LDYA L.MARILYNFILE
>SYSCALL LoadStkObj
.99 bcs .9
stx CB.PIX+S.CB.SrcPtr
>PUSHW L.LOGOFILE
>PUSHBI O.RDONLY
>PUSHBI $CB Type
>PUSHWZ Aux type
>LDYA L.LOGOFILE
>SYSCALL LoadStkObj
bcs .9
stx CB.LOGO+S.CB.SrcPtr
>PUSHW L.PALETTEFILE
>PUSHBI O.RDONLY
>PUSHBI $CB Type
>PUSHWZ Aux type
>LDYA L.PALETTEFILE
>SYSCALL LoadStkObj
bcs .9
stx CB.PALETTE+S.CB.SrcPtr

View File

@ -55,10 +55,7 @@ CS.INIT >LDYA L.LIBGUI
* clc
.9 rts
*--------------------------------------
CS.RUN >PUSHW L.LOGOFILE
>PUSHBI O.RDONLY
>PUSHBI $CB Type
>PUSHWZ Aux type
CS.RUN >LDYA L.LOGOFILE
>SYSCALL LoadStkObj
bcs .9

View File

@ -197,10 +197,6 @@ CS.RUN.HOSTOK jsr CS.RUN.GETNEXTARG
jsr CS.RUN.GETNEXTARG
bcs .9
>PUSHYA
>PUSHBI O.RDONLY
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
>SYSCALL LoadTxtFile
bcs .9

View File

@ -7,7 +7,6 @@ NEW
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/mli.i
.INB inc/mli.e.i
*--------------------------------------

View File

@ -137,18 +137,18 @@ CS.RUN
>STYA ZPLineBuf
stx hLineBuf
ldy #S.PS.hStdOut
lda (pPS),y
tax
lda OF.Table.hFD-1,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
* ldy #S.PS.hStdOut
* lda (pPS),y
* tax
* lda OF.Table.hFD-1,x
* >SYSCALL GetMemPtr
* >STYA ZPPtr1
lda (ZPPtr1) S.FD.T
beq CS.RUN.LOOP S.FD.T.REG
* lda (ZPPtr1) S.FD.T
* beq CS.RUN.LOOP S.FD.T.REG
cmp #S.FD.T.PIPE
beq CS.RUN.LOOP
* cmp #S.FD.T.PIPE
* beq CS.RUN.LOOP
dec bCRLF
*--------------------------------------

View File

@ -45,6 +45,7 @@ L.MSG2.C .DA MSG2.C
L.MSG2.B .DA MSG2.B
L.MSG3 .DA MSG3
L.MSG4 .DA MSG4
L.NO.PATH .DA NO.PATH
L.FD.T .DA FD.T.REG
.DA FD.T.DIR
.DA FD.T.CDEV
@ -199,22 +200,20 @@ DumpNod >LDYA L.MSG3
>SYSCALL PutS
ldx #2
stx Index
.1 lda Nod.Table.hPath-2,x
.1 stx Index
lda Nod.Table.hFD-2,x
beq .7
>PUSHW L.MSG4
lda Index
txa
>PUSHA
tax
lda Nod.Table.hFD-2,x
>PUSHA
ldx Index
lda Nod.Table.hFD-2,x
>SYSCALL GetMemPtr
>STYA ZPFDPtr
lda (ZPFDPtr)
@ -222,16 +221,23 @@ DumpNod >LDYA L.MSG3
>PUSHW L.FD.T,x
ldx Index
lda Nod.Table.hPath-2,x
>SYSCALL GetMemPtr
>PUSHYA
lda Nod.Table.hName-2,x
bne .2
>LDYA L.NO.PATH
bra .3
.2 >SYSCALL GetMemPtr
.3 >PUSHYA
>PUSHBI 6
>SYSCALL PrintF
.7 inc Index
ldx Index
.7 inx
inx
cpx #K.NOD.MAX+2
bne .1
@ -251,10 +257,12 @@ MSG2.ERR .AZ "Device Error : $%h\r\n"
MSG2 .AZ "%s $%h/$%h %16S %03d.%03d "
MSG2.B .AZ "%10u\r\n"
MSG2.C .AZ "n/a\r\n"
MSG.SFLAGS .AS "BWRLNEIO"
MSG.SFLAGS .AS "bwrlneio"
*--------------------------------------
MSG3 .AZ "hNod hFD Type Filepath"
MSG4 .AZ "%03d $%h %5s %s\r\n"
NO.PATH .AZ "(no path)"
*--------------------------------------
FD.T.REG .AZ "REG"
FD.T.DIR .AZ "DIR"
FD.T.CDEV .AZ "CDEV"

View File

@ -50,61 +50,42 @@ CS.INIT clc
CS.RUN >LDYA L.MSG0
>SYSCALL PutS
ldx #1
stx FILE.ID
ldx #2
.1 lda OF.Table.hFD-1,x
.1 stx FILE.ID
lda Nod.Table.hFD-2,x
beq .7
>PUSHW L.MSG1
txa
>PUSHA
lda Nod.Table.hFD-2,x
>PUSHA
>SYSCALL GetMemPtr
>STYA ZPFDPtr
>PUSHW L.MSG1
lda FILE.ID
tax
>PUSHA
lda OF.Table.hFD-1,x
>PUSHA
ldx FILE.ID
lda OF.Table.hPath-1,x
bne .2
lda OF.Table.hFD-1,x
tax
lda Dev.Table-1,x
sta ZPFDPtr
clc
adc #S.FD.DEV
tay
lda Dev.Table,x
sta ZPFDPtr+1
adc /S.FD.DEV
bra .3
.2 >SYSCALL GetMemPtr
.3 pha
lda (ZPFDPtr)
tax
>PUSHW L.FD.T,x
pla
lda Nod.Table.hName-2,x
>SYSCALL GetMemPtr
>PUSHYA
>PUSHBI 6
>SYSCALL PrintF
.7 inc FILE.ID
ldx FILE.ID
cpx #K.OF.MAX+1
.7 ldx FILE.ID
inx
inx
cpx #K.NOD.MAX*2+2
bne .1
.8 lda #0
lda #0
sec
.9 rts
*--------------------------------------

View File

@ -70,12 +70,14 @@ CS.RUN
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
ldx OptionList
.2 cmp OptionList,x
beq .3
dex
bne .2
@ -90,24 +92,34 @@ CS.RUN
lda #$80
sta (pData),y
bra .1
.4 lda hFile
bne .99
>LDYA ZPPtr1
jsr CS.RUN.OPEN
bcs .9
bra .1 scan for any other args
.7 lda bHelp
beq .8
.71 jsr .99
lda #0
rts
.8 lda hFile
bne .80
ldy #S.PS.hStdIn
lda (pPS),y
tax
lda OF.Table.hFD-1,x
lsr
bcs .71
lda Nod.Table.hFD-2,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
@ -118,6 +130,7 @@ CS.RUN
.80 >LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPBufPtr
stx hBuf
@ -127,27 +140,37 @@ CS.RUN
CS.RUN.LOOP jsr CS.RUN.GETLINE
bcs .9
.1 inc LineNum
bne .11
inc LineNum+1
.11 lda LineCount
bne .2
lda bPage
beq .2
lda #C.FF
>SYSCALL PutChar
.2 jsr CS.RUN.PRINT
inc LineCount
lda LineCount
cmp #PG.SIZE
bne CS.RUN.LOOP
stz LineCount
jsr CS.RUN.PAUSE
bcc CS.RUN.LOOP
.9 cmp #MLI.E.EOF
bne .99
lda #0 Exit with no Error
.99 sec
rts
*--------------------------------------
@ -174,23 +197,30 @@ CS.RUN.PAUSE ldy #S.PS.hStdErr
cmp #'Q'
beq .9
cmp #'q'
beq .9
.3 cmp #C.SPACE
bne .4
jmp CS.RUN.ERASE
.4 cmp #C.CR
bne .10
jsr CS.RUN.ERASE
.40 jsr CS.RUN.GETLINE
bcc .5
cmp #MLI.E.EOF
beq .90
rts
.5 inc LineNum
bne .6
inc LineNum+1
.6 jsr CS.RUN.PRINT
@ -225,6 +255,7 @@ CS.RUN.GETLINE >PUSHWI 256
>PUSHW ZPBufPtr
lda hFile
bne .1
ldy #S.PS.hStdIn
lda (pPS),y
@ -239,6 +270,7 @@ CS.RUN.PRINT lda bLineNum
>PUSHBI 2
>SYSCALL PrintF
bcs .9
.1 lda bEscCodes
bmi .2

View File

@ -276,7 +276,7 @@ CS.RUN.FILE jsr CS.RUN.BuildFilePath
>PUSHW ZPFullPath
>LDA.G hArcFile
tay
lda OF.Table.hPath-1,y
lda Nod.Table.hName-2,y
>SYSCALL GetMemPtr
>SYSCALL StrCmp
bcc .8

View File

@ -6,7 +6,7 @@ CMD.. lda (ZPArgVBufPtr)
beq CMD...9
>LDYA ZPArgVBufPtr
jsr IO.Load
>SYSCALL LoadTxtFile
bcs CMD.SHIFTA.RTS
>LDYA ZPArgVBufPtr

View File

@ -4,18 +4,10 @@ NEW
*--------------------------------------
IO.Reset jsr IO.Reset.In
jsr IO.Reset.Out
jsr IO.Reset.Err
IO.Reset.9 rts
*--------------------------------------
IO.Load >PUSHYA
>PUSHBI O.RDONLY
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
>SYSCALL LoadTxtFile
rts
jmp IO.Reset.Err
*--------------------------------------
IO.Pipe.In jsr IO.Pipe.OpenR Open last created PIPE
bcs IO.Set.RTS
bcs .9
pha
@ -27,7 +19,8 @@ IO.Pipe.In jsr IO.Pipe.OpenR Open last created PIPE
ldy #S.PS.hStdIn
sta (pPS),y
rts
.9 rts
*--------------------------------------
IO.Set.In pha
jsr IO.Reset.In
@ -37,7 +30,8 @@ IO.Set.In pha
pla
ldy #S.PS.hStdIn
sta (pPS),y
IO.Set.RTS rts
rts
*--------------------------------------
IO.Pop.In clc
.HS B0 BCS
@ -55,16 +49,24 @@ IO.Reset.In sec
>STZ.G IO.hIn
.8 clc
IO.Reset.In.RTS rts
rts
*--------------------------------------
IO.Pipe.Out >PUSHEA.G IO.FIFO
IO.Pipe.Out ldy #IO.DEVFIFO+4
ldx #4
.1 lda DEV,x
sta (pData),y
dey
dex
bpl .1
>PUSHEA.G IO.DEVFIFO+5 leave room for /dev/
>PUSHWZ mode
>SYSCALL MKFIFO
bcs IO.Reset.In.RTS Create a new PIPE
bcs .9
jsr IO.Pipe.OpenW Open for OUTPUT
bcs IO.Reset.In.RTS
jsr IO.Pipe.OpenW Open for OUTPUT
bcs .9
pha
ldy #S.PS.hStdOut
@ -74,7 +76,7 @@ IO.Pipe.Out >PUSHEA.G IO.FIFO
ldy #S.PS.hStdOut
sta (pPS),y
rts
.9 rts
*--------------------------------------
IO.Set.Out pha
jsr IO.Reset.Out
@ -135,7 +137,8 @@ IO.Pipe.OpenR ldx #O.RDONLY+O.TEXT
.HS 2C BIT ABS
IO.Pipe.OpenW ldx #O.WRONLY+O.TEXT
>LEA.G IO.FIFO
>LEA.G IO.DEVFIFO
*--------------------------------------
IO.FOpenYAX >PUSHYA
txa

View File

@ -220,7 +220,7 @@ CS.RUN jsr CL.Init
jmp CS.RUN.CMDLINE
.1 jsr GetArgV Load SH batch file
jsr IO.Load
>SYSCALL LoadTxtFile
bcs .9
phx X = loaded file hMem
@ -243,7 +243,7 @@ CS.RUN jsr CL.Init
bcs .9
>LDYA L.HOME.PROFILE
jsr IO.Load
>SYSCALL LoadTxtFile
bcs CS.RUN.LOOP No profile...
>LDYA L.HOME.PROFILE
@ -573,6 +573,8 @@ EscChars .AS 'DBAC'
EscChars.Cnt .EQ *-EscChars
EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS
*--------------------------------------
DEV .AS "/dev/"
*--------------------------------------
CD.. .AZ ".."
*--------------------------------------
IN .AZ "IN"
@ -716,7 +718,7 @@ IO.hErr .BS 1
*M32.BUF .BS 12 -1234567890\0
TimeBuf .EQ *
M32.BUF .EQ *
IO.FIFO .BS 12 /DEV/FIFOxx\0
IO.DEVFIFO .BS 12 /dev/fifoXX\0
*--------------------------------------
DS.END .ED
*--------------------------------------

View File

@ -74,7 +74,7 @@ CS.RUN lda #DEFAULT.TIMEOUT
>LDYA ZPPtr1
>STYA ArgPtr
lda #3
sta TimeOut
sta Timeout
bra .1
.2 ldy #2
@ -100,7 +100,7 @@ CS.RUN lda #DEFAULT.TIMEOUT
>SYSCALL ArgV
bcs .9
>SYSCALL atol
>SYSCALL AToL
bcs .9
>PULLL Timeout

View File

@ -7,7 +7,6 @@ NEW
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/kernel.i
.INB inc/mli.i
.INB inc/mli.e.i
*--------------------------------------

View File

@ -8,7 +8,6 @@ NEW
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/mli.e.i
.INB inc/kernel.i
*--------------------------------------
.DUMMY
.OR ZPBIN

View File

@ -117,7 +117,7 @@ CS.RUN inc ArgIndex
ldy #S.PS.hStdIn
lda (pPS),y
tax
lda OF.Table.hFD-1,x
lda Nod.Table.hFD-2,x
>SYSCALL GetMemPtr
>STYA ZPPtr1
lda (ZPPtr1)

View File

@ -83,7 +83,6 @@ CS.RUN >LDYA L.MSG0
ldx SessionID
lda S.Table.hFile-1,x
tax
jsr CS.RUN.GetDevName
>PUSHYA 2 bytes DEV
@ -106,12 +105,10 @@ CS.RUN >LDYA L.MSG0
.9 rts
*--------------------------------------
CS.RUN.GetDevName
lda OF.Table.hPath-1,x
bne .1
lda OF.Table.hFD-1,x
tax
lsr
bcc .1
lda Dev.Table-1,x
clc
@ -123,7 +120,9 @@ CS.RUN.GetDevName
* clc
rts
.1 >SYSCALL GetMemPtr
.1 lda Nod.Table.hFD-2,x
>SYSCALL GetMemPtr
rts
*--------------------------------------
CS.EVENT sec

View File

@ -45,8 +45,7 @@ RESCALE 4 * CONSTANT S_ESCAPE
: DOESCAPE
ZR_SQ ZI_SQ 2DUP +
ESCAPES? IF
2DROP
TRUE
DROP DROP 1
ELSE
- CREAL @ + \ leave result on stack
ZREAL @ ZIMAG @ RESCALE */ 2 *

View File

@ -9,13 +9,14 @@ K.MEM.nALIGNm1 .EQ $F0
*K.MEM.ALIGN .EQ 64
*K.MEM.nALIGNm1 .EQ $C0
*--------------------------------------
K.DEV.MAX .EQ 28
K.FLT.MAX .EQ 4
K.DEV.MAX .EQ 32
K.NOD.MAX .EQ 32
K.OF.MAX .EQ 32
K.USR.MAX .EQ 16
K.PS.MAX .EQ 32
K.USR.MAX .EQ 16
K.FLT.MAX .EQ 4
K.EVT.MAX .EQ 4
K.TTY.MAX .EQ 8
K.IRQDEV.MAX .EQ 4
@ -225,15 +226,15 @@ SYS.FEOF .EQ $3E
SYS.Remove .EQ $40
SYS.Rename .EQ $42
* STDIO2
* .EQ $44
* .EQ $46
SYS.PrintF .EQ $48
SYS.FPrintF .EQ $4A
SYS.SPrintF .EQ $4C
SYS.ScanF .EQ $4E
SYS.PrintF .EQ $44
SYS.FPrintF .EQ $46
SYS.SPrintF .EQ $48
SYS.ScanF .EQ $4A
SYS.FScanF .EQ $4C
SYS.SScanF .EQ $4E
SYS.FScanF .EQ $50
SYS.SScanF .EQ $52
* .EQ $50
* .EQ $52
* .EQ $54
* .EQ $56

View File

@ -4,8 +4,9 @@ NEW
IO.D2.SeekTimeR .EQ 140 LIBBLKDEV Recalibration
IO.D2.SeekTimeF .EQ 65 LIBBLKDEV Track Formatter
IO.D2.SeekTimeB .EQ 65 LIBBLKDEV Boot Block
IO.D2.SeekTimeP .EQ 65 ProDOS.FX initial
IO.D2.SeekTimeI .EQ 20 ProDOS.FX increment -> until > 128
IO.D2.SeekTime0 .EQ 65 ProDOS.FX initial0
IO.D2.SeekTimeP .EQ 30 ProDOS.FX initial
IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
*--------------------------------------
IO.D2.Ph0Off .EQ $C080
IO.D2.Ph0On .EQ $C081

View File

@ -3,26 +3,23 @@ NEW
*--------------------------------------
Mem.Table .EQ $0800
*--------------------------------------
Dev.Table .EQ $1300 K.Dev.MAX*2
Dev.Table .EQ $1300 K.DEV.MAX*2
*--------------------------------------
Flt.Table.hPath .EQ $1338 K.FLT.MAX
Flt.Table.hLib .EQ $133C K.FLT.MAX
Nod.Table.hName .EQ $1340 K.NOD.MAX*2
Nod.Table.hFD .EQ $1341
*--------------------------------------
Nod.Table.hPath .EQ $1340 K.NOD.MAX
Nod.Table.hFD .EQ $1360 K.NOD.MAX
PS.Table.PID .EQ $1380 K.PS.MAX
PS.Table.hPS .EQ $13A0 K.PS.MAX
PS.Table.Hits .EQ $13C0 K.PS.MAX
PS.Table.Stats .EQ $13E0 K.PS.MAX
*--------------------------------------
OF.Table.hPath .EQ $1380 K.OF.MAX
OF.Table.hFD .EQ $13A0 K.OF.MAX
S.Table.hSID .EQ $1400 K.USR.MAX
S.Table.hFile .EQ $1410 K.USR.MAX
*--------------------------------------
PS.Table.PID .EQ $13C0 K.PS.MAX
PS.Table.hPS .EQ $13E0 K.PS.MAX
PS.Table.Hits .EQ $1400 K.PS.MAX
PS.Table.Stats .EQ $1420 K.PS.MAX
Flt.Table.hPath .EQ $1420 K.FLT.MAX
Flt.Table.hLib .EQ $1424 K.FLT.MAX
*--------------------------------------
S.Table.hSID .EQ $1440 K.USR.MAX
S.Table.hFile .EQ $1450 K.USR.MAX
*--------------------------------------
A2osX.EndTables .EQ $1460
A2osX.EndTables .EQ $1428
*--------------------------------------
MAN
SAVE inc/kernel.i

View File

@ -1,14 +1,14 @@
NEW
AUTO 3,1
.LIST OFF
--------------------------------------
*--------------------------------------
LIBCRYPT.MD5 .EQ 4
LIBCRYPT.MD5Init .EQ 6
LIBCRYPT.MD5Update .EQ 8
LIBCRYPT.MD5Finalize .EQ 10
--------------------------------------
S.MD5 STRUCT
--------------------------------------
*--------------------------------------
* S.MD5 STRUCT
*--------------------------------------
S.MD5.ABCD0 .EQ 0
S.MD5.A0 .EQ 0
S.MD5.B0 .EQ 4
@ -19,6 +19,6 @@ S.MD5.EXTRABIT .EQ 24
S.MD5.FINALIZED .EQ 25
S.MD5 .EQ 26
--------------------------------------
*--------------------------------------
MAN
SAVE inc/libcrypt.i

View File

@ -355,11 +355,7 @@ BB.Seek lda BB.HdrTrk get track we're on
.4 tay
lda IO.D2.Ph0On,x
nop
nop
lda IO.D2.Ph0On,y
nop
nop
lda #IO.D2.SeekTimeB
jsr BB.Wait
@ -376,21 +372,12 @@ BB.Seek lda BB.HdrTrk get track we're on
bra BB.Read
*--------------------------------------
BB.PhasesOff bit IO.D2.Ph0Off,x
nop
nop
ldx IO.D2.Ph0Off,y
nop
nop
rts
*--------------------------------------
BB.Wait phx (3)
.1 ldx BB.Slotn0 (3)
bit IO.D2.RData,x (4)
ldx #18 (2)
.1 ldx #19 (2)
.2 dex (2)
bne .2 (3)

View File

@ -121,24 +121,18 @@ D2MoveHead.SEI ldx Slotn0
and #6
ora Slotn0
bcc .4
* bcc .4
* move out : invert 2 phases
phx
tax
pla
* phx
* tax
* pla
.4 tay
lda IO.D2.Ph0On,x
phx
ldx Slotn0
bit IO.D2.RData,x
lda IO.D2.Ph0On,y
bit IO.D2.RData,x
plx
lda #IO.D2.SeekTimeF
jsr D2.Wait100usecA
@ -147,14 +141,8 @@ D2MoveHead.SEI ldx Slotn0
.7 jsr D2.Wait25600usec
.8 pha
bit IO.D2.Ph0Off,x
ldx Slotn0
bit IO.D2.RData,x
lda IO.D2.Ph0Off,y
bit IO.D2.RData,x
pla
.8 bit IO.D2.Ph0Off,x
ldx IO.D2.Ph0Off,y
rts
*--------------------------------------
D2.Wait25600usec
@ -162,10 +150,7 @@ D2.Wait25600usec
D2.Wait100usecA phx
.1 ldx Slotn0 (3)
bit IO.D2.RData,x (4)
ldx #18 (2)
.1 ldx #19 (2)
.2 dex (2)
bne .2 (3)

View File

@ -2,13 +2,13 @@ NEW
AUTO 3,1
*--------------------------------------
FON.Init >LDYA L.SYSX7
jsr FON.Load
>SYSCALL2 LoadStkObj
bcs .9
stx hSYSFON
>LDYA L.SYSX7B
jsr FON.Load
>SYSCALL2 LoadStkObj
bcs .9
stx hSYSFONB
@ -26,13 +26,6 @@ FON.Init >LDYA L.SYSX7
.9 rts
*--------------------------------------
FON.Load >PUSHYA
>PUSHBI O.RDONLY
>PUSHBI $CC Type
>PUSHWZ Aux type
>SYSCALL2 LoadStkObj
rts
*--------------------------------------
FON.GetTextSize >STYA CB.CACHE+S.CB.TxtPtr
stx CB.CACHE+S.CB.hFont

View File

@ -47,15 +47,15 @@ prostart lda unitnum
jsr setvid
jsr setkbd
jsr home
lda #32
ldx #39
.1 sta $400,x
dex
bpl .1
ldx #LDR.MSG.PRODOS
jsr LDR.PrintX
@ -76,7 +76,7 @@ prostart lda unitnum
bmi LDR.UNSUPP.HW
stz auxsp
sta SETALTZP
stz auxsp
@ -94,7 +94,7 @@ prostart lda unitnum
LDR.CheckROM ldx #LDR.MSG.IIE
lda #MACHID.T.IIe+MACHID.M.128+MACHID.COL80
ldy version check hardware id
cpy #$06 apple //e?
beq .1 if yes
@ -107,29 +107,29 @@ LDR.CheckROM ldx #LDR.MSG.IIE
.1 ldy zidbyte //c ?
bne .2
ldy kbd //c, check for keypress
cpy #$9B escape? (to disable accelerator)
bne .11
sta KBDSTROBE clear keyboard
.11 lda #MACHID.T.IIc+MACHID.M.128+MACHID.COL80
ldx #LDR.MSG.IIC
bra m128k
.2 cpy #$EA
beq LDR.UNSUPP.HW //e UNenh....
cpy #$E0
beq .3
ldx #LDR.MSG.UNKNOWN
bra m128k not a //e Enh....
.3 sec
jsr idroutine //gs ????
bcs m128k no.....
inc LDR.cortland
ldx #LDR.MSG.IIGS
lda #MACHID.T.IIe+MACHID.M.128+MACHID.COL80+MACHID.CLK
@ -149,12 +149,12 @@ m128k sta idapple Save MACHID in temp location
jsr LDR.ScrInit80
ldx #$F
.2 lda LDR.3F0,x
sta $3F0,x
dex
bpl .2
lda #$01 patch for the gs rom
trb statereg to force off intcxrom
@ -162,7 +162,7 @@ m128k sta idapple Save MACHID in temp location
ldy #ILDR.START
lda /ILDR.START
jsr X.Unpak.XatYA
ldx #PAKME.GP-PAKME.Table
ldy #MLI
lda /MLI
@ -176,19 +176,19 @@ m128k sta idapple Save MACHID in temp location
jsr X.Unpak.XatYA
ldx #0
.1 stz FCBs,x
stz VCBs,x
inx
bne .1
ldx #PAKME.XDOS-PAKME.Table
ldy #$DE00
lda /$DE00
jsr X.Unpak.XatYA
ldx #XDOS.DATA.LEN
.3 stz XDOS.DATA-1,x
dex
bne .3
@ -211,7 +211,7 @@ LDR.IRQ lda RROMWRAMBNK2
sta CLRALTZP
stx irqv+1 save irq vector in main lc
sty irqv
lda #calldisp
sta jspare+1 P8 system death vector
lda /calldisp
@ -232,7 +232,7 @@ LDR.IIGS sta cortflag
sta cortdisp
lda /calldisp
sta cortdisp+1
* lda RROMWRAMBNK2
* stz vmode force setvid to reset cursor
@ -284,7 +284,7 @@ LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals
.DA #MLIONLINE
.DA LDR.MLIOL.P
bcs .9
lda pbuf+1 get volume name length.
and #$0F strip devnum
beq .9
@ -293,7 +293,7 @@ LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals
sta pbuf save prefix length.
lda #'/' place leading '/' in prefix buffer
sta pbuf+1
jsr MLI
.DA #MLISETPREFIX
.DA LDR.MLISETP.P
@ -304,7 +304,7 @@ LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals
lda /dbuf
ldy #$02 read directory into buffer
ldx #0
.1 sta dst+1
sta LDR.MLIRB.P+3 Data buf HI
sty LDR.MLIRB.P+4 Blk Num LO
@ -329,7 +329,7 @@ LDR.ReadRoot lda LDR.MLIOL.P+1 place boot devnum in globals
cmp /dbuf+$800 until it points past end of buffer.
bcc .1 if ok, read next block.
.FIN
.8 jmp $800 jmp to "load interpreter" code
.9 ldx #LDR.MSG.ROOTERR
@ -414,14 +414,14 @@ LDR.ClkDevScan php
.8 plp
ldx #7
.9 lda DS1216E.DATA1,x
cmp DS1216E.DATA2,x
bne .90
dex
bpl .9
bra LDR.ClkDevTCLK
.90 lda #'N'
@ -430,28 +430,51 @@ LDR.ClkDevScan php
bra LDR.SetupCLK
*--------------------------------------
LDR.ClkDevTCLK lda CLRC8ROM switch out $C8 ROMs
stz idxl
lda #$C1
sta idxl+1
.1 ldy #6
.2 lda (idxl),y compare id bytes
cmp dskid,y
bne .3
dey
dey
bpl .2
bpl .2
lda idxl+1
and #$f
tax
sta CLRPAGE2
stz $478,x
stz $7f8,x
sta SETPAGE2
stz $478,x
stz $7f8,x
lda idxl+1
asl
asl
asl
asl
tax
stz $c080,x
lda $c088,x
lda $c080,x
lda #'T'
ldx PAKME.TCLK
ldy PAKME.TCLK+1
jsr LDR.SetupCLK
lda idxl+1
sta TCLK.Cx1+2
sta TCLK.Cx2+2
sta TCLK.Cx2+2
rts
.3 inc idxl+1
@ -462,15 +485,15 @@ LDR.ClkDevTCLK lda CLRC8ROM switch out $C8 ROMs
*--------------------------------------
LDR.SetupCLK stx ZPInBufPtr
sty ZPInBufPtr+1
sta LDR.MSG.CLK
bit RROMBNK2
ldx #LDR.MSG.CLK
jsr LDR.PrintX
jsr lc1in
lda #$D742
sta ZPOutBufPtr
lda /$D742
@ -514,12 +537,12 @@ LDR.SetupRAM lda DEVCNT
ldx DEVCNT
lda #$BF unit num of /RAM
sta DEVLST,x
ldx #LDR.MSG.RAM
jmp LDR.PrintX
*--------------------------------------
* find all disk devices in system slots and set up address
* and device table in prodos global page.
* and device table in prodos global page.
*--------------------------------------
LDR.BlkDevScan stz idxl
lda #$C7 search slots from high to low
@ -527,10 +550,10 @@ LDR.BlkDevScan stz idxl
lda #7
sta LDR.SlotIdx
.1 ldx LDR.SlotIdx
stz LDR.SlotDevType-1,x
jsr LDR.CheckDiskID
bcs .8 if no ProDOS device in this slot.
@ -562,7 +585,7 @@ LDR.BlkDevScan stz idxl
and #$03 verify it provides read and status calls.
cmp #$03
bne .7 assume it's an off-brand disk
lda (idxl),y get back ID byte
lsr
lsr
@ -575,7 +598,7 @@ LDR.BlkDevScan stz idxl
ldx LDR.SlotIdx
sta LDR.SlotDevCnt-1,x
tax
iny $CnFF
lda (idxl),y
sta LDR.driveradr
@ -588,7 +611,7 @@ LDR.BlkDevScan stz idxl
.7 ldx LDR.SlotIdx
lda sltbit-1,x
tsb rommap mark bit to flag rom present
.8 dec idxl+1 next lower slot.
dec LDR.SlotIdx have all slots been checked ?
bne .1
@ -597,7 +620,7 @@ LDR.AddExtraDevs
* stz idxl
lda #$C7
sta idxl+1
lda #7
sta LDR.SlotIdx
@ -622,7 +645,7 @@ LDR.AddSPDevs jsr LDR.SetDevID setup the devid byte from attributes
iny #$ff
lda (idxl),y
sta LDR.driveradr
sta .1+1 modify operand
clc
@ -650,8 +673,8 @@ LDR.AddSPDevs jsr LDR.SetDevID setup the devid byte from attributes
stz bloknml+1
.1 jsr $0000 SELF MODIFIED
ldy #$FB
ldy #$FB
lda (idxl),y check device id
and #$02 SCSI ?
beq .2 no, no need to init Cocoon
@ -660,14 +683,14 @@ LDR.AddSPDevs jsr LDR.SetDevID setup the devid byte from attributes
.2 lda #0 set unit# = 0
jsr LDR.SPStatusCall
lda LDR.SPStatusBuf Device count
beq LDR.AddExtraDevs.RTS no devices, so done.
* sta LDR.DevCnt
ldx LDR.SlotIdx
inc LDR.SlotDevType-1,x set as smartport
*.3 inc LDR.SPStatus.U
* jsr LDR.SPStatusCall.U call to get the device status
@ -675,13 +698,13 @@ LDR.AddSPDevs jsr LDR.SetDevID setup the devid byte from attributes
* lda LDR.SPStatusBuf
* bpl .7 not a block device
* ldx LDR.SlotIdx
* inc LDR.SlotDevCnt-1,x
*.7 dec LDR.DevCnt
* bne .3
* ldx LDR.SlotIdx
* lda LDR.SlotDevCnt-1,x
* beq LDR.AddBlkDevs.RTS
@ -700,7 +723,7 @@ LDR.AddBlkDevs php how many drives (carry).
asl in high nibble.
ora devid combine with attributes.
ldx DEVCNT
ldx DEVCNT
inx put device # into device list.
sta DEVLST,x
asl now form drive 2 device number, if any.
@ -725,7 +748,7 @@ LDR.AddBlkDevs php how many drives (carry).
sta DEVPTRS+17,y
.3
LDR.AddBlkDevs.RTS
LDR.AddBlkDevs.RTS
rts
*--------------------------------------
LDR.AddExtraSPDevs
@ -741,7 +764,7 @@ LDR.AddExtraSPDevs
lda #0
jsr LDR.SPStatusCall do a status call on smartport itself
lda LDR.SPStatusBuf # of devices on smartport
cmp #$03
@ -753,7 +776,7 @@ LDR.AddExtraSPDevs
lda #3
sta LDR.SPStatus.U
.1 jsr LDR.SPStatusCall.U do status call
lda LDR.SPStatusBuf is this a block device?
@ -761,12 +784,12 @@ LDR.AddExtraSPDevs
jsr LDR.MountSPDevs
bcs .8
.2 inc LDR.SPStatus.U
dec LDR.DevCnt
bne .1
.8 rts
*--------------------------------------
LDR.MountSPDevs ldx #LDR.DEVPTRS.CNT-1
@ -779,19 +802,19 @@ LDR.MountSPDevs ldx #LDR.DEVPTRS.CNT-1
lda DEVPTRS+1,y
cmp /nodevice
beq .3
.2 dex
bpl .1
sec
rts
.3 jsr lc1in write enable LC ram bank 1.
tya divide index by 2
lsr
tax
lda LDR.SPStatus.U
sta XDOS.SPUnit-1,x store the smartport unit #
@ -823,7 +846,7 @@ LDR.MountSPDevs ldx #LDR.DEVPTRS.CNT-1
*--------------------------------------
LDR.SPStatusCall
sta LDR.SPStatus.U device = 2 for SCSI
LDR.SPStatusCall.U
LDR.SPStatusCall.U
LDR.SPVect jsr $0000 self modifying
.HS 00
.DA LDR.SPStatus.P
@ -871,17 +894,17 @@ LDR.ScrInit80 sta CLRC3ROM
lda #LOGO.PAKED
sta ZPInBufPtr
lda /LOGO.PAKED
sta ZPInBufPtr+1
sta ZPInBufPtr+1
stz ZPOutBufPtr
lda #$A0
lda #$A0
sta ZPOutBufPtr+1
jsr X.Unpak
sta CLRHIRES
sta SETMIXED
bit RDIOUDIS
sta SETIOUDIS
sta SETDHIRES
@ -895,13 +918,13 @@ LDR.ScrInit80 sta CLRC3ROM
sta ZPPtr1+1
lda #0
.1 pha
jsr GBSCALC
ldy #0
.2 lda (ZPPtr1),y
pha
@ -939,7 +962,7 @@ LDR.ScrInit80 sta CLRC3ROM
.4 lda (ZPPtr1),y
pha
and #$f
tax
lda PALETTE.AUX,x
asl
@ -968,20 +991,20 @@ LDR.ScrInit80 sta CLRC3ROM
iny
cpy #40
bne .4
lda ZPPtr1
clc
adc #40
sta ZPPtr1
bcc .7
inc ZPPtr1+1
.7 pla
inc
cmp #20
bne .1
bne .1
.FIN
jsr CLREOL
jsr setnorm
@ -1000,10 +1023,10 @@ LDR.PrintX bit RROMBNK2
inx
pla
bpl .1
lda #$A0
jsr COUT
pla
sta INVFLG
rts
@ -1102,7 +1125,7 @@ LDR.MLIOL.P .DA #2
LDR.MLISETP.P .DA #1
.DA pbuf
.DO READCAT=1
LDR.MLIRB.P .DA #3
.DA #0 unit number

View File

@ -549,17 +549,20 @@ XRW.Write.RTS rts (6)
* for motor on timing.
*--------------------------------------
XRW.WaitSeekTime
lda XRW.SeekTime
* lda XRW.SeekCnt
* bne .1
* inc XRW.SeekCnt
lda #IO.D2.SeekTime0
* bra XRW.Wait100usecA
*.1 lda XRW.SeekTime
.HS 2C BIT ABS
XRW.Wait25600usec
lda #0
XRW.Wait100usecA
phx
.1 ldx A2L (3)
bit IO.D2.RData,x (4)
ldx #16 (2)
.1 ldx #17 (2)
.2 dex (2)
bne .2 (3)
@ -573,7 +576,7 @@ XRW.Wait100usecA
bne .1 (3)
plx
rts (6)
rts
*--------------------------------------
* read subroutine (16-sector format)
*
@ -730,7 +733,6 @@ XRW.Read.RTS rts
* A = target track
*--------------------------------------
XRW.Seek ldx XRW.UnitIndex
pha save target track
jsr XRW.Trk2Qtrk
@ -744,6 +746,8 @@ XRW.Seek ldx XRW.UnitIndex
pla
sta XRW.D2Trk-1,x will be current track at the end
stz XRW.SeekCnt
ldx A2L
ldy A2L
@ -790,24 +794,18 @@ XRW.Seek ldx XRW.UnitIndex
and #6
ora A2L
bcc .4
* bcc .4
* move out : invert 2 phases
phx
tax
pla
* phx
* tax
* pla
.4 tay
lda IO.D2.Ph0On,x
phx
ldx A2L
bit IO.D2.RData,x
lda IO.D2.Ph0On,y
bit IO.D2.RData,x
plx
jsr XRW.WaitSeekTime
@ -815,14 +813,8 @@ XRW.Seek ldx XRW.UnitIndex
.7 jsr XRW.Wait25600usec
.8 pha
bit IO.D2.Ph0Off,x
ldx A2L
bit IO.D2.RData,x
lda IO.D2.Ph0Off,y
bit IO.D2.RData,x
pla
.8 bit IO.D2.Ph0Off,x
ldx IO.D2.Ph0Off,y
rts
*--------------------------------------
XRW.Reset ldx A2L
@ -1024,7 +1016,9 @@ XRW.CurrentQTrack .HS 00
* .HS FF
XRW.TargetQTrack .HS 00
.HS B0B4B8BCC0C4C8
.HS FFFF
* .HS FFFF
.HS FF
XRW.SeekCnt .HS 00
.HS CCD0D4D8DCE0
XRW.bWrite .HS 00
.HS E4E8ECF0F4F8FC

View File

@ -4,7 +4,7 @@ NEW
.OP 65C02
.OR $2000
.TF sbin/initd
*---------------------------------------
*--------------------------------------
INITDDBG .EQ 0
*--------------------------------------
.INB inc/macros.i
@ -62,10 +62,13 @@ CS.RUN ldy #S.PS.PID
cmp #1
bne .9
* bra .55
ldy #S.PS.hStdIn
lda (pPS),y
>SYSCALL FEOF
bcs .99
tay
bne .1
@ -75,6 +78,7 @@ CS.RUN ldy #S.PS.PID
cmp #18 CTRL-R for Root mode
bne .1
*.55
>LDYA L.MSG.CTRLR
>SYSCALL PutS

View File

@ -158,6 +158,7 @@ BIN.Load.1 >PUSHWI K.Buf256
>LDYA K.S.STAT+S.STAT.P.AUXTYPE
>STYA BIN.R.CS.Start
>PUSHYA Push AUXTYPE
jsr K.LoadFile
bcs .9 Error Loading file
@ -425,6 +426,6 @@ 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.1.B.B.3
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.BIN
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.bin
LOAD usr/src/sys/kernel.s
ASM

View File

@ -12,7 +12,7 @@ CORE.Run ldx #1
jsr K.GetMemPtr
>STYA pPs
lda (pPS) get S.PS.F
lda (pPS) get S.PS.F
* bit #S.PS.F.HOLD Waiting for Another Task to Terminate?
* beq .2
@ -53,7 +53,7 @@ CORE.Run ldx #1
bra .7
.5 cmp #S.PS.S.QUIT
bne .7
bne .7
>PUSHBI 2
ldy #S.PS.PID
@ -62,7 +62,7 @@ CORE.Run ldx #1
bne .6
jmp CORE.Quit
.6 >SYSCALL2 Kill
bra .8
@ -100,7 +100,7 @@ CORE.Events jsr CORE.GetEvents
sta pEvent
lda CORE.EvtCount
bne .1
*--------------------------------------
*--------------------------------------
.4 bit OPENAPPLE
bpl .8
@ -121,7 +121,7 @@ CORE.Events jsr CORE.GetEvents
cmp A2osX.ASCREEN Same as active screen...nothing to do
beq .8
>PUSHA
>PUSHBI IOCTL.CONTROL request
>PUSHWZ Param
@ -136,7 +136,7 @@ CORE.Quit php
lda IRQ.INTNUM
sta K.MLI.PARAMS+1
>MLICALL MLIDEALLOCIRQ
ldx #5
@ -144,7 +144,7 @@ CORE.Quit php
.1 stz K.MLI.PARAMS+1,x
dex
bpl .1
lda #4
ldx #MLIQUIT
jmp GP.MLICall
@ -160,7 +160,7 @@ CORE.UpdateParentPS
bcs .8 parent is dead.....skipping...
>STYA ZPPtr1
lda (ZPPtr1) Parent PS is HOLD?
lda (ZPPtr1) Parent PS is HOLD?
bit #S.PS.F.HOLD
beq .8 no...
@ -183,7 +183,7 @@ CORE.UpdateParentPS
*--------------------------------------
* CORE.GetEvents :
* IN :
* OUT :
* OUT :
* CS = no event, A = ERROR
* CC * event in YA
* (pEvent)
@ -202,7 +202,7 @@ CORE.GetEvents lda #Evt.Table
.1 lda VBL get VLINE status
tax
eor CORE.VBLState
eor CORE.VBLState
bpl .8 no change,no tick
txa
@ -230,7 +230,7 @@ CORE.GetEvents lda #Evt.Table
.3 dec CORE.Tick10t
bne .6
.4 inc DevMgr.Timer
inc A2osX.TIMER16
bne .5
@ -264,14 +264,14 @@ CORE.GetEvents lda #Evt.Table
rts
*--------------------------------------
* CORE.Dispatch
* IN:
* IN:
* OUT:
* CS: Not Dispatched
* CC: Event Cleared
* CC: Event Cleared
*--------------------------------------
CORE.Dispatch ldx #1 skip PS0
bra .80
.1 stx CORE.PSIndex
lda PS.Table.hPS,x
@ -279,7 +279,7 @@ CORE.Dispatch ldx #1 skip PS0
jsr K.GetMemPtr
>STYA pPS
lda (pPS)
bit #S.PS.F.EVENT Accept Events ?
beq .5
@ -321,12 +321,12 @@ CORE.Dispatch ldx #1 skip PS0
lda #S.PS.S.RUN
sta (pPS),y
jsr CORE.PSLeave
.5 ldx CORE.PSIndex
inx
.80 cpx CORE.PSCount
bne .1
* sec
rts
@ -368,7 +368,7 @@ CORE.GetPS.RTS rts
CORE.DestroyEvent
lda (pEvent)
beq .9
bit #S.EVT.F.hMEM1
beq .1
pha
@ -394,12 +394,12 @@ CORE.PSSelect ldy #S.PS.ZP.CODE+PSCTX.SIZE-1
dey
dex
bpl .1
rts
*--------------------------------------
CORE.PSLeave ldx #PSCTX.SIZE-1
ldy #S.PS.ZP.CODE+PSCTX.SIZE-1
.1 lda pCode,x
sta (pPS),y
dey
@ -429,7 +429,7 @@ CORE.PSResume sei
eor #S.PS.F.SLEEP unmark as SLEEP
sta (pPS)
>PULLA Get !BC
>PULLA Get !BC
tax
beq .2
@ -508,9 +508,9 @@ CORE.EvtCount .BS 1
CORE.IRQ.IIGS lda IO.IIGS.INTFLAG
and #$08
beq CORE.IRQ.DEV
stz IO.IIGS.CLRVBLINT
bra CORE.IRQ.Switch
*--------------------------------------
CORE.IRQ.TCLOCK ldy IRQ.n0
@ -552,10 +552,10 @@ CORE.IRQ.Switch inc IRQ.Tick
sta PS.Table.Stats,x
dex
bpl .1
.2 lda IRQ.InKernel
bpl .3
inc PS.Table.Hits
.9 clv
@ -577,7 +577,7 @@ CORE.IRQ.Switch inc IRQ.Tick
.8 clc exit with V flag set
rts
*--------------------------------------
*--------------------------------------
CORE.IRQ.DEV ldx #0
.1 lda IRQ.Vectors+1,x
beq .9
@ -605,18 +605,18 @@ CORE.IRQ.IIGS.Off
CORE.IRQ.TCLOCK.Off
ldx IRQ.n0
stz $c080,x
lda $c088,x
lda $c080,x
ldx IRQ.0n
sta CLRPAGE2
stz $478,x
stz $7f8,x
stz $7f8,x
sta SETPAGE2
stz $478,x
stz $7f8,x
lda $c088,y
lda $c080,y
stz $7f8,x
rts
*--------------------------------------
@ -642,6 +642,6 @@ IRQ.Tick .BS 1
IRQ.Vectors .BS K.IRQDEV.MAX*2
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.CORE
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.core
LOAD usr/src/sys/kernel.s
ASM

View File

@ -15,9 +15,9 @@ pIOBuf .EQ ZPKERNEL+14
*--------------------------------------
ZPMEMMGR .EQ $10
*--------------------------------------
SIGNFLG .EQ $16 COS,SIN,TAN
*SIGNFLG .EQ $16 COS,SIN,TAN
*--------------------------------------
* AuxMove / XFer
* XMov / XFer
*--------------------------------------
A1L .EQ $3C
A2L .EQ $3E
@ -25,7 +25,7 @@ A4L .EQ $42
*XFer.JMP .EQ $3ED
AuxMove .EQ $C311
XMov .EQ $C311
XFer .EQ $C314 CS:M->X, VS:Use Aux ZP
*--------------------------------------
* $42-$47 ProDOS Block Device Drivers Main
@ -113,11 +113,12 @@ PS.NewPSPtr .BS 2
.ED
*--------------------------------------
.DUMMY
.OR ZPTMP+20 7 Bytes
.OR ZPTMP+20 6 Bytes
IO.Open.FLAGS .BS 1
IO.Open.TYPE .BS 1
IO.Open.AUXTYPE .BS 2
IO.hFD .BS 1
IO.hDevNod .BS 1
.ED
*--------------------------------------
A2osX.SaveSM .EQ $100 Aux
@ -240,6 +241,6 @@ S.MD5.FINALIZED .EQ 25
S.MD5 .EQ 26
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.DEF
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.def
LOAD usr/src/sys/kernel.s
ASM

View File

@ -9,44 +9,91 @@ NEW
* X = hDev
*\--------------------------------------
K.GetDevByName >STYA ZPPtr1 requested dev name
ldx #1
.1 jsr SHARED.GetDevFD
bcs K.GetDev.NODEV
.1 lda Dev.Table,x
beq .4
sta pFD+1
pha
tya
* clc
lda Dev.Table-1,x
sta pFD
clc
adc #S.FD.DEV
sta ZPPtr2
tay
pla
adc /S.FD.DEV
sta ZPPtr2+1
ldy #$ff
jsr .8
bcs .3
.2 iny
lda (ZPPtr1),y
cmp (ZPPtr2),y
bne .7
jsr DEV.GetPDrv
ora (ZPPtr2),y Both char are 0 ?
bne .2
beq SHARED.GetDevFD yes, get Ptr
>LDYA pFD X = hDevNod
.7 inx no....loop
* clc
rts
.3 inx no....loop
inx
cpx #K.DEV.MAX*2+1
bne .1
K.GetDev.NODEV lda #MLI.E.NODEV
.4 ldx #2
.5 lda Nod.Table.hFD-2,x
beq .7
lda Nod.Table.hName-2,x
beq .7
jsr K.GetMemPtr
jsr .8
bcs .7
lda Nod.Table.hFD-2,x
jsr K.GetMemPtr Y,A = pPD, X = hDevNod
>STYA pFD for UNISTD.Open
* clc
rts
.7 inx
inx
cpx #K.NOD.MAX*2+2
bne .5
.9 lda #MLI.E.NODEV
sec
rts
*--------------------------------------
.8 >STYA ZPPtr2
ldy #$ff
.80 iny
lda (ZPPtr1),y
cmp (ZPPtr2),y
bne .89
eor #0
bne .80
clc
rts
.89 sec
K.GetDev.9 rts
*/--------------------------------------
* # GetDevStatus
* ## C
* ## C
* `int getdevstatus(short int DevID, S.DIB *dstat);`
* ## ASM
* `>PUSHB DevID`
@ -56,33 +103,23 @@ K.GetDev.9 rts
*\--------------------------------------
K.GetDevStatus >PULLW K.S.IOCTL+S.IOCTL.BUFPTR
>PULLA
tax
jsr SHARED.GetDevFD
jsr DEV.GetPFD
bcs K.GetDev.9
>STYA pFD
lda #S.IOCTL.STATCODE.GETDIB
*--------------------------------------
SHARED.GetDevStatus
DEV.GetDevStatus
sta K.S.IOCTL+S.IOCTL.STATCODE
ldy #S.FD.DEV.DEVID
lda (pFD),y
sta K.S.IOCTL+S.IOCTL.UNITNUM
jsr SHARED.GetPDrv
>LDYAI K.S.IOCTL
ldx #IOCTL.STATUS
*--------------------------------------
SHARED.pDrvJmp jmp (pDrv)
*--------------------------------------
SHARED.GetDevFD lda Dev.Table,x
beq K.GetDev.NODEV
ldy Dev.Table-1,x
clc
rts
DEV.pDrvJmp jmp (pDrv)
*/--------------------------------------
* # MKDev
* Create a hDEV
@ -96,11 +133,21 @@ SHARED.GetDevFD lda Dev.Table,x
* A = hDEV
*\--------------------------------------
K.MKDev >PULLW ZPPtr2 ptr2=name
>PULLW ZPPtr1 ptr1=fd
>PULLW ZPPtr1 ptr1=fd
ldx DevMgr.DevIdx
ldx #1
.10 lda Dev.Table,x
beq .11
inx
inx
cpx #K.DEV.MAX*2+1
beq .9
bne .10
bra .9
.11 stx IO.hDevNod
ldy #$ff
ldx #S.FD.DEV
@ -120,7 +167,7 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
>STYA pFD
>STYA .4+1
ldx DevMgr.DevIdx
ldx IO.hDevNod
sta Dev.Table,x
tya
sta Dev.Table-1,x
@ -144,8 +191,10 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
>LDYAI K.IOBuf
>STYA K.S.IOCTL+S.IOCTL.BUFPTR
lda #S.IOCTL.STATCODE.STATUS
jsr SHARED.GetDevStatus
jsr DEV.GetPDrv
lda #S.IOCTL.STATCODE.STATUS
jsr DEV.GetDevStatus
bcs .99
lda K.IOBuf Get Status byte
@ -172,10 +221,8 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
iny
lda (pDRV),y
sta IRQ.Vectors+1,x
.8 lda DevMgr.DevIdx
inc DevMgr.DevIdx
inc DevMgr.DevIdx
.8 lda IO.hDevNod
* clc
rts
*/--------------------------------------
@ -192,14 +239,10 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
*\--------------------------------------
K.IOCTL ldy #3 hDev
lda (pStack),y
tax
jsr SHARED.GetDevFD
bcs .9
>STYA pFD
jsr SHARED.GetPDrv
jsr DEV.GetPFD
bcs .9
ldy #2 request
lda (pStack),y
tax
@ -207,12 +250,90 @@ K.IOCTL ldy #3 hDev
>PULLYA param
inc pStack
inc pStack
jmp (pDrv)
.9 >RET 4
*--------------------------------------
DEV.GetPFD sta IO.hDevNod
tax
lsr
bcs .1
lda Nod.Table.hFD-2,x empty slot ?
beq DEV.GetPFD.9
sta IO.hFD
jsr K.GetMemPtr
>STYA pFD
* clc
rts
.1 stz IO.hFD
ldy Dev.Table-1,x
lda Dev.Table,x
beq DEV.GetPFD.9
>STYA pFD
DEV.GetPDrv ldy #S.FD.DEV.DRVPTR
lda (pFD),y
sta pDRV
iny
lda (pFD),y
sta pDRV+1
clc
rts
DEV.GetPFD.9 lda #E.INVH
sec
rts
*--------------------------------------
* X = 0 > REG
* X = 1 > DIR
* X = 2 > PIPE
*--------------------------------------
DEV.MkFD stx .8+1
ldy DEV.MkFD.Y,x
lda #0
ldx #S.MEM.F.INIT0+S.MEM.F.FD
jsr MEM.GetMem.YAX
bcs .9
>STYA pFD
stx IO.hFD
.8 ldx #$ff SELF MODIFIED
lda DEV.MkFD.T,x
sta (pFD) X = hFD, A = T
* clc
.9 rts
DEV.MkFD.Y .DA #S.FD.REG,#S.FD.DIR,#S.FD.PIPE
DEV.MkFD.T .DA #S.FD.T.REG,#S.FD.T.DIR,#S.FD.T.PIPE
*--------------------------------------
DEV.Destroy ldx IO.hDevNod
lda Nod.Table.hName-2,x
beq .1
stz Nod.Table.hName-2,x
jsr K.FreeMem
ldx IO.hDevNod
.1 lda Nod.Table.hFD-2,x
stz Nod.Table.hFD-2,x
jmp K.FreeMem
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.DEV
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.dev
LOAD usr/src/sys/kernel.s
ASM

View File

@ -16,36 +16,9 @@ NEW
K.OpenDir jsr PFT.CheckPathYA
bcs .9
ldx #1
jsr IO.MkFD
bcs .9
lda K.Buf256+1 One char ("/") ?
beq .8 No, Go open dir....
jsr FS.Stat
bcs .98 file/dir does not exists....quit
lda K.S.STAT+S.STAT.MODE+1
and #$f0
cmp /S.STAT.MODE.DIR
bne .97
jsr FS.OPEN
bcs .98
.8 jsr STDIO.NewHFile
bcs .98
jmp FS.OPEN.DIR
.9 rts
.97 lda #MLI.E.UNSUPST
.98 pha Save Error Code
lda IO.hFD
jsr K.Close
pla
sec
rts
*/--------------------------------------
* # ReadDir
* ## C
@ -235,15 +208,15 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF
bne .10
ldx #8
ldy #S.FD.DIR.ACL+7
.20 pla
cpy #S.FD.DIR.MODE+1
bne .30
and #$0F
.30 sta (pFD),y
dey
dex
@ -500,7 +473,7 @@ K.ReadDir.AddStatACL
ldy #S.FD.DIR.MODE+1
ldx #1
.2 lda (pFD),y
ora K.S.STAT+S.STAT.MODE,x
sta K.S.STAT+S.STAT.MODE,x
@ -531,6 +504,6 @@ K.ReadDir.AddStat
*K.CloseDir .EQ K.FClose
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.DIRENT
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.dirent
LOAD usr/src/sys/kernel.s
ASM

View File

@ -99,7 +99,7 @@ DRV.BlkDevice.DIB
DRV.BLK txa
lsr
sta DRV.BLK.PARAMS CMD
ldy #S.FD.DEV.DEVID Drive 1, or 2
ldy #S.FD.DEV.DEVID Drive 1, or 2
lda (pFD),y
dec O or 1
lsr in Carry
@ -270,6 +270,6 @@ DRV.NULL.CLOSE clc
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.DRV
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.drv
LOAD usr/src/sys/kernel.s
ASM

View File

@ -75,6 +75,6 @@ K.GetEnv.I ldy #S.PS.hENV FROM STDLIB:EXPAND
jmp K.SYSCALL.JMPX
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.ENV
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.env
LOAD usr/src/sys/kernel.s
ASM

View File

@ -412,6 +412,6 @@ ENVX.NextEnvP4Y tya
.8 rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.ENVX
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.envx
LOAD usr/src/sys/kernel.s
ASM

View File

@ -18,6 +18,6 @@ K.GetErrorMessage
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.ERROR
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.error
LOAD usr/src/sys/kernel.s
ASM

View File

@ -148,6 +148,6 @@ ERRORX.Messages .AT "Bad MLI Call"
.AT "Unknown Error"
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.ERRORX
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.errorx
LOAD usr/src/sys/kernel.s
ASM

View File

@ -1,8 +1,8 @@
NEW
AUTO 3,1
*--------------------------------------
IO.OPEN.REG >MLICALL MLIGETFILEINFO
bcc .10 Already Exists
FS.OPEN.REG >MLICALL MLIGETFILEINFO
bcc .2 Already Exists
bit IO.Open.FLAGS Create if not exists ?
bpl .9 No, return MLI error
@ -18,35 +18,35 @@ IO.OPEN.REG >MLICALL MLIGETFILEINFO
jsr FS.CREATE
bcs .9
.10 ldx #0
jsr IO.MkFD
.2 ldx #0
jsr DEV.MkFD
bcs .9
jsr FS.OPEN
jsr FS.MLIOPEN
bcs .99
lda IO.Open.FLAGS
bit #O.WRONLY
beq .20 Write mode ?
beq .5 Write mode ?
and #O.APPEND Append ?
bne .11 yes, go to end of file
bne .3 yes, go to end of file
stz K.MLI.PARAMS+2
stz K.MLI.PARAMS+3
stz K.MLI.PARAMS+4
>MLICALL MLISETEOF no, reset size to 0
bra .21
bra .4
.11 >MLICALL MLIGETEOF
.3 >MLICALL MLIGETEOF
bcs .99
>MLICALL MLISETMARK
.21 bcs .99
.4 bcs .99
.20 lda IO.Open.FLAGS
.5 lda IO.Open.FLAGS
and #O.TEXT Text Mode ?
beq .8
beq .6
lda #$FF
sta K.MLI.PARAMS+2
@ -54,36 +54,54 @@ IO.OPEN.REG >MLICALL MLIGETFILEINFO
sta K.MLI.PARAMS+3
>MLICALL MLINEWLINE
bcs .99
.8 lda IO.hFD
.9 rts
.6 >LDYAI K.MLI.PATH+1
>STYA ZPPtr1
jsr K.MkNod.I
bcc .8
.99 pha Save Error Code
lda IO.hFD
jsr K.Close
pla
sec
rts
*--------------------------------------
IO.READ.REG ldx #MLIREAD
.HS 2C BIT ABS
*--------------------------------------
IO.WRITE.REG ldx #MLIWRITE
ldy #S.FD.REG.REF
lda (pFD),y
sta K.MLI.PARAMS+1
>PULLW K.MLI.PARAMS+2
>PULLW K.MLI.PARAMS+4
.8
lda #4 Param Count = 4 for MLIREAD & MLIWRITE
jsr GP.MLICall
.9 rts
*--------------------------------------
FS.OPEN.DIR ldx #1
jsr DEV.MkFD
bcs .9
>LDYA K.MLI.PARAMS+6
.9
*IO.WRITE.REG.RTS
lda K.MLI.PATH+2
beq .8 "/"
>MLICALL MLIGETFILEINFO
bcs .9
lda K.MLI.PARAMS+S.FI.T
cmp #S.FI.T.DIR
bne .99
jsr FS.MLIOPEN
bcs .98
.8 >LDYAI K.MLI.PATH+1
>STYA ZPPtr1
jsr K.MkNod.I
bcc .9
.98 pha Save Error Code
lda IO.hFD
jsr K.Close
pla
sec
rts
.99 lda #MLI.E.UNSUPST
sec
.9 rts
*--------------------------------------
FS.CLOSE.REG
FS.CLOSE.DIR ldy #S.FD.REG.REF
@ -100,8 +118,25 @@ FS.CLOSE.DIR ldy #S.FD.REG.REF
jsr K.FreeMem
.2 lda IO.hFD
jmp K.FreeMem
.2 jmp DEV.Destroy
*--------------------------------------
FS.READ.REG ldx #MLIREAD
.HS 2C BIT ABS
*--------------------------------------
FS.WRITE.REG ldx #MLIWRITE
ldy #S.FD.REG.REF
lda (pFD),y
sta K.MLI.PARAMS+1
>PULLW K.MLI.PARAMS+2
>PULLW K.MLI.PARAMS+4
lda #4 Param Count = 4 for MLIREAD & MLIWRITE
jsr GP.MLICall
bcs .9
>LDYA K.MLI.PARAMS+6
.9 rts
*--------------------------------------
FS.EOF.REG >MLICALL MLIGETMARK
bcs .9
@ -130,6 +165,7 @@ FS.EOF.REG >MLICALL MLIGETMARK
*--------------------------------------
FS.CREATE sta K.MLI.PARAMS+7 Storage Type
ldx #3
.1 lda DATELO,x
sta K.MLI.PARAMS+8,x Create Date/Time
dex
@ -140,7 +176,7 @@ FS.CREATE sta K.MLI.PARAMS+7 Storage Type
>MLICALL MLICREATE
rts
*--------------------------------------
FS.OPEN >LDYAI 1024 get a ProDOS IOBUF
FS.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF
ldx #S.MEM.F.ALIGN
jsr MEM.GetMem.YAX
bcs .9
@ -152,6 +188,7 @@ FS.OPEN >LDYAI 1024 get a ProDOS IOBUF
>MLICALL MLIOPEN
bcs .9
lda K.MLI.PARAMS+5 get ref_num
ldy #S.FD.REG.REF
sta (pFD),y
@ -159,72 +196,25 @@ FS.OPEN >LDYAI 1024 get a ProDOS IOBUF
sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based
* clc
.9
FS.OPEN.RTS rts
*--------------------------------------
FS.FSTAT.A >PUSHA
FS.FSTAT >PUSHWI K.S.STAT
ldx #SYS.FStat
jsr PFT.CheckNode2
bcs .9
ldy #2
lda (pStack),y
tax
lda OF.Table.hPath-1,x
jsr K.GetMemPtr
jsr PFT.YAToMLIPATH
jsr FS.Stat.203
bcs .9
lda (pFD) #S.FD.T
bne .9
ldy #S.FD.REG.REF
lda (pFD),y
sta K.MLI.PARAMS+1
>MLICALL MLIGETEOF
ldx #2
.1 lda K.MLI.PARAMS+2,x
sta K.S.STAT+S.STAT.SIZE,x
dex
bpl .1
.9 >RET 3
*--------------------------------------
FS.STAT.YA >PUSHYA
>PUSHWI K.S.STAT
ldx #SYS.Stat
jsr PFT.CheckPath2
bcs .9
jsr FS.Stat.203
.9 >POP 4
FS.STAT.YA.RTS rts
.9
FS.MLIOPEN.RTS rts
*--------------------------------------
FS.Stat bit A2osX.FSID
bmi FS.Stat.FX
FS.Stat.203 >MLICALL MLIGETFILEINFO
bcs FS.STAT.YA.RTS
bcs FS.MLIOPEN.RTS
jsr FS.ClrStat
lda K.MLI.PARAMS+S.FI.T
cmp #S.FI.T.DIR
bne .1
lda /S.STAT.MODE.DIR
sta K.S.STAT+S.STAT.MODE+1
.1 lda K.MLI.PARAMS+S.FI.A
sta K.S.STAT+S.STAT.P.ACCESS
@ -236,7 +226,7 @@ FS.Stat.203 >MLICALL MLIGETFILEINFO
sta K.S.STAT,y
dex
bne .3
>LDYAI K.MLI.PARAMS+S.FI.CDATE
ldx #K.S.STAT+S.STAT.CTIME
jsr FS.PTime2StatYAX
@ -247,11 +237,11 @@ FS.Stat.203 >MLICALL MLIGETFILEINFO
*--------------------------------------
FS.Stat.FX >MLICALL MLIGETFILEINFOEX
bcc .1
cmp #MLI.E.BADCALL
beq FS.Stat.203 Apple WS CARD
rts
.1 >LDYAI K.MLI.PARAMS+3
>STYA ZPPtr3
*--------------------------------------
@ -277,7 +267,7 @@ FS.DirEnt2Stat jsr FS.ClrStat
ldy #S.FIEX.ACCESS
lda (ZPPtr3),y
sta K.S.STAT+S.STAT.P.ACCESS
ldy #S.FIEX.ACL
lda (ZPPtr3),y
cmp #$57
@ -290,14 +280,14 @@ FS.DirEnt2Stat jsr FS.ClrStat
ldy #S.FIEX.ACL.GID
lda (ZPPtr3),y
sta K.S.STAT+S.STAT.GID
ldy #S.FIEX.ACL.MOD
lda (ZPPtr3),y
tsb K.S.STAT+S.STAT.MODE
iny
lda (ZPPtr3),y
tsb K.S.STAT+S.STAT.MODE+1
.7 lda #S.FIEX.CTIME
ldx #K.S.STAT+S.STAT.CTIME
jsr FS.PTime2StatAX

View File

@ -97,7 +97,9 @@ GP.Sleep2 ldy #S.PS.PC
inc $1fe PC=PC+1
bne .4
inc $1ff because of RTI
.4 lda (pPS)
ora #S.PS.F.SLEEP
sta (pPS)
@ -123,6 +125,7 @@ GP.SysCall dec IRQ.InKernel
pla
jsr K.SYSCALL2
bcc .2 no error quit...
tax CS,A=0 ?
beq .3 Yes, BLOCKING I/O
@ -136,7 +139,9 @@ GP.SysCall dec IRQ.InKernel
* sec
sbc #2 move back JSR GP.SysCall -3 (jsr $BF00) +1 (RTI)
bcs .4
dex
.4 inc IRQ.InKernel
bra GP.Sleep2
*--------------------------------------
@ -147,6 +152,7 @@ GP.LibCall dec IRQ.InLib
jsr K.GetMemPtr Get LIB Code Segment (MemMgr in $E000, no BNK change)
>STYA .1+1
pla
.1 jsr $FFFF SELF MODIFIED
GP.LibCall.8 inc IRQ.InLib
@ -155,11 +161,15 @@ GP.LibCall.RTS rts
GP.AtkCall dec IRQ.InKernel
>STYA .1
jsr GO.ProDOS
jsr MLI
.DA #MLIATALK
.1 .DA *
jsr GO.A2osX
GP.AtkCall.INC inc IRQ.InKernel
rts
*/--------------------------------------
@ -298,6 +308,7 @@ GP.lrintf jsr GP.SetFAC
jsr GP.ROMCALL
ldy #3
.1 lda FAC+1,y
sta (pStack),y
dey
@ -340,7 +351,7 @@ GO.A2osX php
bcs GO.A2osX.BNK if CS, go AUXLC
bit RRAMWRAMBNK1 Go MAINLC (ProDOS), always BNK1
bit RRAMWRAMBNK1
* bit RRAMWRAMBNK1
tsx
stx A2osX.SaveSX
@ -352,7 +363,7 @@ GO.A2osX php
GO.A2osX.BNK ldx #RRAMWRAMBNK1 Self Modified, initialized to BNK1 for INIT3
bit $C000,x
bit $C000,x
* bit $C000,x
sta SETALTZP
tsx
stx A2osX.SaveSM
@ -418,6 +429,6 @@ GP.CodeEnd .BS $BED0-*
*--------------------------------------
GP.End .EQ *
MAN
SAVE USR/SRC/SYS/KERNEL.S.GP
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.gp
LOAD usr/src/sys/kernel.s
ASM

View File

@ -121,7 +121,7 @@ Kernel.Init3 sta SETALTZP
sta A2osX.KVER+1
sta SETALTCHAR
sta CLRMIXED
sta SETMIXED
sta CLRHIRES
sta SET80DISP
sta SET80STORE
@ -153,6 +153,9 @@ Kernel.Init3 sta SETALTZP
jsr SysScrInit
bcs *
sta CLRMIXED
>PUSHWI DEV.CONSOLE
>PUSHBI O.RDWR
>PUSHBI S.FI.T.TXT
@ -297,7 +300,7 @@ MemMgrInit >LDYAI Mem.MHiMem
ldx #K.NOD.MAX*2-1
.2 stz Nod.Table.hPath,x
.2 stz Nod.Table.hName,x
dex
bpl .2
@ -307,12 +310,6 @@ MemMgrInit >LDYAI Mem.MHiMem
dex
bpl .3
ldx #K.OF.MAX*2-1
.4 stz OF.Table.hPath,x
dex
bpl .4
ldx #K.EVT.MAX*S.EVT-1
.5 stz Evt.Table,x
@ -683,6 +680,7 @@ DevMgrInit >LDYAI MSG.DEV
sta ZPPtr1+1
stz ZPPtr1 Cn00
plp
lda #0
adc #1 Make DevID 1 or 2
@ -1121,14 +1119,14 @@ PwdMgrInit >LDYAI MSG.PWD
>SYSCALL2 puts
>LDYAI PWD.ETCPASSWD
jsr PwdMgrInit.Load
>SYSCALL2 LoadStkObj
bcs .1
stx PWD.hUsrDB
>STYA PWD.UsrDBSize
>LDYAI PWD.ETCGROUP
jsr PwdMgrInit.Load
>SYSCALL2 LoadStkObj
bcs .1
stx PWD.hGrpDB
@ -1138,13 +1136,6 @@ PwdMgrInit >LDYAI MSG.PWD
* clc
.9 rts
*--------------------------------------
PwdMgrInit.Load >PUSHYA
>PUSHBI O.RDONLY
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
>SYSCALL2 LoadStkObj
rts
*--------------------------------------
* Modified CHARGET/CHARGOT for ROM CALL
* CHRGET .EQ $B1 - C8
*--------------------------------------

View File

@ -136,6 +136,6 @@ IRQ.JMP jmp $FFFF SELF MODIFIED Not handled, pass to ProDOS
IRQ.8 rti
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.IRQ
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.irq
LOAD usr/src/sys/kernel.s
ASM

View File

@ -43,15 +43,15 @@ K.SYSCALL .DA K.ChTyp $00 : STAT
.DA K.Remove $40
.DA K.Rename
.DA 0
.DA 0
.DA K.PrintF
.DA K.FPrintF
.DA K.SPrintF
.DA K.ScanF
.DA K.FScanF $50
.DA K.FScanF
.DA K.SScanF
.DA 0 $50
.DA 0
.DA 0
.DA 0
.DA 0

View File

@ -2,6 +2,6 @@ NEW
AUTO 3,1
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.MATH
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.math
LOAD usr/src/sys/kernel.s
ASM

View File

@ -550,6 +550,6 @@ MATH32.ACC32NEG.RTS
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.MATH32
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.math32
LOAD usr/src/sys/kernel.s
ASM

View File

@ -58,6 +58,6 @@ K.MD5Finalize >PULLW FORPNT
jmp K.SYSCALL.JMPX
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.MD5
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.md5
LOAD usr/src/sys/kernel.s
ASM

View File

@ -487,6 +487,6 @@ MD5.i .BS 1
MD5.BUFFER64 .BS 64
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.MD5X
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.md5x
LOAD usr/src/sys/kernel.s
ASM

View File

@ -51,11 +51,11 @@ K.Realloc >PULLW MEM.NewSize
lda .7+1
sta SETREADAUX
jsr MEM.MoveSetupA1A2 Setup AUX base & End Ptrs
jsr MEM.SetA1A2 Setup AUX base & End Ptrs
sta CLRREADAUX
clc Aux To Main
jsr AuxMove
jsr XMov
.7 lda #$ff SELF MODIFIED
>SYSCALL2 FreeStkObj
@ -589,11 +589,11 @@ MEM.MoveToMain sec
lda .2+1 Get AUX mem Ptr
sta SETREADAUX
jsr MEM.MoveSetupA1A2 Setup AUX base & End Ptrs
jsr MEM.SetA1A2 Setup AUX base & End Ptrs
sta CLRREADAUX
clc Aux To Main
jsr AuxMove
jsr XMov
.1 lda #$ff SELF MODIFIED
bpl .8 Copy : dont discard AUX mem
@ -615,10 +615,10 @@ MEM.MoveToAux stx .1+1 Save MAIN hMem
>STYA A4L Save AUX Ptr
lda .1+1
jsr MEM.MoveSetupA1A2 Setup MAIN base & End Ptrs
jsr MEM.SetA1A2 Setup MAIN base & End Ptrs
sec Main To Aux
jsr AuxMove
jsr XMov
.1 lda #$ff SELF MODIFIED
jsr K.FreeMem release MAIN memory
@ -628,8 +628,7 @@ MEM.MoveToAux stx .1+1 Save MAIN hMem
.9 rts
*--------------------------------------
MEM.MoveSetupA1A2
jsr K.GetMemPtr
MEM.SetA1A2 jsr K.GetMemPtr
>STYA A1L Start Address
pha
@ -678,6 +677,6 @@ MEM.GetKrnlBuf pha
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.MEM
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.mem
LOAD usr/src/sys/kernel.s
ASM

View File

@ -16,7 +16,7 @@ PFT.CheckPath4 ldy #4
ply
PFT.CheckPathYA >PUSHYA
stx .6+1 Save SYSCALL #
>PUSHWI K.Buf256
@ -53,7 +53,7 @@ PFT.CheckPathYA >PUSHYA
pla
>LDYAI K.Buf256 pass full path to handler
.6 ldx #$ff SELF MODIFIED SYSCALL #
.6 ldx #$ff SELF MODIFIED SYSCALL #
.7 jmp $ffff SELF MODIFIED
.8 inx
@ -88,27 +88,15 @@ PFT.YAToMLIPATH.RTS
PFT.CheckNode4 ldy #4
.HS 2C BIT ABS
PFT.CheckNode2 ldy #2
lda (pStack),y
PFT.CheckNodeA stx .80+1 Save SYSCALL #
sta .81+1 Save hFILE
tax
lda OF.Table.hFD-1,x
beq .9
jsr DEV.GetPFD
bcs .99
sta IO.hFD
ldy OF.Table.hPath-1,x if 0, its a hDEV
bne .10
tax
ldy Dev.Table-1,x
lda Dev.Table,x
bra .11
.10 jsr K.GetMemPtr
.11 >STYA pFD
ldy #S.FD.HANDLER
lda (pFD),y
beq .8 Handler is 0, back to kernel....
@ -124,7 +112,7 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL #
.8 lda (pFD) #S.FD.T
cmp #S.FD.T.CDEV
bcs .80
bcs .80
ldy #S.FD.REG.REF REG or DIR
lda (pFD),y
@ -133,13 +121,10 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL #
.80 ldx #$ff SELF MODIFIED
.81 lda #$ff SELF MODIFIED
clc
rts
.9 lda #E.INVH
sec
rts
.99 rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.PFT
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.pft
LOAD usr/src/sys/kernel.s
ASM

View File

@ -1,39 +1,38 @@
NEW
AUTO 3,1
*--------------------------------------
IO.PIPE.SRCBUF .EQ ZPDRV
IO.PIPE.DSTBUF .EQ ZPDRV+2
IO.PIPE.CNT .EQ ZPDRV+4
IO.PIPE.BASEH .EQ ZPDRV+6
IO.PIPE.BUFH .EQ ZPDRV+7
IO.PIPE.SIZEH .EQ ZPDRV+8
PIPE.SRCBUF .EQ ZPDRV
PIPE.DSTBUF .EQ ZPDRV+2
PIPE.CNT .EQ ZPDRV+4
PIPE.BASEH .EQ ZPDRV+6
PIPE.BUFH .EQ ZPDRV+7
PIPE.SIZEH .EQ ZPDRV+8
*--------------------------------------
IO.OPEN.PIPE ldy #S.FD.PIPE.S
lda (pFD),y
inc
sta (pFD),y
lda IO.hFD
lda IO.hDevNod
clc
rts
*--------------------------------------
IO.CLOSE.PIPE ldy #S.FD.PIPE.S
lda (pFD),y
bmi .1 remote PS closed its end
lda #$80
sta (pFD),y
clc
rts
.1 jsr IO.CLOSE.NOD
ldy #S.FD.PIPE.hMem
.1 ldy #S.FD.PIPE.hMem
lda (pFD),y
beq .2
>SYSCALL2 FreeStkObj
.2 lda IO.hFD
jmp K.FreeMem
.2 jmp DEV.Destroy
*--------------------------------------
* (pStack)+2 count
* (pStack)+0 buf
@ -55,20 +54,20 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
sbc (pStack),y
bcc IO.READ.PIPE.NODATA not enough room in PIPE
>PULLW IO.PIPE.SRCBUF
>PULLW PIPE.SRCBUF
ldy #S.FD.PIPE.Head+1
jsr IO.PIPE.GET.BUF
jsr PIPE.GET.BUF
>STYA IO.PIPE.DSTBUF
>STYA PIPE.DSTBUF
>PULLA get cnt lo
sta IO.PIPE.CNT
sta PIPE.CNT
eor #$ff
tax
>PULLA get cnt hi
sta IO.PIPE.CNT+1
sta PIPE.CNT+1
eor #$ff
pha
ldy #S.FD.PIPE.Head
@ -86,28 +85,28 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
pha
.2 lda (IO.PIPE.SRCBUF)
sta (IO.PIPE.DSTBUF),y
.2 lda (PIPE.SRCBUF)
sta (PIPE.DSTBUF),y
inc IO.PIPE.SRCBUF
inc PIPE.SRCBUF
bne .4
inc IO.PIPE.SRCBUF+1
inc PIPE.SRCBUF+1
.4 iny
bne .1
lda IO.PIPE.BUFH
lda PIPE.BUFH
inc
cmp IO.PIPE.SIZEH
cmp PIPE.SIZEH
beq .6
sta IO.PIPE.BUFH
inc IO.PIPE.DSTBUF+1
sta PIPE.BUFH
inc PIPE.DSTBUF+1
bra .1
.6 stz IO.PIPE.BUFH
lda IO.PIPE.BASEH Pipe Buffer Base
sta IO.PIPE.DSTBUF+1
.6 stz PIPE.BUFH
lda PIPE.BASEH Pipe Buffer Base
sta PIPE.DSTBUF+1
bra .1
.8 sta CLRWRITEAUX
@ -116,14 +115,14 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S
ldy #S.FD.PIPE.Head
sta (pFD),y
iny
lda IO.PIPE.BUFH
lda PIPE.BUFH
sta (pFD),y
ldy #S.FD.PIPE.Free
jsr IO.PIPE.SUB.CNT
jsr PIPE.SUB.CNT
iny #S.FD.PIPE.Used
jsr IO.PIPE.ADD.CNT
jsr PIPE.ADD.CNT
jmp IO.READ.PIPE.EXIT
IO.READ.PIPE.EOF
@ -145,12 +144,12 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
bmi IO.READ.PIPE.EOF Remote PS closed the Pipe
bpl IO.READ.PIPE.NODATA
.10 >PULLW IO.PIPE.DSTBUF get dest buf
.10 >PULLW PIPE.DSTBUF get dest buf
ldy #S.FD.PIPE.Tail+1
jsr IO.PIPE.GET.BUF
jsr PIPE.GET.BUF
>STYA IO.PIPE.SRCBUF
>STYA PIPE.SRCBUF
>PULLA get cnt lo
tax
@ -170,8 +169,8 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
iny
lda (pFD),y X,A = Used
.12 stx IO.PIPE.CNT
sta IO.PIPE.CNT+1
.12 stx PIPE.CNT
sta PIPE.CNT+1
eor #$ff
pha
@ -193,28 +192,28 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
pha
.2 lda (IO.PIPE.SRCBUF),y
sta (IO.PIPE.DSTBUF)
.2 lda (PIPE.SRCBUF),y
sta (PIPE.DSTBUF)
inc IO.PIPE.DSTBUF
inc PIPE.DSTBUF
bne .4
inc IO.PIPE.DSTBUF+1
inc PIPE.DSTBUF+1
.4 iny
bne .1
lda IO.PIPE.BUFH
lda PIPE.BUFH
inc
cmp IO.PIPE.SIZEH
cmp PIPE.SIZEH
beq .6
sta IO.PIPE.BUFH
inc IO.PIPE.SRCBUF+1
sta PIPE.BUFH
inc PIPE.SRCBUF+1
bra .1
.6 stz IO.PIPE.BUFH
lda IO.PIPE.BASEH
sta IO.PIPE.SRCBUF+1 Restore Pipe Buf base
.6 stz PIPE.BUFH
lda PIPE.BASEH
sta PIPE.SRCBUF+1 Restore Pipe Buf base
bra .1
.8 sta CLRREADAUX
@ -223,54 +222,57 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1
ldy #S.FD.PIPE.Tail
sta (pFD),y
iny
lda IO.PIPE.BUFH
lda PIPE.BUFH
sta (pFD),y
ldy #S.FD.PIPE.Free
jsr IO.PIPE.ADD.CNT
jsr PIPE.ADD.CNT
iny #S.FD.PIPE.Used
jsr IO.PIPE.SUB.CNT
jsr PIPE.SUB.CNT
IO.READ.PIPE.EXIT
>LDYA IO.PIPE.CNT Y,A = bytes written
>LDYA PIPE.CNT Y,A = bytes written
clc
rts
*--------------------------------------
IO.PIPE.GET.BUF lda (pFD),y
sta IO.PIPE.BUFH
PIPE.GET.BUF lda (pFD),y
sta PIPE.BUFH
ldy #S.FD.PIPE.Size+1
lda (pFD),y
sta IO.PIPE.SIZEH
sta PIPE.SIZEH
ldy #S.FD.PIPE.hMem
lda (pFD),y
>SYSCALL2 GetStkObjPtr
sta IO.PIPE.BASEH Pipe Buffer Base
sta PIPE.BASEH Pipe Buffer Base
* clc
adc IO.PIPE.BUFH
adc PIPE.BUFH
rts
*--------------------------------------
IO.PIPE.ADD.CNT clc
PIPE.ADD.CNT clc
lda (pFD),y
adc IO.PIPE.CNT
adc PIPE.CNT
sta (pFD),y
iny
lda (pFD),y
adc IO.PIPE.CNT+1
adc PIPE.CNT+1
sta (pFD),y
rts
*--------------------------------------
IO.PIPE.SUB.CNT sec
PIPE.SUB.CNT sec
lda (pFD),y
sbc IO.PIPE.CNT
sbc PIPE.CNT
sta (pFD),y
iny
lda (pFD),y
sbc IO.PIPE.CNT+1
sbc PIPE.CNT+1
sta (pFD),y
rts
*--------------------------------------
@ -280,15 +282,16 @@ IO.EOF.PIPE clc
iny
ora (pFD),y
beq .8
lda #0
* clc
rts
.8 lda #$ff
.8 dec lda #$ff
* clc
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.PIPE
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.pipe
LOAD usr/src/sys/kernel.s
ASM

View File

@ -12,7 +12,7 @@ NEW
* A = Child PSID
*\--------------------------------------
K.ExecL >PULLB PS.Flags
>LDYAI 256
jsr K.GetMem
bcs .99
@ -44,12 +44,13 @@ K.ExecL >PULLB PS.Flags
*\--------------------------------------
K.ExecV >PULLB PS.Flags
>PULLW PS.ArgV
PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
bcs .9
sta .8+1
stz K.IOBuf If !=0 after PS.Load, it's a script
jsr PS.Load
bcs .90
@ -66,7 +67,7 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
.8 lda #$ff SELF MODIFIED
* clc
.9
.9
PS.Exec.RTS rts
*/--------------------------------------
* # Fork
@ -80,17 +81,17 @@ PS.Exec.RTS rts
K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
bcs PS.Exec.RTS
sta .8+1
ldy #S.PS.S
lda #S.PS.S.RUN
sta (PS.NewPSPtr),y
ldy #S.PS.hCS
lda (ZPPtr1),y
sta (PS.NewPSPtr),y
jsr MEM.GetMemByID
jsr Mem.IncRefCnt
ldy #S.MEM.PTR+1
lda (ZPMemMgrSPtr),y
pha
@ -101,12 +102,12 @@ K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
dey
pla
sta (PS.NewPSPtr),y
ldy #S.PS.hDS
lda (ZPPtr1),y
jsr MEM.Dup
bcs .9
ldy #S.PS.hDS
sta (PS.NewPSPtr),y
jsr K.GetMemPtr
@ -121,7 +122,7 @@ K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
lda (ZPPtr1),y
jsr MEM.Dup
bcs .9
ldy #S.PS.hSS
sta (PS.NewPSPtr),y
jsr K.GetMemPtr
@ -131,18 +132,18 @@ K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
dey
pla
sta (PS.NewPSPtr),y
ldy #S.PS.hARGV
lda (ZPPtr1),y
jsr MEM.Dup
bcs .9
ldy #S.PS.hARGV
sta (PS.NewPSPtr),y
dey
lda (ZPPtr1),y S.PS.ARGC
sta (PS.NewPSPtr),y
ldy #S.PS.ARGC
sta (PS.NewPSPtr),y
iny S.PS.hARGV
@ -154,20 +155,20 @@ K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
sta (PS.NewPSPtr),y Forked PS will get A=PSID=0
iny
.1 lda (ZPPtr1),y
.1 lda (ZPPtr1),y
sta (PS.NewPSPtr),y
iny
cpy #S.PS.hSession
bne .1
ldy #S.PS.ZP.LOCAL
.2 lda (ZPPtr1),y
.2 lda (ZPPtr1),y
sta (PS.NewPSPtr),y
iny
cpy #S.PS
bne .2
.8 lda #$ff SELF MODIFIED
* clc
.9 rts
@ -257,7 +258,7 @@ PS.CreateChild ldx #0
ldy #S.PS.hENV
lda (ZPPtr1),y
jsr MEM.DupX dup hENV from parent PS
bcs .9
@ -275,7 +276,7 @@ PS.CreateChild ldx #0
iny
cpy #S.PS.hStdErr+1
bne .7
ldy #S.PS.hSession
lda (ZPPtr1),y
sta (PS.NewPSPtr),y
@ -295,13 +296,13 @@ PS.CreateChild ldx #0
sta (ZPPtr1),y
.8
* lda #S.PS.S.INIT
* ldy #S.PS.S
* ldy #S.PS.S
* sta (PS.NewPSPtr),y Make this PS Init....
lda CORE.LastPSID Exit with A=PSID
clc
rts
.9 pha
>PUSHBI 2
lda CORE.LastPSID
@ -320,7 +321,7 @@ PS.Load ldy #$ff
bne .1
>LDYA PS.ArgV found /, some path specified, no search
jsr FS.STAT.YA
jsr PS.STAT.YA
bcc .6 REAL path in K.Buf256
.99 rts
@ -346,15 +347,15 @@ PS.Load ldy #$ff
bne PS.Load.IPATH
jsr PS.Buf2IO .SYSTEM -> IOBUF
* ldy #$ff
*.8 iny
* inx
* lda PS.T,y
* sta K.IOBuf-1,x
* bne .8
>LDYAI PS.SHUTDOWN
jsr PS.Find.PATH
bcs PS.Load.RTS
@ -399,12 +400,12 @@ PS.Load.SCRIPT jsr PS.Buf2IO
beq .5
eor #C.CR
bne .4
bne .4
sta K.Buf256-1,x K.Buf256 = "${ROOT}BIN/SHELL\0"
.5 >LDYAI K.Buf256
jsr FS.STAT.YA
jsr PS.STAT.YA
bcs PS.Load.RTS
lda K.S.STAT+S.STAT.P.TYPE
@ -416,7 +417,7 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT
bcs .9
>STYA ZPPtr4 save PTR to Code Segment
phy
ldy #S.PS.ZP.CODE+1
sta (PS.NewPSPtr),y save pCode HI...
@ -440,7 +441,7 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT
.1 ldy #H.BIN.DS.SIZE+1
lda (ZPPtr4),y Load DS.SIZE HI
tax
dey
dey
ora (ZPPtr4),y
beq .2 DS.SIZE=0...
@ -490,7 +491,7 @@ PS.LoadBIN jsr BIN.Load K.Buf256= "${ROOT}BIN/SH\0", K.IOBuf=/.../SCRIPT
ldy #H.BIN.SS.SIZE ...plus Stack size
* clc
adc (ZPPtr4),y
ldy #S.PS.ZP.STACK
sta (PS.NewPSPtr),y
@ -527,8 +528,8 @@ PS.Load.ROOT .AZ "ROOT"
PS.Load.HEADER .AZ "#!/"
*--------------------------------------
* K.Buf256= /.../SHELL, K.IOBuf=/.../SCRIPT
* - or -
* K.Buf256=/.../BINFILE,K.IOBuf=0
* - or -
* K.Buf256=/.../BINFILE,K.IOBuf=0
* Buf256+IOBUF(?)+PS.ArgV[1,...] -> #S.PS.hARGV
*--------------------------------------
PS.AddArgV ldy #$ff In both cases, remove ARGV[0]
@ -704,7 +705,7 @@ K.Kill.2 ldy #S.PS.hSession
ldy #S.PS.hENV
lda (ZPPtr1),y
>SYSCALL2 FreeStkObj
ldx #4
.11 ldy .10,x
@ -745,19 +746,21 @@ K.Kill.2 ldy #S.PS.hSession
* # LoadTxtFile
* Load TXT a file in memory (with ending 0)
* ## C
* `int loadtxtfile ( const char * filename, short int flags, short int ftype, int auxtype );`
* `int loadtxtfile ( const char * filename );`
* ## ASM
* **In:**
* `>PUSHW filename`
* `>PUSHB flags`
* `>PUSHB ftype`
* `>PUSHW auxtype`
* `>LDYA filename`
* `>SYSCALL loadtxtfile`
* ## RETURN VALUE
* Y,A = File Length (without ending 0)
* X = hMem of Loaded File
*\--------------------------------------
K.LoadTxtFile sec
K.LoadTxtFile >PUSHYA
>PUSHBI O.RDONLY
>PUSHBI S.FI.T.TXT
>PUSHWZ Aux type
sec
.HS 90 BCC
*/--------------------------------------
* # LoadFile
@ -776,15 +779,16 @@ K.LoadTxtFile sec
* X = hMem of Loaded File
*\--------------------------------------
K.LoadFile clc
ror PS.bTXT
>SYSCALL2 FOpen
bcs .99
sta PS.hFILE
jsr FS.FSTAT.A
>PUSHA
>PUSHWI K.S.Stat
>SYSCALL2 FStat
bcs .98
lda K.S.Stat+S.STAT.SIZE+3
@ -795,8 +799,10 @@ K.LoadFile clc
bit PS.bTXT Add 1 to buffer size for ending 0
bpl .1
iny
bne .1
inc
bne .1
@ -878,9 +884,9 @@ K.FileSearch >PULLW .4+1 DstStat
>PULLW .2+1 DstBuf
>PULLW PS.Find.2+1 path to search
>PULLW PS.Find.4+1 filename to find
stz PS.Find.98+1
jsr PS.Find
bcs K.FileSearch.RTS
@ -903,11 +909,11 @@ PS.Find.CWD >STYA PS.Find.4+1 filename to find
lda (PS.NewPSPtr),y
jsr K.GetMemPtr
>STYA PS.Find.2+1
stz PS.Find.98+1
bra PS.Find
PS.Find.LIB ldx #0
.HS 2C BIT ABS
PS.Find.DRV ldx #2
@ -925,7 +931,7 @@ PS.Find.PATH ldx #4
stx PS.Find.98+1
PS.Find stz PS.Find.1+1
PS.Find.1 ldy #0 Self Modified Index in Search list string
ldx #0
@ -958,7 +964,7 @@ PS.Find.4 lda $ffff,y Self Modified, Append Filename...
bra PS.Find.4
PS.Find.5 >LDYAI K.Buf256
jsr FS.STAT.YA
jsr PS.STAT.YA
bcs PS.Find.1 Failed...retry next path...
lda K.S.STAT+S.STAT.P.TYPE
@ -971,7 +977,7 @@ PS.Find.5 >LDYAI K.Buf256
PS.Find.98 lda #$ff SELF MODIFIED : Discard Search list
beq .1
jsr K.FreeMem
.1 lda #MLI.E.FNOTFND
@ -987,6 +993,11 @@ PS.Buf2IO ldx #$ff
rts
*--------------------------------------
PS.STAT.YA >PUSHYA
>PUSHWI K.S.STAT
>SYSCALL2 Stat
rts
*--------------------------------------
PS.SHUTDOWN .AZ "shutdown"
*PS.T .AZ " -T 3"
PS.VARS .DA .1
@ -1028,6 +1039,6 @@ K.GetMemStat >STYA ZPPtr1
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.PS
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.ps
LOAD usr/src/sys/kernel.s
ASM

View File

@ -833,6 +833,6 @@ PWDX.GROUP .AS "root:0"
PWDX.GROUP.Size .EQ *-PWDX.GROUP
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.PWDX
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.pwdx
LOAD usr/src/sys/kernel.s
ASM

View File

@ -151,6 +151,6 @@ SHARED.GetScrnDevX
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.SHARED
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.shared
LOAD usr/src/sys/kernel.s
ASM

View File

@ -87,6 +87,6 @@ K.SListFree >PULLA
K.SListNew jmp K.SYSCALL.JMPX
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.SLIST
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.slist
LOAD usr/src/sys/kernel.s
ASM

View File

@ -504,6 +504,6 @@ SLIST.ToNextBlock.RTS
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.SLISTX
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.slistx
LOAD usr/src/sys/kernel.s
ASM

View File

@ -93,8 +93,28 @@ K.FStat jsr PFT.CheckNode2
>PULLW K.Stat.Store.2+1
jsr FS.FSTAT
>PULLA
tax
lda Nod.Table.hName-2,x get path
jsr K.GetMemPtr
jsr PFT.YAToMLIPATH
jsr FS.Stat.203
bcs K.Stat.Store.RTS
ldy #S.FD.REG.REF
lda (pFD),y
sta K.MLI.PARAMS+1
>MLICALL MLIGETEOF
bcs K.Stat.Store.RTS
ldx #2
.1 lda K.MLI.PARAMS+2,x
sta K.S.STAT+S.STAT.SIZE,x
dex
bpl .1
K.Stat.Store ldy #S.STAT-1
@ -174,10 +194,10 @@ K.MKFIFO jsr STAT.PullPathAndMode
bcs K.Stat.Store.RTS
ldy #0
.1 lda DEV.FIFO,y
.1 lda STAT.FIFO,y
sta (ZPPtr1),y fill pathname buffer
iny
cpy #9
cpy #4
bne .1
lda IO.hFD
@ -211,9 +231,10 @@ K.MkNod >PULLB IO.hFD
K.MkNod.I ldx #2
.1 lda Nod.Table.hPath-2,x
.1 lda Nod.Table.hFD-2,x empty slot ?
beq .2
inx
inx
cpx #K.Nod.MAX+2
bne .1
@ -222,18 +243,21 @@ K.MkNod.I ldx #2
* sec
rts
.2 stx .3+1 Store hFILE
.2 stx IO.hDevNod
>LDYA ZPPtr1
>SYSCALL2 StrDup
bcs .9
txa
.3 ldx #$ff SELF MODIFIED
sta Nod.Table.hPath-2,x
lda IO.hFD
sta Nod.Table.hFD-2,x
txa hNODE
.3 ldx IO.hDevNod
sta Nod.Table.hName-2,x store path
.4 lda IO.hFD
sta Nod.Table.hFD-2,x store hFD
txa hDevNod
clc
.9 rts
*/--------------------------------------
@ -255,7 +279,7 @@ K.Pipe sta .1+1 SIZE HI
stx .8+1 save PIPE buffer
ldx #2
jsr IO.MkFD
jsr DEV.MkFD
bcs .9
.1 lda #$ff SELF MODIFIED
@ -288,6 +312,8 @@ STAT.PullPathAndMode
>PULLW ZPPtr1 pathname
rts
*--------------------------------------
STAT.FIFO .AS "fifo"
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.stat
LOAD usr/src/sys/kernel.s

View File

@ -210,17 +210,19 @@ K.FGetS jsr PFT.CheckNodeA
.1 jsr STDIO.Get.1
bcc .2
cmp #MLI.E.EOF
beq .9
cmp #E.NODATA
sec
bne .9 IO error
.11 lda #0 BLOCKING
lda #0 BLOCKING
rts
.2 lda K.IOBuf
cmp #C.LF Discard any leading LF from a previous CR/LF
* beq .8 returns as empty string
beq .11 CS -> NODATA -> BLOCKING
cmp #C.LF Discard any leading LF from a prev CR/LF
beq .1
cmp #C.CR
beq .8 empty string
@ -234,7 +236,7 @@ K.FGetS jsr PFT.CheckNodeA
lda ZPPtr1+1
eor #$ff
sta ZPPtr1+1
*--------------------------------------
.3 inc ZPPtr1
bne .4
inc ZPPtr1+1
@ -377,25 +379,15 @@ K.UngetC clc
*\--------------------------------------
K.FOpen jsr PFT.CheckPath4
bcs .9
>PULLW IO.Open.AUXTYPE
>PULLB IO.Open.TYPE
>PULLB IO.Open.FLAGS
inc pStack discard filename
inc pStack
jsr UNISTD.Open
bcs .99
jsr STDIO.NewHFile
bcc .99
pha Save Error Code
lda IO.hFD
jsr K.Close
pla
sec
jmp UNISTD.Open
.9 >POP 6
.99 rts
@ -411,21 +403,9 @@ K.FOpen jsr PFT.CheckPath4
* ## RETURN VALUE
*\--------------------------------------
K.FClose jsr PFT.CheckNodeA
bcs K.FClose.RTS
bcs K.FRead.RTS
sta .1+1 store hFile
jsr UNISTD.Close
bcs K.FClose.RTS
.1 ldx #$ff SELF MODIFIED
stz OF.Table.hFD-1,x
lda OF.Table.hPath-1,x
beq K.FClose.RTS special files have no path
stz OF.Table.hPath-1,x
jmp K.FreeMem discard filename
jmp UNISTD.Close
*/--------------------------------------
* # FRead (BLOCKING)
* Read bytes from file
@ -446,7 +426,7 @@ K.FRead jsr PFT.CheckNodeA
jsr UNISTD.Read
bcs K.FWrite.9
K.FClose.RTS rts
K.FRead.RTS rts
*/--------------------------------------
* # FWrite (BLOCKING)
* Write bytes to file
@ -463,7 +443,7 @@ K.FClose.RTS rts
*\--------------------------------------
K.FWrite jsr PFT.CheckNodeA
bcs K.FWrite.RET4
jsr UNISTD.Write
bcc K.FWrite.RTS
@ -682,48 +662,6 @@ K.Rename jsr PFT.CheckPath2
.9 >RET 4
*--------------------------------------
* K.Buf256 = filepath
* X = hFD
*--------------------------------------
STDIO.NewHFile ldx #1
.1 lda OF.Table.hFD-1,x
beq .2
inx
cpx #K.OF.MAX+1
bne .1
lda #E.OOH
* sec
rts
.2 stx .4+1
ldx #0
lda (pFD)
cmp #S.FD.T.CDEV
beq .3
cmp #S.FD.T.BDEV
beq .3 No hPath for DEV
>LDYAI K.buf256
>SYSCALL2 StrDup
bcs .9
.3 txa
.4 ldx #$ff SELF MODIFIED
sta OF.Table.hPath-1,x
lda IO.hFD
sta OF.Table.hFD-1,x
txa hFILE
clc
.9 rts
*--------------------------------------
MAN
SAVE usr/src/sys/kernel.s.stdio
LOAD usr/src/sys/kernel.s

View File

@ -728,6 +728,6 @@ STDIO.Exit php
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.STDIO2
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.stdio2
LOAD usr/src/sys/kernel.s
ASM

View File

@ -577,6 +577,6 @@ ENV.GetP3LenY ldy #$ff
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.STDLIB
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.stdlib
LOAD usr/src/sys/kernel.s
ASM

View File

@ -249,6 +249,6 @@ SHARED.SPtr1PPtr2
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.STRING
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.string
LOAD usr/src/sys/kernel.s
ASM

View File

@ -69,6 +69,6 @@ STRV.Ptr1Ptr2cpy
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.STRV
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.strv
LOAD usr/src/sys/kernel.s
ASM

View File

@ -150,6 +150,6 @@ STRVX.NStrPtr1 ldy #$ff
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.STRVX
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.strvx
LOAD usr/src/sys/kernel.s
ASM

View File

@ -24,7 +24,6 @@ TERM.STATUS jsr TERM.GetIOCTLBufCntDCB
bra TERM.TOAUX
TERM.OPEN sta ZPDevID DEV.ID in A for OPEN
TERM.CONTROL
TERM.CLOSE jsr TERM.GetDCB
@ -104,6 +103,6 @@ TERM.GetDevName sta CLRREADAUX
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.TERM
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.term
LOAD usr/src/sys/kernel.s
ASM

View File

@ -1521,6 +1521,6 @@ BUF.BASEH .DA /S.DCB.TTY+0
.DA /S.DCB.TTY+1840
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.TERMX
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.termx
LOAD usr/src/sys/kernel.s
ASM

View File

@ -76,6 +76,6 @@ K.CTime2Time >PULLW FORPNT S.TIME
jmp K.SYSCALL.JMPX
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.TIME
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.time
LOAD usr/src/sys/kernel.s
ASM

View File

@ -459,6 +459,6 @@ TIMEX.IsLeap cmp #0 Year = 00 ?
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.TIMEX
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.timex
LOAD usr/src/sys/kernel.s
ASM

View File

@ -21,61 +21,30 @@ K.Open jsr PFT.YAToMLIPATH
stz IO.Open.AUXTYPE
stz IO.Open.AUXTYPE+1
*--------------------------------------
UNISTD.Open ldx #5 /DEV/
UNISTD.Open ldx #5 /dev/
cpx K.MLI.PATH
bcs .99
bcs .8
.1 lda K.MLI.PATH,x
cmp DEV.FIFO-1,x
bne .99
cmp UNISTD.DEV-1,x
bne .8
dex
bne .1
*--------------------------------------
* /DEV/xxxxxx (CDEV,BDEV,DSOCK,SSOCK,PIPE)
*--------------------------------------
>LDYAI K.MLI.PATH+6 skip $/DEV/
>LDYAI K.MLI.PATH+6 skip $/dev/
jsr K.GetDevByName
bcc .7
ldx #2
.10 lda Nod.Table.hPath-2,x
beq .3
jsr K.GetMemPtr
>STYA ZPPtr1
ldy #0
.2 lda (ZPPtr1),y
iny
cmp K.MLI.PATH,y
bne .3
cmp #0 end of string ?
bne .2
lda Nod.Table.hFD-2,x return hFD
jsr UNISTD.GetPFD
bra .71
.3 inx
cpx #K.NOD.MAX+2
bne .10
lda #MLI.E.NODEV
* sec
rts no OF found
bcs .9
*--------------------------------------
.7 stx IO.hFD
>STYA pFD
stx IO.hDevNod pFD set by GetDevByName
.71 lda (pFD) #S.FD.T
lda (pFD) #S.FD.T
tax
jmp (.8-2,x)
.8
jmp (.2-2,x)
.2
* .DA STDIO.IOERR REG
.DA STDIO.IOERR DIR
.DA IO.OPEN.CDEV
@ -85,7 +54,9 @@ UNISTD.Open ldx #5 /DEV/
.DA IO.OPEN.SSOCK
.DA IO.OPEN.PIPE
.99 jmp IO.OPEN.REG
.8 jmp FS.OPEN.REG
.9 rts
*/--------------------------------------
* # close
* ## C
@ -95,7 +66,7 @@ UNISTD.Open ldx #5 /DEV/
* `lda fd`
* `>SYSCALL close`
*\--------------------------------------
K.Close jsr UNISTD.GetPFD
K.Close jsr DEV.GetPFD
UNISTD.Close lda (pFD) #S.FD.T
tax
@ -122,12 +93,12 @@ UNISTD.Close lda (pFD) #S.FD.T
* CC: Y,A = bytes read
* CS: A = EC
*\--------------------------------------
K.Read jsr UNISTD.GetPFD
K.Read jsr DEV.GetPFD
UNISTD.Read lda (pFD) #S.FD.T
tax
jmp (.1,x)
.1 .DA IO.READ.REG
.1 .DA FS.READ.REG
.DA STDIO.IOERR DIR
.DA IO.READ.CDEV
.DA STDIO.IOERR BDEV
@ -149,12 +120,12 @@ UNISTD.Read lda (pFD) #S.FD.T
* CC: Y,A = bytes written
* CS: A = EC
*\--------------------------------------
K.Write jsr UNISTD.GetPFD
K.Write jsr DEV.GetPFD
UNISTD.Write lda (pFD) #S.FD.T
tax
jmp (.1,x)
.1 .DA IO.WRITE.REG
.1 .DA FS.WRITE.REG
.DA STDIO.IOERR DIR
.DA IO.WRITE.CDEV
.DA STDIO.IOERR BDEV
@ -163,28 +134,22 @@ UNISTD.Write lda (pFD) #S.FD.T
.DA IO.WRITE.SSOCK
.DA IO.WRITE.PIPE
*--------------------------------------
UNISTD.GetPFD sta IO.hFD
jsr K.GetMemPtr
>STYA pFD
rts
*--------------------------------------
IO.OPEN.CDEV
IO.OPEN.BDEV jsr SHARED.GetPDrv
ldx #IOCTL.OPEN
lda IO.hFD
jsr SHARED.pDrvJmp
IO.OPEN.BDEV ldx #IOCTL.OPEN
lda IO.hDevNod
jsr DEV.pDrvJmp
bcs IO.WRITE.CDEV.RTS
*--------------------------------------
IO.OPEN.DSOCK
*--------------------------------------
IO.OPEN.SSOCK
lda IO.hFD
*--------------------------------------
IO.CLOSE.CDEV
IO.CLOSE.BDEV
IO.OPEN.SSOCK lda IO.hDevNod
clc
rts
*--------------------------------------
IO.CLOSE.CDEV
IO.CLOSE.BDEV ldx #IOCTL.CLOSE
lda IO.hDevNod
jmp DEV.pDrvJmp
*--------------------------------------
IO.READ.CDEV ldx #IOCTL.READ
.HS 2C BIT ABS
*--------------------------------------
@ -192,9 +157,9 @@ IO.WRITE.CDEV ldx #IOCTL.WRITE
>PULLW K.S.IOCTL+S.IOCTL.BUFPTR
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
jsr SHARED.GetPDrv
>LDYAI K.S.IOCTL
jsr SHARED.pDrvJmp
jsr DEV.pDrvJmp
bcs .9
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
@ -227,51 +192,7 @@ IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE
.1 jmp $FFFF SELF MODIFIED
*--------------------------------------
IO.EOF.CDEV lda #S.IOCTL.STATCODE.EOF
jmp SHARED.GetDevStatus
*--------------------------------------
* X = 0 > REG
* X = 1 > DIR
* X = 2 > PIPE
*--------------------------------------
IO.MkFD stx .8+1
ldy IO.MkFD.Y,x
lda #0
ldx #S.MEM.F.INIT0+S.MEM.F.FD
jsr MEM.GetMem.YAX
bcs .9
>STYA pFD
stx IO.hFD
.8 ldx #$ff SELF MODIFIED
lda IO.MkFD.T,x
sta (pFD) X = hFD, A = T
* clc
.9 rts
IO.MkFD.Y .DA #S.FD.REG,#S.FD.DIR,#S.FD.PIPE
IO.MkFD.T .DA #S.FD.T.REG,#S.FD.T.DIR,#S.FD.T.PIPE
*--------------------------------------
IO.CLOSE.NOD ldx #2
lda IO.hFD
.1 cmp Nod.Table.hFD-2,x
bne .2
stz Nod.Table.hFD-2,x
lda Nod.Table.hPath-2,x
stz Nod.Table.hPath-2,x
jmp K.FreeMem
.2 inx
cpx #K.Nod.MAX+2
bne .1
lda #E.INVH
* sec
rts
jmp DEV.GetDevStatus
*/--------------------------------------
* # ChOwn
* ## C
@ -310,17 +231,9 @@ K.ChOwn jsr PFT.CheckPath2
K.ChOwn.RET4 >RET 4
*--------------------------------------
SHARED.GetPDrv ldy #S.FD.DEV.DRVPTR
lda (pFD),y
sta pDRV
iny
lda (pFD),y
sta pDRV+1
rts
*--------------------------------------
DEV.FIFO .AS "/dev/fifo" STAT,UNISTD
UNISTD.DEV .AS "/dev/"
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.UNISTD
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.unistd
LOAD usr/src/sys/kernel.s
ASM

View File

@ -89,6 +89,6 @@ Z80.6502Y .BS 1
Z80.6502P .BS 1
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.Z80
LOAD USR/SRC/SYS/KERNEL.S
SAVE usr/src/sys/kernel.s.z80
LOAD usr/src/sys/kernel.s
ASM

View File

@ -125,7 +125,6 @@ DevMgr.Timer .BS 1
DevMgr.Stat .DA DevMgr.FreeMem
DevMgr.Free .DA DevMgr.FreeMem
.DA DevMgr.HiMem
DevMgr.DevIdx .DA #1
DevMgr.FreeMem .EQ *
.EP
A2osX.E0.S .EQ *-A2osX.E0.B

View File

@ -133,8 +133,7 @@ RW.Detect2 php
ldx #0
.3 txa
sta RWBankSelect
.3 stx RWBankSelect
*--------------------------------------
* Added after David Finnigan from macgui.com testing sessions
*
@ -143,17 +142,16 @@ RW.Detect2 php
*
* to address possibly a timing issue with Accelerators
*--------------------------------------
cmp 0
bne .4
eor #$FF
lda 0
tay
eor #$ff
cmp 1
bne .4
inx
bpl .3
dex we reached 128,last detected page was 127
cpy #127
bne .3
.4 ldy #127 X = detected page count
@ -586,8 +584,10 @@ RWDRVX.RESTORE ldy #RWDRVX.XM.SIZE Now, restore begining of $300
*--------------------------------------
RWDRVX.XM.START ldy #2 2 pages to copy
RWDRVX.XM.COPY jsr RWDRV.XM.RUN+RWDRVX.XM.SRCLC-RWDRVX.XM.START
sta $C000,x
RWDRVX.XM.COPY sta CLRALTZP
jsr RWDRV.XM.RUN+RWDRVX.XM.SRCLC-RWDRVX.XM.START
sta $C000,x select proper Main/Aux ZP/LC
sta RWBankSelect
ldx #0
@ -597,8 +597,10 @@ RWDRVX.XM.SRC lda $FFFF,x
inx
bne RWDRVX.XM.SRC
sta CLRALTZP
jsr RWDRV.XM.RUN+RWDRVX.XM.DSTLC-RWDRVX.XM.START
sta $C000,x
sta $C000,x select proper Main/Aux ZP/LC
sta RWBankSelect
ldx #0
@ -617,7 +619,7 @@ RWDRVX.XM.DST sta $FFFF,x
stz RWBankSelect
*--------------------------------------
RWDRVX.XM.MNLC bit RRAMWRAMBNK1 ProDOS always uses LCBANK1
bit RRAMWRAMBNK1
* bit RRAMWRAMBNK1
lda #0
@ -633,7 +635,7 @@ RWDRVX.XM.RWLC lda #$FF
bmi RWDRVX.XM.BANK
bit RRAMWRAMBNK2
bit RRAMWRAMBNK2
* bit RRAMWRAMBNK2
RWDRVX.XM.BANK lda #$FF