From ce366a221e6d3dc6160b6a31e4ba6f0cd6336992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 28 Feb 2019 16:45:33 +0000 Subject: [PATCH] Kernel 0.92+ --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/MEMDUMP.S.txt | 6 ++++-- SYS/KERNEL.S.CORE.txt | 34 +++++++++++++++---------------- SYS/KERNEL.S.DEV.txt | 2 +- SYS/KERNEL.S.DIRENT.txt | 17 ++++++---------- SYS/KERNEL.S.INIT.txt | 1 - SYS/KERNEL.S.IO.txt | 42 +++++++++++++++++++++------------------ SYS/KERNEL.S.STAT.txt | 7 ++----- SYS/KERNEL.S.STDIO.txt | 23 +++++++-------------- 9 files changed, 60 insertions(+), 72 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 15dadf1c7e34864ec6ad506612a3ade0adccca9a..dc3c4fff50f0233c456a399bf2cebccff175b725 100644 GIT binary patch delta 38655 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.G MemStat >LDYA L.MSG0 >SYSCALL puts + + >INC.G MEM.COUNT skip slot 0 CS.RUN.LOOP >LDA.G bSTOP beq .1 @@ -282,9 +284,9 @@ CS.QUIT clc rts *-------------------------------------- CS.END -MSG0 .AZ " # Flags PID REF PTR LEN BINPATH/DATA" +MSG0 .AZ "hMem Flags PID REF PTR LEN BINPATH/DATA" MSG1.INV .AZ "\e[7m" -MSG1 .AZ "$%h %s %3d %3d $%H %5D " +MSG1 .AZ "$%h %s %3d %3d $%H %5D " MSG1.BIN .AZ "{%s}\e[0m\r\n" MSG1.STR .AZ "[%03d:%s]\e[0m\r\n" MSG1.HEX .AZ "?HEX:%h%h.%h%h.%h%h.%h%h.%h%h.%h%h.%h%h.%h%h\e[0m\r\n" diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index d1aab3ef..d5a204cf 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -519,23 +519,7 @@ CORE.PSFree sta .10+1 Save PS ID bcs .9 >STYA ZPPtr1 - ldy #S.PS.hStdOut - lda (ZPPtr1),y - tax - lda OF.Table.hFD-1,x - bit #1 hDev ? - bne .11 - - jsr K.GetMemPtr hNod, get FD - >STYA pFD - lda (pFD) - cmp #S.FD.T.PIPE - bne .11 - - txa - >SYSCALL fclose - -.11 ldy #S.PS.hSS + ldy #S.PS.hSS jsr .8 ldy #S.PS.hDS @@ -556,7 +540,23 @@ CORE.PSFree sta .10+1 Save PS ID .1 ldy #S.PS.hPREFIX jsr .8 + + ldy #S.PS.hStdOut + lda (ZPPtr1),y + tax + lda OF.Table.hFD-1,x + bit #1 hDev ? + bne .10 + + jsr K.GetMemPtr hNod, get FD + >STYA pFD + lda (pFD) + cmp #S.FD.T.PIPE + bne .10 + txa + >SYSCALL fclose + .10 lda #$ff Self Modified ldx #0 diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 99890e68..a1390d81 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -7,7 +7,7 @@ AUTO 4,1 * ## RETURN VALUE * CC = OK, CS = ERROR * Y,A = FD -* X = DevID +* X = hDev *\-------------------------------------- K.GetDevByName >STYA ZPPtr1 requested dev name diff --git a/SYS/KERNEL.S.DIRENT.txt b/SYS/KERNEL.S.DIRENT.txt index aaf30bb3..e023fe69 100644 --- a/SYS/KERNEL.S.DIRENT.txt +++ b/SYS/KERNEL.S.DIRENT.txt @@ -15,15 +15,15 @@ AUTO 4,1 * A = EC *\-------------------------------------- K.OpenDir jsr PFT.CheckPathYA - bcs .99 + bcs K.ReadDir.RTS >LDYAI S.FD.DIR ldx #S.MEM.F.INIT0+S.MEM.F.FD jsr MEM.GetMem.YAX - bcs .99 + bcs K.ReadDir.RTS >STYA pFD - stx .8+1 + stx IO.hFD ldy #S.FD.T lda #S.FD.T.DIR @@ -42,17 +42,12 @@ K.OpenDir jsr PFT.CheckPathYA jsr IO.MLIOPEN bcs .98 -.8 lda #$ff Self Modified +.8 lda IO.hFD jsr STDIO.NewHFile - bcc .99 + bcc K.ReadDir.RTS -.98 pha save MLI error - lda .8+1 - jsr K.Close - pla get back MLI error - sec -.99 rts +.98 jmp IO.OPEN.ERR */-------------------------------------- * # ReadDir * ## C diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index a27d5af8..a55cbdd8 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -141,7 +141,6 @@ Kernel.Init3 sta SETALTZP >PUSHBI S.FI.T.TXT >PUSHBI O.RDWR >LDYAI DEV.CONSOLE - >SYSCALL fopen bcs * diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index 48968bc6..7f6beeaf 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -17,7 +17,9 @@ AUTO 4,1 K.Open.FLAGS .BS 1 K.Open.TYPE .BS 1 K.Open.AUXTYPE .BS 2 +IO.hDev .BS 1 IO.hFD .BS 1 +IO.hFILE .BS 1 IO.Counter .BS 2 *-------------------------------------- K.Open jsr PFT.YAToMLIPATH @@ -65,7 +67,8 @@ IO.Open.I ldx #5 $/DEV/ lda Nod.Table.hFD-2,x return hFD sta IO.hFD jsr K.GetMemPtr - bra .7 + + bra .71 .3 inx cpx #K.NOD.MAX+2 @@ -75,12 +78,11 @@ IO.Open.I ldx #5 $/DEV/ * sec rts no OF found -.7 >STYA pFD - phx DEVID/NODID +.7 stx IO.hDev +.71 >STYA pFD lda (pFD) #S.FD.T tax - pla jmp (.8,x) .8 .DA STDIO.IOERR REG @@ -118,14 +120,14 @@ IO.OPEN.REG.E >LDYAI S.FD.REG bcs IO.OPEN.RTS >STYA pFD - stx .8+1 save hFD + stx IO.hFD * ldy #S.FD.T Done by GetMem0 * lda #S.FD.T.REG * sta (pFD),y jsr IO.MLIOPEN - bcs .9 + bcs IO.OPEN.ERR lda K.Open.FLAGS bit #O.WRONLY @@ -141,10 +143,10 @@ IO.OPEN.REG.E >LDYAI S.FD.REG bra .21 .11 >MLICALL MLIGETEOF - bcs .9 + bcs IO.OPEN.ERR >MLICALL MLISETMARK -.21 bcs .9 +.21 bcs IO.OPEN.ERR .20 lda K.Open.FLAGS and #O.TEXT Text Mode ? @@ -155,29 +157,27 @@ IO.OPEN.REG.E >LDYAI S.FD.REG lda #C.CR sta K.MLI.PARAMS+3 >MLICALL MLINEWLINE - bcs .9 + bcs IO.OPEN.ERR -.8 lda #$ff SELF MODIFIED +.8 lda IO.hFD rts -.9 pha Save Error Code - lda .8+1 +IO.OPEN.ERR pha Save Error Code + lda IO.hFD jsr K.Close pla sec rts *-------------------------------------- IO.OPEN.CDEV -IO.OPEN.BDEV sta .1+1 A=DEVID - pha - jsr K.IOCTL.GetPDrv +IO.OPEN.BDEV jsr K.IOCTL.GetPDrv ldx #IOCTL.OPEN - pla pass A=DEVID To Driver + lda IO.hDev jsr K.IOCTL.pDrvJmp bcs .9 -.1 lda #$ff SELF MODIFIED + lda IO.hDev .9 rts *-------------------------------------- @@ -254,6 +254,7 @@ IO.CLOSE.SSOCK rts *-------------------------------------- IO.CLOSE.PIPE ldy #S.FD.PIPE.S + lda (pFD),y bmi .1 remote PS closed its end @@ -290,6 +291,9 @@ IO.CLOSE.NOD ldx #2 .2 inx cpx #K.Nod.MAX+2 bne .1 + + lda #E.INVH +* sec rts */-------------------------------------- * # read (BLOCKING) @@ -419,7 +423,7 @@ IO.READ.SSOCK ldy #S.FD.SSOCK.READ * (pStack)+0 buf *-------------------------------------- IO.READ.PIPE ldy #S.FD.PIPE.Used+1 - + lda (pFD),y Data ? dey ora (pFD),y @@ -436,7 +440,7 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1 rts .10 >PULLW .3+1 get buf - + >PULLA get cnt lo eor #$ff sta IO.Counter diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index be701716..b9537ff8 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -255,7 +255,7 @@ K.MKFIFO * jsr K.pipe * bcs .9 -* sta K.S.STAT+S.STAT.DEV +* sta IO.hFD * stz K.S.STAT+S.STAT.MODE * stz K.S.STAT+S.STAT.MODE+1 @@ -264,10 +264,7 @@ K.MKFIFO * jsr K.MkNod.I * bcc .9 -* pha -* lda K.S.STAT+S.STAT.DEV -* jsr K.Close -* pla +* jmp IO.OPEN.ERR sec rts diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 1f923b99..553c8803 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -1072,19 +1072,12 @@ K.FOpen jsr PFT.CheckPathYA >PULLW K.Open.AUXTYPE jsr IO.Open.I - bcs .9 + bcs K.FClose.RTS - sta .1+1 save hFD - jsr STDIO.NewHFile - bcc .9 + bcc K.FClose.RTS - pha save MLI error -.1 lda #$ff SELF MODIFIED - jsr K.Close - pla get back MLI error - sec -.9 rts + jmp IO.Open.ERR K.FOpen.RET4 >RET 4 */-------------------------------------- @@ -1099,25 +1092,23 @@ K.FOpen.RET4 >RET 4 * ## RETURN VALUE *\-------------------------------------- K.FClose jsr PFT.CheckNodeA - bcs .9 + bcs K.FClose.RTS sta .1+1 store hFile jsr IO.Close.I - bcs .9 + bcs K.FClose.RTS .1 ldx #$ff SELF MODIFIED stz OF.Table.hFD-1,x lda OF.Table.hPath-1,x - beq .9 special files have no path + beq K.FClose.RTS special files have no path stz OF.Table.hPath-1,x jmp K.FreeMem discard filename - -* clc -.9 rts +K.FClose.RTS rts */-------------------------------------- * # FRead (BLOCKING) * Read bytes from file