diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 109d2df0..3a97ac71 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/SYS/KERNEL.S.DIRENT.txt b/SYS/KERNEL.S.DIRENT.txt index d1e76a9a..cdb78a49 100644 --- a/SYS/KERNEL.S.DIRENT.txt +++ b/SYS/KERNEL.S.DIRENT.txt @@ -15,8 +15,7 @@ AUTO 4,1 * A = EC *\-------------------------------------- K.OpenDir jsr PFT.CheckPathYA - >STYA ZPPtr2 - jsr STDIO.SetMLIPathYA For GETFILEINFO,MLIOPEN + bcs .99 >LDYAI S.FD.DIR jsr K.GetMem0 @@ -87,7 +86,7 @@ K.ReadDir.EPB .BS 1 K.ReadDir.EC .BS 2 *-------------------------------------- K.ReadDir jsr PFT.CheckNodeA - jsr STDIO.GetHFile + bcs K.ReadDir.RTS ldy #S.FD.DIR.REF lda (pFD),y @@ -97,7 +96,7 @@ K.ReadDir jsr PFT.CheckNodeA K.ReadDir.NoMore lda #0 sec CS,A=0 no more entry - rts +K.ReadDir.RTS rts *-------------------------------------- K.ReadDir.ROOT ldy #S.FD.DIR.FC did we already returned something ? diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index 17a7d892..1e4eb682 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -31,7 +31,7 @@ K.LoadTxtFile pha *\-------------------------------------- K.LoadFile clc ror FIO.bTXT - + >DEBUG jsr K.FOpen bcc .12 rts @@ -41,7 +41,6 @@ K.LoadFile clc pha >PUSHWI K.S.Stat pla - jsr K.FStat bcs .11 @@ -124,7 +123,8 @@ FIO.Mem .BS 2 * ## RETURN VALUE *\-------------------------------------- K.ChTyp jsr PFT.CheckPathYA - jsr STDIO.SetMLIPathYA + bcs .99 + >PULLB .1+1 >MLICALL MLIGETFILEINFO bcs .9 @@ -133,6 +133,8 @@ K.ChTyp jsr PFT.CheckPathYA sta K.MLI.PARAMS+S.FI.T >MLICALL MLISETFILEINFO .9 rts + +.99 >RET 1 discard filetype */-------------------------------------- * # ChMod * **In:** diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index d529601e..1b34f387 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -18,19 +18,14 @@ K.Open.FLAGS .BS 1 K.Open.TYPE .BS 1 K.Open.AUXTYPE .BS 2 *-------------------------------------- -K.Open pha - >PULLB K.Open.FLAGS +K.Open >PULLB K.Open.FLAGS lda #S.FI.T.TXT sta K.Open.TYPE stz K.Open.AUXTYPE stz K.Open.AUXTYPE+1 - - pla -IO.Open.I jsr STDIO.SetMLIPathYA - - ldx #5 $/DEV/ +IO.Open.I ldx #5 $/DEV/ cpx K.MLI.PATH bcs IO.OPEN.REG diff --git a/SYS/KERNEL.S.PFT.txt b/SYS/KERNEL.S.PFT.txt index 011160c1..ce7c5677 100644 --- a/SYS/KERNEL.S.PFT.txt +++ b/SYS/KERNEL.S.PFT.txt @@ -23,79 +23,119 @@ K.PFTRemove * Y,A = PATH (C-String) * Out : *-------------------------------------- -PFT.CheckPathYA >STYA ZPPtr1 +PFT.CheckPathYA stx .71+1 Save SYSCALL # + jsr K.realpath.I realpath in K.Buf256 + bcs .9 >LDYAI Flt.Table - >STYA ZPPtr2 + >STYA ZPPtr1 -.1 lda (ZPPtr2) Get Filter char.... - beq .9 End Of Table, Exit +.1 lda (ZPPtr1) Get Filter char.... + beq PFT.YAToMLIPATH ldy #0 -.2 lda (ZPPtr2),y +.2 lda (ZPPtr1),y beq .3 end of filter string.... - lda (ZPPtr1),y + lda K.Buf256,y beq .8 - cmp (ZPPtr2),y + cmp (ZPPtr1),y bne .8 iny bne .2 -.3 lda (ZPPtr1),y +.3 lda K.Buf256,y cmp #'/' bne .8 ldy #S.PFT.HANDLER - lda (ZPPtr2),y get hLib + lda (ZPPtr1),y get hLib jsr K.GetMemPtr - >STYA .7+1 + >STYA .72+1 pla discard JSR return @ pla - >LDYA ZPPtr1 restore passed params -.7 jmp $ffff X unmodified + >LDYAI K.Buf256 pass full path to handler +.71 ldx #$ff SELF MODIFIED SYSCALL # +.72 jmp $ffff +.9 rts -.8 lda ZPPtr2 +.8 lda ZPPtr1 clc - adc (ZPPtr2) Add STR len + adc (ZPPtr1) Add STR len adc #S.PFT - sta ZPPtr2 + sta ZPPtr1 bcc .1 + >LDYAI K.Buf256 +*-------------------------------------- +PFT.YAToMLIPATH >STYA .1+1 -.9 >LDYA ZPPtr1 restore passed params + ldx #0 no filter, prodos path + +.1 lda $ffff,x SELF MODIFIED + beq .2 + + inx + sta K.MLI.PATH,x + cpx #MLI.MAXPATH + bne .1 + +.2 stx K.MLI.PATH + inx + stz K.MLI.PATH,x Make ending 0 for /dev/xxx path + + >LDYAI K.MLI.PATH + >STYA K.MLI.PARAMS+1 + clc rts *-------------------------------------- * PFT.CheckNodeA * In : -* PULLB/A = hFILE/hDIR +* A = hFILE * Out : *-------------------------------------- -PFT.CheckNodeA rts +PFT.CheckNodeA stx .80+1 Save SYSCALL # + sta .81+1 Save hFILE - sta .9+1 save hFILE - - jsr K.GetMemPtr X = unmodified - >STYA ZPPtr1 + tax + lda Nod.Table.hFD,x + beq .9 + + jsr K.GetMemPtr + >STYA pFD ldy #S.FD.HANDLER - lda (ZPPtr1),y - beq .9 Handler is 0, back to kernel.... - + lda (pFD),y + beq .8 Handler is 0, back to kernel.... + jsr K.GetMemPtr >STYA .1+1 pla discard JSR return @ pla - lda .9+1 restore passed hFILE + ldx .80+1 restore SYSCALL # + lda .81+1 restore passed hFILE + .1 jmp $ffff +.8 lda (pFD) #S.FD.T + bne .80 -.9 lda #$ff Self Modified + ldy #S.FD.REG.REF + lda (pFD),y + sta K.MLI.PARAMS+1 + +.80 ldx #$ff SELF MODIFIED +.81 lda #$ff SELF MODIFIED + clc + rts + +.9 lda #E.INVH + sec rts *-------------------------------------- MAN diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index b7330899..b0662912 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -14,17 +14,24 @@ AUTO 4,1 * ## RETURN VALUE *-------------------------------------- K.FStat jsr PFT.CheckNodeA - jsr STDIO.GetHFile - bcs .9 + bcs K.FStat.9 + tax lda Nod.Table.hPath,x jsr K.GetMemPtr - jsr K.Stat.I + + jsr PFT.YAToMLIPATH + + jsr K.Stat.I bcs K.Stat.9 - jsr STDIO.GetHFileREG.I - bcs K.Stat.BLK2SIZE + lda (pFD) #S.FD.T + bne K.Stat.BLK2SIZE + ldy #S.FD.REG.REF + lda (pFD),y + sta K.MLI.PARAMS+1 + >MLICALL MLIGETEOF bcs K.Stat.BLK2SIZE @@ -43,7 +50,7 @@ K.FStat jsr PFT.CheckNodeA * clc rts -.9 >RET 2 discard statbuf +K.FStat.9 >RET 2 discard statbuf */-------------------------------------- * # Stat * Return information about a file @@ -57,6 +64,8 @@ K.FStat jsr PFT.CheckNodeA * ## RETURN VALUE *\-------------------------------------- K.Stat jsr PFT.CheckPathYA + bcs K.FStat.9 go discard statbuf + jsr K.Stat.I bcs K.Stat.9 K.Stat.BLK2SIZE @@ -85,9 +94,7 @@ K.Stat.BLK2SIZE * clc K.Stat.9 rts -K.Stat.I jsr STDIO.SetMLIPathYA - - >PULLW ZPPtr1 +K.Stat.I >PULLW ZPPtr1 Get StatBuf >MLICALL MLIGETFILEINFO bcs .9 @@ -140,13 +147,9 @@ K.Stat.DST .DA #S.STAT.P.TYPE * CS : error * A = EC *\------------------------------------- -K.MKDir jsr K.realpath.I +K.MKDir jsr PFT.CheckPathYA bcs K.MKDir.RTS - >LDYAI K.Buf256 - jsr PFT.CheckPathYA - jsr STDIO.SetMLIPathYA - lda #S.FI.A.FULL sta K.MLI.PARAMS+S.FI.A lda #S.FI.T.DIR diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 675d251f..9be13025 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -12,6 +12,22 @@ K.PrintF.PadL .EQ FAC+4 K.PrintF.PadC .EQ FAC+5 BCDBUF .EQ ARG */-------------------------------------- +* # PutChar +* Print A (char) to StdOut +* ## C +* `int putchar ( int character );` +* ## ASM +* **In:** +* `lda caracter` +* `>SYSCALL putchar` +* ## RETURN VALUE +* CC = success +*\-------------------------------------- +K.PutChar >PUSHA + + ldy #S.PS.hStdOut + lda (pPs),y +*/-------------------------------------- * # FPutC * Print A (char) to hFILE * ## C @@ -24,36 +40,19 @@ BCDBUF .EQ ARG * ## RETURN VALUE * CC = success *\-------------------------------------- -K.FPutC pha - >PULLB K.IOBuf - pla - bra K.PutChar.1 -*/-------------------------------------- -* # PutChar -* Print A (char) to StdOut -* ## C -* `int putchar ( int character );` -* ## ASM -* **In:** -* `lda caracter` -* `>SYSCALL putchar` -* ## RETURN VALUE -* CC = success -*\-------------------------------------- -K.PutChar sta K.IOBuf - - ldy #S.PS.hStdOut - lda (pPs),y +K.FPutC jsr PFT.CheckNodeA + bcs K.FPutC.9 -K.PutChar.1 jsr STDIO.GetHFile - bcs K.PutS.RTS + >PULLB K.IOBuf ldy #1 -K.PutChar.Y lda #0 + +K.FPutC.Y lda #0 >PUSHYA >PUSHWI K.IOBuf jmp IO.Write.I +K.FPutC.9 >RET 1 */-------------------------------------- * # PutS * Write Str to StdOut, appends '\r\n' @@ -70,6 +69,7 @@ K.PutS >PUSHYA ldy #S.PS.hStdOut lda (pPs),y + jsr K.FPutS bcs K.PutS.RTS @@ -79,7 +79,7 @@ K.PutS >PUSHYA sta K.IOBuf+1 ldy #2 - bra K.PutChar.Y + bra K.FPutC.Y K.PutS.RTS rts */-------------------------------------- @@ -95,8 +95,8 @@ K.PutS.RTS rts * ## RETURN VALUE * CC = success *\-------------------------------------- -K.FPutS jsr STDIO.GetHFile - bcs K.PutS.RTS +K.FPutS jsr PFT.CheckNodeA + bcs .9 >PULLYA Get String >STYA ZPPtr2 Save Buffer @@ -104,13 +104,14 @@ K.FPutS jsr STDIO.GetHFile >PUSHYA push len >PUSHW ZPPtr2 push buffer jmp IO.Write.I +.9 >RET 2 */-------------------------------------- * # PrintF/SPrintF/FPrintF * Prints C-Style String * ## C * `int printf ( const char * format, ... );` -* `int sprintf ( char * str, const char * format, ... );` * `int fprintf ( hFILE stream, const char * format, ... );` +* `int sprintf ( char * str, const char * format, ... );` * ## ASM * **In:** * PrintF : (example is for printing Y,A as integer : format="%I", 2 bytes) @@ -182,8 +183,7 @@ K.PrintF >STYA ZPPtr1 format ldy #S.PS.hStdOut lda (pPs),y -K.PrintF.0 jsr STDIO.GetHFile - bcs K.PutS.RTS +K.PrintF.0 sta PrintF.Flush.DEV+1 >LDYAI K.IOBuf >STYA pIOBuf @@ -666,7 +666,12 @@ PrintF.COut phy *-------------------------------------- PrintF.Flush >PUSHW PrintF.Cnt >PUSHWI K.IOBuf +PrintF.Flush.DEV + lda #$ff SELF MODIFIED + jsr PFT.CheckNodeA + bcs .9 jmp IO.Write.I +.9 >RET 4 *-------------------------------------- PrintF.Cnt .BS 2 */-------------------------------------- @@ -687,7 +692,8 @@ PrintF.Cnt .BS 2 * Y,A: s * CC = success *\-------------------------------------- -K.FGetS pha save hFILE +K.FGetS jsr PFT.CheckNodeA + bcs .90 >PULLW ZPPtr1 s @@ -701,10 +707,6 @@ K.FGetS pha save hFILE eor #$ff sta ZPPtr2+1 !n - pla - jsr STDIO.GetHFile - bcs .99 - jsr K.GetC.I bcs .9 @@ -732,6 +734,8 @@ K.FGetS pha save hFILE sta (ZPPtr1) pla .99 rts + +.90 >RET 4 */-------------------------------------- * # GetChar * Get char from StdIn @@ -759,7 +763,7 @@ K.GetChar ldy #S.PS.hStdIn * CC = success * A = char *\-------------------------------------- -K.GetC jsr STDIO.GetHFile +K.GetC jsr PFT.CheckNodeA bcs K.GetC.9 K.GetC.I >PUSHWI 1 @@ -970,36 +974,33 @@ K.SScanF.Fwd tya Y=char count parsed * CC : A = hFILE * CS : A = EC *\-------------------------------------- -K.FOpen jsr K.realpath.I - bcc .1 - - >RET 4 - -.1 >LDYAI K.Buf256 - jsr PFT.CheckPathYA +K.FOpen jsr PFT.CheckPathYA + bcs .99 + >PULLB K.Open.FLAGS >PULLB K.Open.TYPE >PULLW K.Open.AUXTYPE - >LDYAI K.Buf256 jsr IO.Open.I - bcs K.FOpen.RTS + bcs .9 - sta .2+1 save hFD + sta .1+1 save hFD tax >LDYAI K.Buf256 jsr STDIO.NewHFileYAX - bcc K.FOpen.RTS + bcc .9 pha save MLI error -.2 lda #$ff SELF MODIFIED +.1 lda #$ff SELF MODIFIED jsr K.Close pla get back MLI error sec -K.FOpen.RTS rts +.9 rts + +.99 >RET 4 */-------------------------------------- * # FClose * Close a file @@ -1042,8 +1043,7 @@ K.FClose.RTS rts * Y,A = Bytes Read *\-------------------------------------- K.FRead jsr PFT.CheckNodeA - jsr STDIO.GetHFile - bcs K.FClose.RTS + bcs K.Write.9 jmp IO.Read.I */-------------------------------------- @@ -1061,10 +1061,10 @@ K.FRead jsr PFT.CheckNodeA * Y,A = Bytes Written *\-------------------------------------- K.FWrite jsr PFT.CheckNodeA - jsr STDIO.GetHFile - bcs K.FClose.RTS + bcs K.Write.9 jmp IO.Write.I +K.Write.9 >RET 4 */-------------------------------------- * # FFlush * ## C @@ -1075,7 +1075,6 @@ K.FWrite jsr PFT.CheckNodeA * `>SYSCALL fflush` *\-------------------------------------- K.FFlush jsr PFT.CheckNodeA - jsr STDIO.GetHFileREG bcs .9 >MLICALL MLIFLUSH .9 rts @@ -1092,10 +1091,11 @@ K.FFlush jsr PFT.CheckNodeA * `>SYSCALL fseek` *\------------------------------------- K.FSeek jsr PFT.CheckNodeA - jsr STDIO.GetHFileREG - bcs .9 + bcc .11 + + >RET 6 - >PULLA whence +.11 >PULLA whence tax >PULLW ZPPtr1 offset LW >PULLW ZPPtr2 offset HW @@ -1167,7 +1167,6 @@ K.FSeek jsr PFT.CheckNodeA * CS : *\-------------------------------------- K.FEOF jsr PFT.CheckNodeA - jsr STDIO.GetHFileREG bcs .9 >MLICALL MLIGETMARK @@ -1208,7 +1207,7 @@ K.FEOF.MARK .BS 3 * On stack (long) *\-------------------------------------- K.FTell jsr PFT.CheckNodeA - jsr STDIO.GetHFileREG + bcs .9 >MLICALL MLIGETMARK bcs .9 @@ -1235,9 +1234,10 @@ K.FTell jsr PFT.CheckNodeA * ## RETURN VALUE *\-------------------------------------- K.Remove jsr PFT.CheckPathYA - jsr STDIO.SetMLIPathYA + bcs .9 + >MLICALL MLIDESTROY - rts +.9 rts */-------------------------------------- * # Rename * Rename a file @@ -1251,7 +1251,8 @@ K.Remove jsr PFT.CheckPathYA * ## RETURN VALUE *\-------------------------------------- K.Rename jsr PFT.CheckPathYA - jsr STDIO.SetMLIPathYA + bcs .9 + >PULLW .1+1 ldy #0 @@ -1269,6 +1270,8 @@ K.Rename jsr PFT.CheckPathYA >MLICALL MLIRENAME rts + +.9 >RET 2 *-------------------------------------- * Y,A = filepath * X = hFD @@ -1307,51 +1310,6 @@ STDIO.NewHFileYAX clc .9 rts -*-------------------------------------- -STDIO.GetHFileREG - jsr STDIO.GetHFile - bcs STDIO.GetHFileREG.9 -STDIO.GetHFileREG.I - lda (pFD) #S.FD.T - bne STDIO.GetHFile.9 - - ldy #S.FD.REG.REF - lda (pFD),y - sta K.MLI.PARAMS+1 -STDIO.GetHFileREG.9 - rts -*-------------------------------------- -STDIO.GetHFile tay - lda Nod.Table.hFD,y - beq STDIO.GetHFile.9 - jsr K.GetMemPtr - >STYA pFD - rts - -STDIO.GetHFile.9 - lda #E.INVH - sec - rts -*-------------------------------------- -STDIO.SetMLIPathYA - >STYA .1+1 - - ldx #0 - -.1 lda $ffff,x Self Modified - beq .8 - inx - sta K.MLI.PATH,x - cpx #MLI.MAXPATH - bne .1 - -.8 stx K.MLI.PATH - inx - stz K.MLI.PATH,x Make ending 0 for /dev/xxx path - - >LDYAI K.MLI.PATH - >STYA K.MLI.PARAMS+1 - rts *-------------------------------------- STDIO.SetIOBUF >LDYAI 1024 get a ProDOS IOBUF ldx #S.MEM.F.ALIGN+S.MEM.F.NOMOVE