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

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

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

View File

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

View File

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

View File

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

View File

@ -8,7 +8,6 @@ NEW
.INB inc/macros.i .INB inc/macros.i
.INB inc/a2osx.i .INB inc/a2osx.i
.INB inc/mli.e.i .INB inc/mli.e.i
.INB inc/kernel.i
.INB inc/libblkdev.i .INB inc/libblkdev.i
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
@ -768,7 +767,7 @@ Disk2.XD .DA 640 BlkCnt
Disk2.HD .DA 1280 BlkCnt Disk2.HD .DA 1280 BlkCnt
.DA #80 TrkCnt .DA #80 TrkCnt
.DA #2 Stepping .DA #2 Stepping
.DA ##194 VolNum .DA #194 VolNum
.DA #$80 AltBB .DA #$80 AltBB
.DA #1 HeadCnt .DA #1 HeadCnt
.BS 1 .BS 1
@ -776,7 +775,7 @@ Disk2.HD .DA 1280 BlkCnt
Disk2.HXD .DA 1280 BlkCnt Disk2.HXD .DA 1280 BlkCnt
.DA #80 TrkCnt .DA #80 TrkCnt
.DA #2 Stepping .DA #2 Stepping
.DA ##194 VolNum .DA #194 VolNum
.DA #$80 AltBB .DA #$80 AltBB
.DA #1 HeadCnt .DA #1 HeadCnt
.BS 1 .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 KW.Lookup >LDYA L.KEYWORDS
>STYA ZPPtr1 >STYA ZPPtr1
>LDYA ZPCLBufPtr
>STYA ZPPtr2
ldx #0 ldx #0
.1 ldy #$ff .1 ldy #$ff
@ -51,7 +48,7 @@ KW.Lookup >LDYA L.KEYWORDS
rts rts
.7 iny .7 iny
lda (ZPPtr2),y Get Src text char... lda (ZPCLBufPtr),y Get Src text char...
beq .9 end of text beq .9 end of text
jmp IsSpaceOrCR CS=end of valid chars jmp IsSpaceOrCR CS=end of valid chars
@ -761,7 +758,7 @@ KW.PRINT >LDYAI 256
>SYSCALL PutS >SYSCALL PutS
pla pla
>SYSCALL freemem >SYSCALL FreeMem
.9 rts .9 rts
*-------------------------------------- *--------------------------------------

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -2,13 +2,13 @@ NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
FON.Init >LDYA L.SYSX7 FON.Init >LDYA L.SYSX7
jsr FON.Load >SYSCALL2 LoadStkObj
bcs .9 bcs .9
stx hSYSFON stx hSYSFON
>LDYA L.SYSX7B >LDYA L.SYSX7B
jsr FON.Load >SYSCALL2 LoadStkObj
bcs .9 bcs .9
stx hSYSFONB stx hSYSFONB
@ -26,13 +26,6 @@ FON.Init >LDYA L.SYSX7
.9 rts .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 FON.GetTextSize >STYA CB.CACHE+S.CB.TxtPtr
stx CB.CACHE+S.CB.hFont stx CB.CACHE+S.CB.hFont

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -9,44 +9,91 @@ NEW
* X = hDev * X = hDev
*\-------------------------------------- *\--------------------------------------
K.GetDevByName >STYA ZPPtr1 requested dev name K.GetDevByName >STYA ZPPtr1 requested dev name
ldx #1 ldx #1
.1 jsr SHARED.GetDevFD .1 lda Dev.Table,x
bcs K.GetDev.NODEV beq .4
sta pFD+1
pha pha
tya
* clc lda Dev.Table-1,x
sta pFD
clc
adc #S.FD.DEV adc #S.FD.DEV
sta ZPPtr2 tay
pla pla
adc /S.FD.DEV adc /S.FD.DEV
sta ZPPtr2+1
ldy #$ff jsr .8
bcs .3
.2 iny jsr DEV.GetPDrv
lda (ZPPtr1),y
cmp (ZPPtr2),y
bne .7
ora (ZPPtr2),y Both char are 0 ? >LDYA pFD X = hDevNod
bne .2
beq SHARED.GetDevFD yes, get Ptr
.7 inx no....loop * clc
rts
.3 inx no....loop
inx inx
cpx #K.DEV.MAX*2+1 cpx #K.DEV.MAX*2+1
bne .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 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 K.GetDev.9 rts
*/-------------------------------------- */--------------------------------------
* # GetDevStatus * # GetDevStatus
* ## C * ## C
* `int getdevstatus(short int DevID, S.DIB *dstat);` * `int getdevstatus(short int DevID, S.DIB *dstat);`
* ## ASM * ## ASM
* `>PUSHB DevID` * `>PUSHB DevID`
@ -56,33 +103,23 @@ K.GetDev.9 rts
*\-------------------------------------- *\--------------------------------------
K.GetDevStatus >PULLW K.S.IOCTL+S.IOCTL.BUFPTR K.GetDevStatus >PULLW K.S.IOCTL+S.IOCTL.BUFPTR
>PULLA >PULLA
tax
jsr DEV.GetPFD
jsr SHARED.GetDevFD
bcs K.GetDev.9 bcs K.GetDev.9
>STYA pFD
lda #S.IOCTL.STATCODE.GETDIB lda #S.IOCTL.STATCODE.GETDIB
*-------------------------------------- *--------------------------------------
SHARED.GetDevStatus DEV.GetDevStatus
sta K.S.IOCTL+S.IOCTL.STATCODE sta K.S.IOCTL+S.IOCTL.STATCODE
ldy #S.FD.DEV.DEVID ldy #S.FD.DEV.DEVID
lda (pFD),y lda (pFD),y
sta K.S.IOCTL+S.IOCTL.UNITNUM sta K.S.IOCTL+S.IOCTL.UNITNUM
jsr SHARED.GetPDrv
>LDYAI K.S.IOCTL >LDYAI K.S.IOCTL
ldx #IOCTL.STATUS ldx #IOCTL.STATUS
*-------------------------------------- *--------------------------------------
SHARED.pDrvJmp jmp (pDrv) DEV.pDrvJmp jmp (pDrv)
*--------------------------------------
SHARED.GetDevFD lda Dev.Table,x
beq K.GetDev.NODEV
ldy Dev.Table-1,x
clc
rts
*/-------------------------------------- */--------------------------------------
* # MKDev * # MKDev
* Create a hDEV * Create a hDEV
@ -96,11 +133,21 @@ SHARED.GetDevFD lda Dev.Table,x
* A = hDEV * A = hDEV
*\-------------------------------------- *\--------------------------------------
K.MKDev >PULLW ZPPtr2 ptr2=name 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 cpx #K.DEV.MAX*2+1
beq .9 bne .10
bra .9
.11 stx IO.hDevNod
ldy #$ff ldy #$ff
ldx #S.FD.DEV ldx #S.FD.DEV
@ -120,7 +167,7 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
>STYA pFD >STYA pFD
>STYA .4+1 >STYA .4+1
ldx DevMgr.DevIdx ldx IO.hDevNod
sta Dev.Table,x sta Dev.Table,x
tya tya
sta Dev.Table-1,x sta Dev.Table-1,x
@ -144,8 +191,10 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
>LDYAI K.IOBuf >LDYAI K.IOBuf
>STYA K.S.IOCTL+S.IOCTL.BUFPTR >STYA K.S.IOCTL+S.IOCTL.BUFPTR
lda #S.IOCTL.STATCODE.STATUS jsr DEV.GetPDrv
jsr SHARED.GetDevStatus
lda #S.IOCTL.STATCODE.STATUS
jsr DEV.GetDevStatus
bcs .99 bcs .99
lda K.IOBuf Get Status byte lda K.IOBuf Get Status byte
@ -172,10 +221,8 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
iny iny
lda (pDRV),y lda (pDRV),y
sta IRQ.Vectors+1,x sta IRQ.Vectors+1,x
.8 lda DevMgr.DevIdx .8 lda IO.hDevNod
inc DevMgr.DevIdx
inc DevMgr.DevIdx
* clc * clc
rts rts
*/-------------------------------------- */--------------------------------------
@ -192,14 +239,10 @@ K.MKDev >PULLW ZPPtr2 ptr2=name
*\-------------------------------------- *\--------------------------------------
K.IOCTL ldy #3 hDev K.IOCTL ldy #3 hDev
lda (pStack),y lda (pStack),y
tax
jsr SHARED.GetDevFD
bcs .9
>STYA pFD
jsr SHARED.GetPDrv jsr DEV.GetPFD
bcs .9
ldy #2 request ldy #2 request
lda (pStack),y lda (pStack),y
tax tax
@ -207,12 +250,90 @@ K.IOCTL ldy #3 hDev
>PULLYA param >PULLYA param
inc pStack inc pStack
inc pStack inc pStack
jmp (pDrv) jmp (pDrv)
.9 >RET 4 .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 MAN
SAVE USR/SRC/SYS/KERNEL.S.DEV SAVE usr/src/sys/kernel.s.dev
LOAD USR/SRC/SYS/KERNEL.S LOAD usr/src/sys/kernel.s
ASM ASM

View File

@ -16,36 +16,9 @@ NEW
K.OpenDir jsr PFT.CheckPathYA K.OpenDir jsr PFT.CheckPathYA
bcs .9 bcs .9
ldx #1 jmp FS.OPEN.DIR
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
.9 rts .9 rts
.97 lda #MLI.E.UNSUPST
.98 pha Save Error Code
lda IO.hFD
jsr K.Close
pla
sec
rts
*/-------------------------------------- */--------------------------------------
* # ReadDir * # ReadDir
* ## C * ## C
@ -235,15 +208,15 @@ K.ReadDir.DIR sta K.MLI.PARAMS+1 A=#S.DIR.PRODOS.REF
bne .10 bne .10
ldx #8 ldx #8
ldy #S.FD.DIR.ACL+7 ldy #S.FD.DIR.ACL+7
.20 pla .20 pla
cpy #S.FD.DIR.MODE+1 cpy #S.FD.DIR.MODE+1
bne .30 bne .30
and #$0F and #$0F
.30 sta (pFD),y .30 sta (pFD),y
dey dey
dex dex
@ -500,7 +473,7 @@ K.ReadDir.AddStatACL
ldy #S.FD.DIR.MODE+1 ldy #S.FD.DIR.MODE+1
ldx #1 ldx #1
.2 lda (pFD),y .2 lda (pFD),y
ora K.S.STAT+S.STAT.MODE,x ora K.S.STAT+S.STAT.MODE,x
sta 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 *K.CloseDir .EQ K.FClose
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.DIRENT SAVE usr/src/sys/kernel.s.dirent
LOAD USR/SRC/SYS/KERNEL.S LOAD usr/src/sys/kernel.s
ASM ASM

View File

@ -99,7 +99,7 @@ DRV.BlkDevice.DIB
DRV.BLK txa DRV.BLK txa
lsr lsr
sta DRV.BLK.PARAMS CMD 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 lda (pFD),y
dec O or 1 dec O or 1
lsr in Carry lsr in Carry
@ -270,6 +270,6 @@ DRV.NULL.CLOSE clc
rts rts
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.DRV SAVE usr/src/sys/kernel.s.drv
LOAD USR/SRC/SYS/KERNEL.S LOAD usr/src/sys/kernel.s
ASM ASM

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -210,17 +210,19 @@ K.FGetS jsr PFT.CheckNodeA
.1 jsr STDIO.Get.1 .1 jsr STDIO.Get.1
bcc .2 bcc .2
cmp #MLI.E.EOF
beq .9
cmp #E.NODATA cmp #E.NODATA
sec sec
bne .9 IO error bne .9 IO error
.11 lda #0 BLOCKING lda #0 BLOCKING
rts rts
.2 lda K.IOBuf .2 lda K.IOBuf
cmp #C.LF Discard any leading LF from a previous CR/LF cmp #C.LF Discard any leading LF from a prev CR/LF
* beq .8 returns as empty string beq .1
beq .11 CS -> NODATA -> BLOCKING
cmp #C.CR cmp #C.CR
beq .8 empty string beq .8 empty string
@ -234,7 +236,7 @@ K.FGetS jsr PFT.CheckNodeA
lda ZPPtr1+1 lda ZPPtr1+1
eor #$ff eor #$ff
sta ZPPtr1+1 sta ZPPtr1+1
*--------------------------------------
.3 inc ZPPtr1 .3 inc ZPPtr1
bne .4 bne .4
inc ZPPtr1+1 inc ZPPtr1+1
@ -377,25 +379,15 @@ K.UngetC clc
*\-------------------------------------- *\--------------------------------------
K.FOpen jsr PFT.CheckPath4 K.FOpen jsr PFT.CheckPath4
bcs .9 bcs .9
>PULLW IO.Open.AUXTYPE >PULLW IO.Open.AUXTYPE
>PULLB IO.Open.TYPE >PULLB IO.Open.TYPE
>PULLB IO.Open.FLAGS >PULLB IO.Open.FLAGS
inc pStack discard filename inc pStack discard filename
inc pStack inc pStack
jsr UNISTD.Open jmp UNISTD.Open
bcs .99
jsr STDIO.NewHFile
bcc .99
pha Save Error Code
lda IO.hFD
jsr K.Close
pla
sec
.9 >POP 6 .9 >POP 6
.99 rts .99 rts
@ -411,21 +403,9 @@ K.FOpen jsr PFT.CheckPath4
* ## RETURN VALUE * ## RETURN VALUE
*\-------------------------------------- *\--------------------------------------
K.FClose jsr PFT.CheckNodeA K.FClose jsr PFT.CheckNodeA
bcs K.FClose.RTS bcs K.FRead.RTS
sta .1+1 store hFile jmp UNISTD.Close
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
*/-------------------------------------- */--------------------------------------
* # FRead (BLOCKING) * # FRead (BLOCKING)
* Read bytes from file * Read bytes from file
@ -446,7 +426,7 @@ K.FRead jsr PFT.CheckNodeA
jsr UNISTD.Read jsr UNISTD.Read
bcs K.FWrite.9 bcs K.FWrite.9
K.FClose.RTS rts K.FRead.RTS rts
*/-------------------------------------- */--------------------------------------
* # FWrite (BLOCKING) * # FWrite (BLOCKING)
* Write bytes to file * Write bytes to file
@ -463,7 +443,7 @@ K.FClose.RTS rts
*\-------------------------------------- *\--------------------------------------
K.FWrite jsr PFT.CheckNodeA K.FWrite jsr PFT.CheckNodeA
bcs K.FWrite.RET4 bcs K.FWrite.RET4
jsr UNISTD.Write jsr UNISTD.Write
bcc K.FWrite.RTS bcc K.FWrite.RTS
@ -682,48 +662,6 @@ K.Rename jsr PFT.CheckPath2
.9 >RET 4 .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 MAN
SAVE usr/src/sys/kernel.s.stdio SAVE usr/src/sys/kernel.s.stdio
LOAD usr/src/sys/kernel.s LOAD usr/src/sys/kernel.s

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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