From c5ff44ac93383e509e263f19a14992db95de1b19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 10 Dec 2018 17:45:37 +0100 Subject: [PATCH] Kernel 0.92 --- BIN/LSDEV.S.txt | 4 +- DRV/CONSOLE.DRV.S.txt | 18 ++++- INC/A2osX.I.txt | 14 ++-- SYS/KERNEL.S.CORE.txt | 6 +- SYS/KERNEL.S.DEF.txt | 5 ++ SYS/KERNEL.S.DRV.txt | 27 +++++-- SYS/KERNEL.S.GP.txt | 3 +- SYS/KERNEL.S.INIT.txt | 159 ++++++++++++++++++++++++++---------------- 8 files changed, 155 insertions(+), 81 deletions(-) diff --git a/BIN/LSDEV.S.txt b/BIN/LSDEV.S.txt index 8d158267..aaa454fd 100644 --- a/BIN/LSDEV.S.txt +++ b/BIN/LSDEV.S.txt @@ -225,8 +225,8 @@ CS.QUIT clc rts *-------------------------------------- CS.END -MSG0 .AZ "ID hFD Name Addr. Status Typ/Sub IDString Version Size (BLK)" -MSG1 .AZ "%03d $%h %7s $%H " +MSG0 .AZ "ID hFD Name Addr. Status Typ/Sub IDString Version Size (BLK)" +MSG1 .AZ "%03d $%h %12s $%H " MSG2.ERR .AZ "Device Error : $%h\r\n" MSG2 .AZ "%s $%h/$%h %16S %03d.%03d " MSG2.B .AZ "%10u\r\n" diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index f3bbf2bb..cfc91d34 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -146,8 +146,21 @@ STATUS >STYA ZPIOCTL sec rts *-------------------------------------- -OPEN sta A2osX.SCRNDEVS DEV.ID in A +OPEN ldx #0 +.1 ldy A2osX.SCRNDEVS,x + beq .2 + + inx + cpx #K.SCR.MAX + bne .1 + + lda #E.OOH + sec + rts + +.2 sta A2osX.SCRNDEVS,x DEV.ID in A + sta DEVID lda #S.DIB.S.OPENED tsb DIB+S.DIB.S @@ -161,7 +174,7 @@ CONTROL sta SETTEXT sta SET80DISP sta CLR80STORE sta CLRPAGE2 - lda #1 + lda DEVID sta A2osX.ASCREEN clc @@ -1116,6 +1129,7 @@ SB.IS.NAWS .DA #IAC,#SB,#TELOPT.NAWS,#SB.IS .DA #IAC,#SE SB.IS.NAWS.LEN .EQ *-SB.IS.NAWS *-------------------------------------- +DEVID .BS 1 CH .BS 1 CV .BS 1 LWFLG .BS 1 diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 982ed422..2ff35cd7 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -13,6 +13,7 @@ K.PS.MAX .EQ 32 K.OF.MAX .EQ 32 K.FLT.MAX .EQ 4 K.EVT.MAX .EQ 4 +K.SCR.MAX .EQ 6 *-------------------------------------- ZPDRV .EQ $20 32 bytes ZPLIB .EQ $40 32 bytes @@ -44,15 +45,13 @@ A2osX.SLEEP .EQ $BD10 * $BEE0->$BEEF : Public Variables *-------------------------------------- A2osX.ASCREEN .EQ $BEE0 Active Screen -A2osX.SCRNDEVS .EQ $BEE1 -> $BEE4 (4 screen devices) +A2osX.SCRNDEVS .EQ $BEE1 -> $BEE4 (5 screen devices) -A2osX.CPUTYPE .EQ $BEE5 -A2osX.CPUSPEED .EQ $BEE6 WORD, (->255.99 Mhz) +A2osX.CPUTYPE .EQ $BEE6 +A2osX.CPUSPEED .EQ $BEE7 WORD, (->255.99 Mhz) -A2osX.Z80SLOT .EQ $BEE8 -A2osX.Z80SPEED .EQ $BEE9 WORD - -* .EQ $BEEB +A2osX.Z80SLOT .EQ $BEE9 +A2osX.Z80SPEED .EQ $BEEA WORD A2osX.TIMER16 .EQ $BEEC WORD A2osX.RANDOM16 .EQ $BEEE WORD @@ -61,6 +60,7 @@ A2osX.RANDOM16 .EQ $BEEE WORD *-------------------------------------- A2osX.KCONFIG .EQ $BEF0 A2osX.HZ .EQ $BEF0 5/6 for 50/60Hz +A2osX.TTYDEVS .EQ $BEF1 K.SCR.MAX = 6 ! A2osX.F .EQ $BEF8 A2osX.F.CHROOT .EQ %10000000 ChRooting to /RAMx A2osX.F.PMODE .EQ %01000000 Preemptive Mode diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index bb32940b..3bdde0ae 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -120,9 +120,9 @@ CORE.Events jsr CORE.GetEvents bpl .8 - cmp #"1" + cmp #"0" bcc .8 - cmp #"5" + cmp #"6" bcs .8 sta KBDSTROBE @@ -380,7 +380,7 @@ CORE.ScrSel and #$0F tax - lda A2osX.SCRNDEVS-1,x Get DevID + lda A2osX.SCRNDEVS,x Get DevID beq .8 No device claimed this screen stx A2osX.ASCREEN set active screen diff --git a/SYS/KERNEL.S.DEF.txt b/SYS/KERNEL.S.DEF.txt index 786c781b..3dd8b612 100644 --- a/SYS/KERNEL.S.DEF.txt +++ b/SYS/KERNEL.S.DEF.txt @@ -140,6 +140,11 @@ H.BIN.EXE.REL.TABLE .EQ 16 * H.BIN.DRV.REL.TABLE .EQ 2 Including main jmp *-------------------------------------- +S.TTY.TITLE .EQ 48 +S.TTY.FRBUF .EQ 128 +* +S.TTY .EQ 2048 +*-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.DEF LOAD USR/SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index 8b6c1199..6a5c6b07 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -23,7 +23,7 @@ DRV.DiskII.STATUS DRV.DiskII.DIB .DA #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ .DA 280 .DA #0 - >PSTR "Disk II 5.25" + >PSTR "Disk ][ 5.25" .BS 4 .DA #S.DIB.T.DISKII .DA #0 @@ -239,13 +239,25 @@ DRV.SYS cld .DA DRV.SYS.CLOSE .DA DRV.SYS.Read .DA DRV.SYS.Write - .DA A2osX.BADCALL IRQ *-------------------------------------- DRV.SYS.STATUS >LDYAI DRV.SYS.DIB jmp DRV.STATUS.YA *-------------------------------------- -DRV.SYS.Open lda #DEVID.SYS - sta A2osX.SCRNDEVS+1 +DRV.SYS.Open ldx #0 + +.1 ldy A2osX.SCRNDEVS,x + beq .2 + + inx + cpx #K.SCR.MAX + bne .1 + + lda #E.OOH + sec + rts + +.2 sta A2osX.SCRNDEVS,x DEV.ID in A + sta DRV.SYS.DEVID jsr DRV.SYS.FF *-------------------------------------- DRV.SYS.Control sta SETTEXT @@ -253,7 +265,7 @@ DRV.SYS.Control sta SETTEXT sta SET80DISP sta CLR80STORE sta SETPAGE2 - lda #2 + lda DRV.SYS.DEVID sta A2osX.ASCREEN DRV.SYS.CLOSE clc @@ -515,13 +527,14 @@ DRV.SYS.SetBaseX sta ZPDRV+1 rts *-------------------------------------- -DRV.SYS.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ+S.DIB.S.OPENED +DRV.SYS.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ .DA #0,#0,#0 - >PSTR "A2osX SYS Screen" + >PSTR "A2osX VT100 TERM" .DA #S.DIB.T.CHAR .DA #0 .DA K.VER *-------------------------------------- +DRV.SYS.DEVID .BS 1 DRV.SYS.CH .BS 1 DRV.SYS.CV .BS 1 *-------------------------------------- diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index 5b37afb0..2dabe411 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -343,7 +343,8 @@ GP.CodeEnd .BS $BEE0-* * $BEF0->$BEFF : Kernel Config Block *-------------------------------------- .DA #6 A2osX.HZ=60hz - .HS 00000000000000 + .DA #4 A2osX.TTYDEVS=4 + .HS 000000000000 .DA #0 ChRoot/Preemptive Disabled .HS 00000000000000 All Slots marked as "Free" *-------------------------------------- diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index c30c4eb1..1a1e95fb 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -101,14 +101,12 @@ Kernel.Init3 sta SETALTZP lda #$ff Make sure we are in Kernel Mode during setup sta IRQ.InKernel - jsr SysScrInit - jsr MemMgrInit + >LDYAI FD.NULL >SYSCALL MKDev - >LDYAI FD.SYS - >SYSCALL MKDev + jsr SysScrInit jsr PS0.Init bcs * @@ -130,7 +128,6 @@ Kernel.Init3 sta SETALTZP jsr TskMgrInit bcs * - ldy #S.PS.hPREFIX lda (pPs),y jsr K.GetMemPtr @@ -238,7 +235,94 @@ KConfigLoad >LDYAI MSG.KCREAD *-------------------------------------- * INIT3 Subs *-------------------------------------- -SysScrInit ldx #0 +MemMgrInit >LDYAI Mem.MHiMem + >STYA Mem.HiMem + >STYA Mem.Free + >LDYAI Mem.MLoMem + >STYA Mem.LoMem + stz Mem.LastSlot Reserve Slot #0 + +* reserve AUXmem for TTY Frame bufers + + lda A2osX.TTYDEVS + inc +1 for /DEV/CONSOLE + asl + asl + asl 8 pages (2k) + sta .10+1 + + sta SETWRITEAUX + + ldy #Mem.XHiMem + sty Mem.HiMem + + lda /Mem.XHiMem + sec +.10 sbc #$FF SELF MODIFIED + sta Mem.HiMem+1 + + >STYA Mem.Free + >LDYAI Mem.XLoMem + >STYA Mem.LoMem + stz Mem.LastSlot Reserve Slot #0 + + sta CLRWRITEAUX + + ldx #K.DEV.MAX*2-1 + +.1 stz Dev.Table.hPath,x + dex + bpl .1 + + ldx #K.NOD.MAX*2-1 + +.2 stz Nod.Table.hPath,x + dex + bpl .2 + + ldx #K.PS.MAX*4-1 + +.3 stz PS.Table.PID,x + dex + bpl .3 + + ldx #K.OF.MAX*2-1 + +.4 stz OF.Table.hPath,x + dex + bpl .4 + + ldx #K.EVT.MAX*S.EVT-1 + +.5 stz Evt.Table,x + dex + bpl .5 + + stz Flt.Table + + rts +*-------------------------------------- +SysScrInit >LDYAI FD.SYS + >SYSCALL MKDev + + lda A2osX.TTYDEVS + +.1 pha + inc FD.TTY+S.FD.DEV.DEVID + inc FD.TTY+S.FD.DEV.NAME+3 + lda FD.TTY+S.FD.DEV.BUSPTR+1 + sec + sbc /2048 + sta FD.TTY+S.FD.DEV.BUSPTR+1 + >LDYAI FD.TTY + >SYSCALL MKDev + + pla + dec + bne .1 + + +SysScrInit.OLD ldx #0 ldy #0 @@ -491,58 +575,6 @@ DetectZ80 ldx #Z80Code.Size clc .9 rts *-------------------------------------- -MemMgrInit >LDYAI Mem.MHiMem - >STYA Mem.HiMem - >STYA Mem.Free - >LDYAI Mem.MLoMem - >STYA Mem.LoMem - stz Mem.LastSlot Reserve Slot #0 - - sta SETWRITEAUX - - >LDYAI Mem.XHiMem - >STYA Mem.HiMem - >STYA Mem.Free - >LDYAI Mem.XLoMem - >STYA Mem.LoMem - stz Mem.LastSlot Reserve Slot #0 - - sta CLRWRITEAUX - - ldx #K.DEV.MAX*2-1 - -.1 stz Dev.Table.hPath,x - dex - bpl .1 - - ldx #K.NOD.MAX*2-1 - -.2 stz Nod.Table.hPath,x - dex - bpl .2 - - ldx #K.PS.MAX*4-1 - -.3 stz PS.Table.PID,x - dex - bpl .3 - - ldx #K.OF.MAX*2-1 - -.4 stz OF.Table.hPath,x - dex - bpl .4 - - ldx #K.EVT.MAX*S.EVT-1 - -.5 stz Evt.Table,x - dex - bpl .5 - - stz Flt.Table - - rts -*-------------------------------------- * Setup AuxLC $FFFE->Kernel IRQ Handler * if irq not handled, jmp (S.IrqMgrOldFFFE) *-------------------------------------- @@ -1110,11 +1142,20 @@ FD.SYS .DA #S.FD.T.CDEV .DA #0 HANDLER .DA #0 BUSID .DA #DEVID.SYS - .DA 0 BUSPTR + .DA $B800 BUSPTR .DA DRV.SYS .AZ "SYS" NAME .HS 00000000 *-------------------------------------- +FD.TTY .DA #S.FD.T.CDEV + .DA #0 HANDLER + .DA #0 BUSID + .DA #DEVID.SYS DEVID + .DA $B800 BUSPTR + .DA DRV.SYS + .AZ "TTY0" NAME + .HS 000000 +*-------------------------------------- FD.BDEV .DA #S.FD.T.BDEV .DA #0 HANDLER .DA #0 BUSID