From 8fa59957fe1aa5b17b95df25b8bb12152eaacb4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sun, 13 Jan 2019 13:10:14 +0000 Subject: [PATCH] Kernel 0.92 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/LSDEV.S.txt | 29 +++++++------ INC/KERNEL.I.txt | 3 +- SYS/KERNEL.S.CORE.txt | 37 +++++----------- SYS/KERNEL.S.DEV.txt | 89 +++++++++++++++++++++++++-------------- SYS/KERNEL.S.DIRENT.txt | 5 +-- SYS/KERNEL.S.GP.txt | 17 ++++++++ SYS/KERNEL.S.INIT.txt | 43 ++++++++----------- SYS/KERNEL.S.IO.txt | 27 +++++++----- SYS/KERNEL.S.PFT.txt | 11 ++++- SYS/KERNEL.S.STDIO.txt | 26 ++++++------ SYS/KERNEL.S.TERM.txt | 9 +++- SYS/KERNEL.S.txt | 2 +- 13 files changed, 167 insertions(+), 131 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index ea94670eb5e00e57f3481432e4620274a9952859..593b1ed3cfda0d0f661530c9c0494a431603d8cf 100644 GIT binary patch delta 44556 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 diff --git a/BIN/LSDEV.S.txt b/BIN/LSDEV.S.txt index 3ea6b671..c7f0ff03 100644 --- a/BIN/LSDEV.S.txt +++ b/BIN/LSDEV.S.txt @@ -77,23 +77,22 @@ DumpDev >LDYA L.MSG0 >LDA.G Table.Index .1 tax - lda Dev.Table.hFD,x - beq .7 - - >STA.G DEV.FD - >SYSCALL GetMemPtr - >STYA ZPFDPtr S.FD + lda Dev.Table,x + sta ZPFDPtr + lda Dev.Table+1,x + sta ZPFDPtr+1 + beq .8 jsr DumpDevFD bcs .9 >PUSHEA.G DEV.DIB - >LDA.G DEV.FD + >LDA.G Table.Index >SYSCALL GetDevStatus bcc .6 >PUSHA - >PUSHBI 6 + >PUSHBI 1 >LDYA L.MSG2.ERR >SYSCALL printf @@ -103,10 +102,11 @@ DumpDev >LDYA L.MSG0 .6 jsr DumpDevDIB .7 >INC.G Table.Index + >INC.G Table.Index cmp #K.DEV.MAX bne .1 - clc +.8 clc .9 rts *-------------------------------------- DumpDevFD ldy #S.FD.DEV.DRVPTR+1 @@ -115,10 +115,13 @@ DumpDevFD ldy #S.FD.DEV.DRVPTR+1 dey >PUSHB (ZPFDPtr),y - >LDA.G Table.Index - tax - lda Dev.Table.hPath,x - >SYSCALL GetMemPtr + lda ZPFDPtr + clc + adc #S.FD.DEV + tay + lda ZPFDPtr+1 + adc /S.FD.DEV + >PUSHYA >PUSHB.G DEV.FD diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index ff3e5f97..f17e3d3d 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -3,8 +3,7 @@ PREFIX AUTO 4,1 .LIST OFF *-------------------------------------- -Dev.Table.hPath .EQ $1300 K.Dev.MAX -Dev.Table.hFD .EQ $131C K.Dev.MAX +Dev.Table .EQ $1300 K.Dev.MAX*2 *-------------------------------------- Flt.Table.hPath .EQ $1338 K.FLT.MAX Flt.Table.hLib .EQ $133C K.FLT.MAX diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 2b387f91..529f2a28 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -349,7 +349,8 @@ CORE.GetPSByID tay lda PS.TABLE.hPS,y jmp K.GetMemPtr -.8 >LDYAI CORE.S.PS0 Select PS0 +.8 lda CORE.hPS0 + jsr K.GetMemPtr CORE.GetPSByID.8 clc CORE.GetPSByID.RTS @@ -367,7 +368,7 @@ CORE.GetPS ldy #0 .9 lda #E.NSP * sec - rts +CORE.GetPS.RTS rts *-------------------------------------- *CORE.DumpEvent ldy #S.EVT-1 @@ -383,20 +384,18 @@ CORE.GetPS ldy #0 CORE.ScrSel and #$0F tax lda A2osX.SCRNDEVS,x Get DevID - beq .8 No device claimed this screen + beq CORE.GetPS.RTS No device claimed this screen cmp A2osX.ASCREEN Same as active screen...nothing to do - beq .8 + beq CORE.GetPS.RTS - tax + pha >PUSHWI 0 Param >PUSHBI IOCTL.CONTROL request - lda Dev.Table.hFD,x + pla - jsr K.IOCTL - -.8 rts + jmp K.IOCTL *-------------------------------------- CORE.DestroyEvent lda (pEvent) @@ -423,7 +422,8 @@ CORE.DestroyEvent dec CORE.EvtCount .9 rts *-------------------------------------- -CORE.PSSelect0 >LDYAI CORE.S.PS0 Select PS0 +CORE.PSSelect0 lda CORE.hPS0 + jsr K.GetMemPtr >STYA pPs >LDYAI K.STACKTOP @@ -531,23 +531,6 @@ DevMgr.Free .DA DevMgr.FreeMem DevMgr.DevCnt .DA #0 DevMgr.NodCnt .DA #0 *-------------------------------------- -CORE.VBLState .BS 1 -CORE.IRQMode .BS 1 -CORE.TickPerSec .BS 1 -CORE.TickPer10t .BS 1 -CORE.TickSec .BS 1 -CORE.Tick10t .BS 1 -CORE.CPUStatCnt .DA #100 -CORE.InKernelHits .BS 1 -CORE.InKernelStats .BS 1 -*-------------------------------------- -CORE.EvtIndex .BS 1 -CORE.EvtCount .BS 1 -CORE.PSIndex .BS 1 -CORE.PSCount .DA #0 -CORE.LastPSID .DA #0 -CORE.S.PS0 .BS S.PS.hStdErr+1 -*-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.CORE LOAD USR/SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 9a6ed750..cf556977 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -9,30 +9,39 @@ AUTO 4,1 * Y,A = FD * X = DevID *\-------------------------------------- -K.GetDevByName >STYA ZPPtr1 +K.GetDevByName >STYA ZPPtr1 requested dev name ldx #0 -.1 lda Dev.Table.hPath,x - beq K.GetDev.NODEV - jsr K.GetMemPtr +.1 lda Dev.Table,x + sta .3+1 + clc + adc #S.FD.DEV + sta ZPPtr2 - >STYA ZPPtr2 + lda Dev.Table+1,x + beq K.GetDev.NODEV + sta .4+1 + adc /S.FD.DEV + sta ZPPtr2+1 ldy #$ff .2 iny lda (ZPPtr1),y cmp (ZPPtr2),y - bne .4 + bne .7 ora (ZPPtr2),y Both char are 0 ? bne .2 no....loop - lda Dev.Table.hFD,x - jmp K.GetMemPtr +.3 ldy #$ff SELF MODIFIED +.4 lda #$ff SELF MODIFIED + clc + rts -.4 inx +.7 inx + inx cpx DevMgr.DevCnt bne .1 @@ -42,18 +51,21 @@ K.GetDev.9 rts */-------------------------------------- * # GetDevStatus * ## C -* `int getdevstatus(short int hFD, S.DIB* dstat);` +* `int getdevstatus(short int hDEV, S.DIB* dstat);` * ## ASM * `>PUSHWI S.DIB` * `lda DevID` * `>SYSCALL GetDevStatus` * ## RETURN VALUE *\-------------------------------------- -K.GetDevStatus jsr K.GetMemPtr - >STYA pFD - +K.GetDevStatus tax >PULLW K.S.IOCTL+S.IOCTL.BUFPTR + lda Dev.Table+1,x + beq K.GetDev.NODEV + ldy Dev.Table,x + >STYA pFD + lda #S.IOCTL.STATCODE.GETDIB K.GetDevStatus.I sta K.S.IOCTL+S.IOCTL.STATCODE @@ -82,22 +94,43 @@ K.MKDev jsr MEM.SPtr1PPtr2 ptr1=fd, ptr2=name cpx #K.DEV.MAX beq .9 - >LDYAI S.FD.DEV - ldx #S.MEM.F.FD - jsr MEM.GetMem.YAX + ldy #$ff + ldx #S.FD.DEV + +.1 iny Get DEV name length + inx compute FD+NAME+\0 in X + lda (ZPPtr2),y + bne .1 + + txa + tay + lda #0 + + jsr MEM.GetKrnlBuf bcs .99 >STYA pFD - txa + >STYA .4+1 ldx DevMgr.DevCnt - sta Dev.Table.hFD,x + sta Dev.Table+1,x + tya + sta Dev.Table,x ldy #S.FD.DEV-1 -.1 lda (ZPPtr1),y +.2 lda (ZPPtr1),y sta (pFD),y dey - bpl .1 + bpl .2 + + ldy #$ff + ldx #S.FD.DEV-1 + +.3 iny + inx + lda (ZPPtr2),y +.4 sta $ffff,x + bne .3 >LDYAI K.IOBuf >STYA K.S.IOCTL+S.IOCTL.BUFPTR @@ -113,13 +146,13 @@ K.MKDev jsr MEM.SPtr1PPtr2 ptr1=fd, ptr2=name ldx #0 -.3 lda IRQ.Vectors+1,x +.5 lda IRQ.Vectors+1,x beq .7 inx inx cpx #K.IRQDEV.MAX*2 - bne .3 + bne .5 .9 lda #E.OOH * sec @@ -130,16 +163,8 @@ K.MKDev jsr MEM.SPtr1PPtr2 ptr1=fd, ptr2=name lda pFD+1 sta IRQ.Vectors+1,x -.8 >LDYA ZPPtr2 - >SYSCALL StrDup - bcs .99 - txa - - ldx DevMgr.DevCnt - sta Dev.Table.hPath,x - - txa - +.8 lda DevMgr.DevCnt + inc DevMgr.DevCnt inc DevMgr.DevCnt * clc rts diff --git a/SYS/KERNEL.S.DIRENT.txt b/SYS/KERNEL.S.DIRENT.txt index f7f40650..6e59a495 100644 --- a/SYS/KERNEL.S.DIRENT.txt +++ b/SYS/KERNEL.S.DIRENT.txt @@ -50,9 +50,8 @@ K.OpenDir jsr PFT.CheckPathYA ldy #S.FD.DIR.REF sta (pFD),y -.8 ldx #$ff Self Modified - >LDYAI K.Buf256 - jsr STDIO.NewHFileYAX +.8 lda #$ff Self Modified + jsr STDIO.NewHFile bcc .99 diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index ca52f573..7c8df336 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -343,6 +343,23 @@ GP.IrqH.Exit stz IRQ.SkipA2osX reset flag sec rts *-------------------------------------- +CORE.VBLState .BS 1 +CORE.IRQMode .BS 1 +CORE.TickPerSec .BS 1 +CORE.TickPer10t .BS 1 +CORE.TickSec .BS 1 +CORE.Tick10t .BS 1 +CORE.CPUStatCnt .DA #100 +CORE.InKernelHits .BS 1 +CORE.InKernelStats .BS 1 +*-------------------------------------- +CORE.EvtIndex .BS 1 +CORE.EvtCount .BS 1 +CORE.PSIndex .BS 1 +CORE.PSCount .DA #0 +CORE.LastPSID .DA #0 +CORE.hPS0 .BS 1 +*-------------------------------------- IRQ.Mode .BS 1 IRQ.SkipA2osX .BS 1 IRQ.Tick .BS 1 diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index ad1fcc78..efaae82c 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -112,8 +112,10 @@ Kernel.Init3 sta SETALTZP jsr MemMgrInit - >LDYAI CORE.S.PS0 Select Process 0 (Kernel) + >LDYAI S.PS Select Process 0 (Kernel) + jsr K.GetMem0 >STYA pPs + stx CORE.hPS0 >LDYAI K.STACKTOP >STYA pStack @@ -131,13 +133,25 @@ Kernel.Init3 sta SETALTZP lda #"P" sta SYS.BASL0+38 - jsr PS0.Init + >PUSHWI 0 Aux type + >PUSHBI S.FI.T.TXT + >PUSHBI O.RDWR + + >LDYAI DEV.CONSOLE + >SYSCALL fopen bcs * + + ldy #S.PS.hStdIn + sta (pPs),y + iny #S.PS.hStdOut + sta (pPs),y + iny #S.PS.hStdErr + sta (pPs),y lda #"I" sta SYS.BASL0+38 *-------------------------------------- - >LDYAI MSG.Init3 +Kernel.Init3C >LDYAI MSG.Init3 >SYSCALL puts jsr CPU.Init.6502 @@ -279,7 +293,7 @@ MemMgrInit >LDYAI Mem.MHiMem ldx #K.DEV.MAX*2-1 -.1 stz Dev.Table.hPath,x +.1 stz Dev.Table,x dex bpl .1 @@ -392,27 +406,6 @@ SysScrInit.TTYPtrs rts *-------------------------------------- -PS0.Init >PUSHWI 0 Aux type - >PUSHBI S.FI.T.TXT - >PUSHBI O.RDWR - - >LDYAI DEV.CONSOLE - >SYSCALL fopen - bcs .9 - - ldy #S.PS.hStdIn - sta (pPs),y - sta CORE.S.PS0+S.PS.hStdIn - iny #S.PS.hStdOut - sta (pPs),y - sta CORE.S.PS0+S.PS.hStdOut - iny #S.PS.hStdErr - sta (pPs),y - sta CORE.S.PS0+S.PS.hStdErr - -* clc -.9 rts -*-------------------------------------- CPU.Init.6502 >PUSHBI 0 >LDYAI MSG.CPU >SYSCALL printf diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index f7e980af..d79cf148 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -40,7 +40,7 @@ IO.Open.I ldx #5 $/DEV/ * /DEV/xxxxxx (CDEV,BDEV,LNK,DSOCK,SSOCK,PIPE) *-------------------------------------- >LDYAI K.MLI.PATH+6 skip $/DEV/ - + jsr K.GetDevByName bcc .7 @@ -83,7 +83,7 @@ IO.Open.I ldx #5 $/DEV/ .8 .DA STDIO.IOERR REG .DA STDIO.IOERR DIR .DA IO.OPEN.CDEV - .DA STDIO.IOERR BDEV + .DA IO.OPEN.BDEV .DA STDIO.IOERR LNK .DA IO.OPEN.DSOCK .DA IO.OPEN.SSOCK @@ -173,7 +173,8 @@ IO.OPEN.REG.E >LDYAI S.FD.REG sec rts *-------------------------------------- -IO.OPEN.CDEV sta .1+1 A=DEVID +IO.OPEN.CDEV +IO.OPEN.BDEV sta .1+1 A=DEVID pha jsr K.IOCTL.GetPDrv @@ -182,8 +183,8 @@ IO.OPEN.CDEV sta .1+1 A=DEVID jsr K.IOCTL.pDrvJmp bcs .9 -.1 ldx #$ff SELF MODIFIED - lda Dev.Table.hFD,x +.1 lda #$ff SELF MODIFIED + .9 rts *-------------------------------------- IO.OPEN.DSOCK @@ -431,19 +432,22 @@ IO.WRITE.PIPE >PULLW K.S.IOCTL+S.IOCTL.BUFPTR */-------------------------------------- * # IOCTL * ## C -* `int ioctl(short int hFD, int request, void * param );` +* `int ioctl(short int DevID, int request, void * param );` * ## ASM * `PUSHWI param` * `PUSHBI request` -* `lda hFD` +* `lda hDEV` * `>SYSCALL IOCTL` * ## RETURN VALUE * Y,A = ... *\-------------------------------------- -K.IOCTL jsr K.GetMemPtr - bcs K.IOCTL.9 +K.IOCTL tax + lda Dev.Table+1,x + beq K.IOCTL.9 - >STYA pFD + sta pFD+1 + lda Dev.Table,x + sta pFD jsr K.IOCTL.GetPDrv @@ -454,7 +458,8 @@ K.IOCTL jsr K.GetMemPtr K.IOCTL.pDrvJmp jmp (pDrv) -K.IOCTL.9 lda #MLI.E.NODEV +K.IOCTL.9 sec + lda #MLI.E.NODEV >RET 3 *-------------------------------------- K.IOCTL.GetPDrv ldy #S.FD.DEV.DRVPTR diff --git a/SYS/KERNEL.S.PFT.txt b/SYS/KERNEL.S.PFT.txt index 5bf2f2a4..4a501dc6 100644 --- a/SYS/KERNEL.S.PFT.txt +++ b/SYS/KERNEL.S.PFT.txt @@ -97,9 +97,16 @@ PFT.CheckNodeA stx .80+1 Save SYSCALL # beq .9 sta IO.hFD + ldy OF.Table.hPath,x if 0, its a hDEV + bne .10 - jsr K.GetMemPtr - >STYA pFD + tax + lda Dev.Table+1,x + ldy Dev.Table,x + bra .11 + +.10 jsr K.GetMemPtr +.11 >STYA pFD ldy #S.FD.HANDLER lda (pFD),y diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 6997141e..0d6ec49d 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -982,13 +982,9 @@ K.FOpen jsr PFT.CheckPathYA jsr IO.Open.I bcs .9 - tax + sta .1+1 save hFD - stx .1+1 save hFD - - >LDYAI K.Buf256 - - jsr STDIO.NewHFileYAX + jsr STDIO.NewHFile bcc .9 pha save MLI error @@ -1275,12 +1271,10 @@ K.Rename jsr PFT.CheckPathYA .9 >RET 2 *-------------------------------------- -* Y,A = filepath +* K.Buf256 = filepath * X = hFD *-------------------------------------- -STDIO.NewHFileYAX - pha - stx .4+1 Store hFD +STDIO.NewHFile sta .4+1 Store hFD ldx #0 @@ -1291,14 +1285,20 @@ STDIO.NewHFileYAX cpx #K.OF.MAX bne .1 - pla lda #E.OOH * sec rts -.2 stx .3+1 Store hFILE +.2 lda (pFD) + cmp #S.FD.T.CDEV + bcc .21 REG or DIR....store path - pla + stz OF.Table.hPath,x STZ path for SPECIAL files + bra .4 + +.21 stx .3+1 Store hFILE + + >LDYAI K.buf256 >SYSCALL strdup bcs .9 txa diff --git a/SYS/KERNEL.S.TERM.txt b/SYS/KERNEL.S.TERM.txt index f1c48eca..28f73b35 100644 --- a/SYS/KERNEL.S.TERM.txt +++ b/SYS/KERNEL.S.TERM.txt @@ -1134,8 +1134,13 @@ DRV.TERM.Title.ON ldy #S.DCB.TTY.DEVID lda (ZPDCBPtr),y tax - lda Dev.Table.hPath,x - jsr K.GetMemPtr + lda Dev.Table,x + clc + adc #S.FD.DEV + tay + lda Dev.Table+1,x + adc /S.FD.DEV + >STYA ZPTmpWord ldx #0 diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index bdd16f9a..3d520131 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -47,7 +47,6 @@ A2osX.D1 .PH $D000 .INB USR/SRC/SYS/KERNEL.S.STDLIB .INB USR/SRC/SYS/KERNEL.S.DEV .INB USR/SRC/SYS/KERNEL.S.FIO - .INB USR/SRC/SYS/KERNEL.S.PFT .EP A2osX.D2 .PH $D000 .DA #RRAMWRAMBNK2 @@ -66,6 +65,7 @@ A2osX.E0 .PH $E000 .INB USR/SRC/SYS/KERNEL.S.TERMLC ********* TMP ***** go to A2osX.D1 .INB USR/SRC/SYS/KERNEL.S.IO + .INB USR/SRC/SYS/KERNEL.S.PFT ********* TMP ***** go to A2osX.D2 .LIST ON DevMgr.FreeMem .EQ *