From a4b457498f2a0c8f6e64a00a382ed3f0f0e7d6da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 17 Dec 2018 15:24:39 +0100 Subject: [PATCH] Kernel 0.92 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes SYS/KERNEL.S.DEF.txt | 5 +- SYS/KERNEL.S.INIT.txt | 67 ++++++++-------- SYS/KERNEL.S.TERM.txt | 166 +++++++++++++++++++++------------------ SYS/KERNEL.S.TERMLC.txt | 93 +++++++++------------- 5 files changed, 164 insertions(+), 167 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 399db6fd21ed87082e897a7d940e13311b96fd12..2d38f3a26640650ff24fb09a81370199b0e2ac51 100644 GIT binary patch delta 33479 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 delta 33596 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 diff --git a/SYS/KERNEL.S.DEF.txt b/SYS/KERNEL.S.DEF.txt index a7f983f8..da055033 100644 --- a/SYS/KERNEL.S.DEF.txt +++ b/SYS/KERNEL.S.DEF.txt @@ -141,6 +141,8 @@ H.BIN.EXE.REL.TABLE .EQ 16 * H.BIN.DRV.REL.TABLE .EQ 2 Including main jmp *-------------------------------------- +TTY.BUF.SIZE .EQ 80*24 +*-------------------------------------- S.DCB.TTY.DEVID .EQ 0 S.DCB.TTY.STATUS .EQ 1 S.DCB.TTY.MODE .EQ 2 @@ -167,9 +169,6 @@ S.DCB.TTY.OUTBUFFER.MAX .EQ 64 * S.DCB.TTY .EQ 64 *-------------------------------------- -S.TTYBUF.TITLE .EQ 48 -S.TTYBUF.SCRBUF .EQ 128 24x80=1920 bytes -*-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.DEF LOAD USR/SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index d0b00456..c353bc98 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -249,28 +249,11 @@ MemMgrInit >LDYAI Mem.MHiMem >STYA Mem.LoMem stz Mem.LastSlot Reserve Slot #0 -* reserve AUXmem for TTY Frame buffers - - 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 @@ -309,49 +292,67 @@ MemMgrInit >LDYAI Mem.MHiMem rts *-------------------------------------- -SysScrInit jsr SysScrInit.DCBBuf +SysScrInit >LDYAI Mem.XHiMem + >STYA FD.TTY+S.FD.DEV.BUFPTR + + jsr SysScrInit.TTYPtrs >PUSHWI FD.CONSOLE.NAME >LDYAI FD.TTY >SYSCALL MKDev bcs .9 - lda A2osX.TTYDEVS + ldx A2osX.TTYDEVS -.1 pha +.1 phx + inc FD.TTY+S.FD.DEV.DEVID inc FD.TTY.NAME+3 - lda FD.TTY+S.FD.DEV.BUFPTR+1 - sec - sbc /2048 - sta FD.TTY+S.FD.DEV.BUFPTR+1 - jsr SysScrInit.DCBBuf + jsr SysScrInit.TTYPtrs >PUSHWI FD.TTY.NAME >LDYAI FD.TTY >SYSCALL MKDev - pla - dec + plx + bcs .9 + + dex bne .1 + >LDYA FD.TTY+S.FD.DEV.BUFPTR + sta SETWRITEAUX + >STYA Mem.HiMem + >STYA Mem.Free + sta CLRWRITEAUX + clc .9 rts *-------------------------------------- -SysScrInit.DCBBuf - clc - +SysScrInit.TTYPtrs lda DevMgr.Free sta FD.TTY+S.FD.DEV.DCBPTR + + clc adc #S.DCB.TTY sta DevMgr.Free lda DevMgr.Free+1 sta FD.TTY+S.FD.DEV.DCBPTR+1 + adc /S.DCB.TTY sta DevMgr.Free+1 + + lda FD.TTY+S.FD.DEV.BUFPTR + sec + sbc #TTY.BUF.SIZE + sta FD.TTY+S.FD.DEV.BUFPTR + lda FD.TTY+S.FD.DEV.BUFPTR+1 + sbc /TTY.BUF.SIZE + sta FD.TTY+S.FD.DEV.BUFPTR+1 + rts *-------------------------------------- PS0.Init >LDYAI CORE.S.PS0 Select Process 0 (Kernel) @@ -1127,7 +1128,7 @@ FD.TTY .DA #S.FD.T.CDEV .DA 0 BUSPTR .DA DRV.TERM .BS 2 DCBPTR - .DA $B800 BUFPTR + .BS 2 BUFPTR *-------------------------------------- FD.CONSOLE.NAME .AZ "CONSOLE" FD.TTY.NAME .AZ "TTY0" diff --git a/SYS/KERNEL.S.TERM.txt b/SYS/KERNEL.S.TERM.txt index 96dfd605..b712bef8 100644 --- a/SYS/KERNEL.S.TERM.txt +++ b/SYS/KERNEL.S.TERM.txt @@ -36,8 +36,8 @@ DRV.TERM cld .DA DRV.TERM.READ .DA DRV.TERM.WRITE *-------------------------------------- -DRV.TERM.STATUS jsr DRV.TERM.GetIOCTLBufAndCnt - +DRV.TERM.STATUS jsr DRV.TERM.GetIOCTLBufCntDCB + ldy #S.IOCTL.STATCODE lda (ZPIOCTL),y beq .1 @@ -50,12 +50,10 @@ DRV.TERM.STATUS jsr DRV.TERM.GetIOCTLBufAndCnt .1 ldy #3 .2 lda DRV.TERM.DIB,y -.3 sta (ZPBufPtr),y + sta (ZPBufPtr),y dey bne .2 - jsr DRV.TERM.GetDCB - ldy #S.DCB.TTY.STATUS lda (ZPDCBPtr),y sta (ZPBufPtr) @@ -106,14 +104,14 @@ DRV.TERM.OPEN ldx #0 DEV.ID in A jsr RESET *-------------------------------------- DRV.TERM.CONTROL - sta SETTEXT - jsr DRV.TERM.GetDCB ldy #S.DCB.TTY.DEVID lda (ZPDCBPtr),y sta A2osX.ASCREEN + sta SETTEXT + jsr DRV.TERM.SCRCPY lda #0 @@ -157,8 +155,7 @@ DRV.TERM.CLOSE jsr DRV.TERM.GetDCB sec rts *-------------------------------------- -DRV.TERM.READ jsr DRV.TERM.GetIOCTLBufAndCnt - jsr DRV.TERM.GetDCB +DRV.TERM.READ jsr DRV.TERM.GetIOCTLBufCntDCB bit bActive is screen active? bpl .6 no....go check flush... @@ -242,17 +239,16 @@ DRV.TERM.READ jsr DRV.TERM.GetIOCTLBufAndCnt sec rts *-------------------------------------- -DRV.TERM.WRITE jsr DRV.TERM.GetIOCTLBufAndCnt - jsr DRV.TERM.GetDCB +DRV.TERM.WRITE jsr DRV.TERM.GetIOCTLBufCntDCB + + jsr DRV.TERM.CUROFF .1 inc ZPCount bne .2 inc ZPCount+1 beq FS.8 -.2 jsr DRV.TERM.CUROFF - - ldy #S.DCB.TTY.MODE +.2 ldy #S.DCB.TTY.MODE lda (ZPDCBPtr),y tax @@ -276,18 +272,41 @@ DRV.TERM.COUT lda (ZPBufPtr) bne .1 lda #S.DCB.TTY.MODE.IAC - bra DRV.TERM.SETMODE + jmp DRV.TERM.SETMODE .1 cmp #C.DEL beq DRV.TERM.COUT.DEL cmp #C.SPACE - bcc DRV.TERM.COUT.Ctrl + bcs .8 + + ldx #CtrlChars.Cnt-1 - ldy #S.DCB.TTY.bINVERSE +.2 cmp CtrlChars,x + beq .3 + dex + bpl .2 + clc + rts + +.3 txa + asl + tax + jmp (.4,x) + +.4 .DA ENQ 5 + .DA BS 8 + .DA LF 10 + .DA DRV.TERM.COUT.FF + .DA DRV.TERM.COUT.CR + .DA DRV.TERM.COUT.FS + .DA DRV.TERM.COUT.ESC + +.8 ldy #S.DCB.TTY.bINVERSE ora (ZPDCBPtr),y jsr SetCharAtCurPos *-------------------------------------- -FS ldy #S.DCB.TTY.CH +DRV.TERM.COUT.FS + ldy #S.DCB.TTY.CH lda (ZPDCBPtr),y cmp #79 bne .1 @@ -332,30 +351,23 @@ DRV.TERM.COUT.DEL ora (ZPDCBPtr),y jmp SetCharAtCurPos *-------------------------------------- -DRV.TERM.COUT.Ctrl - ldx #CtrlChars.Cnt-1 - -.1 cmp CtrlChars,x - beq .2 - dex - bpl .1 +DRV.TERM.COUT.FF + lda #0 + ldy #S.DCB.TTY.CV + sta (ZPDCBPtr),y + dey + sta (ZPDCBPtr),y + jmp DRV.TERM.CLRSCR +*-------------------------------------- +DRV.TERM.COUT.CR + lda #0 + ldy #S.DCB.TTY.CH + sta (ZPDCBPtr),y clc rts - -.2 txa - asl - tax - jmp (.8,x) - -.8 .DA ENQ 5 - .DA BS 8 - .DA LF 10 - .DA FF 12 - .DA CROUT 13 - .DA FS 21 - .DA ESC 27 *-------------------------------------- -ESC lda #S.DCB.TTY.MODE.ESC +DRV.TERM.COUT.ESC + lda #S.DCB.TTY.MODE.ESC bra DRV.TERM.SETMODE *-------------------------------------- DRV.TERM.ESC lda (ZPBufPtr) @@ -860,19 +872,6 @@ BS ldy #S.DCB.TTY.CH .2 clc rts *-------------------------------------- -FF lda #0 - ldy #S.DCB.TTY.CV - sta (ZPDCBPtr),y - dey - sta (ZPDCBPtr),y - jmp DRV.TERM.CLRSCR -*-------------------------------------- -CROUT lda #0 - ldy #S.DCB.TTY.CH - sta (ZPDCBPtr),y - clc - rts -*-------------------------------------- LF ldy #S.DCB.TTY.CV lda (ZPDCBPtr),y ldy #S.DCB.TTY.SCROLLBOT @@ -1092,23 +1091,7 @@ Char.Out.Get ldy #S.DCB.TTY.OUTTAIL .9 rts *-------------------------------------- -DRV.TERM.GetDCB ldy #S.FD.DEV.DCBPTR - lda (pFD),y - sta ZPDCBPtr - iny - lda (pFD),y - sta ZPDCBPtr+1 - - ldy #S.DCB.TTY.DEVID - lda (ZPDCBPtr),y - cmp A2osX.ASCREEN - beq .1 CS - - clc -.1 ror bActive - rts -*-------------------------------------- -DRV.TERM.GetIOCTLBufAndCnt +DRV.TERM.GetIOCTLBufCntDCB >STYA ZPIOCTL ldy #S.IOCTL.BUFPTR @@ -1127,7 +1110,21 @@ DRV.TERM.GetIOCTLBufAndCnt lda (ZPIOCTL),y eor #$ff sta ZPCount+1 +*-------------------------------------- +DRV.TERM.GetDCB ldy #S.FD.DEV.DCBPTR + lda (pFD),y + sta ZPDCBPtr + iny + lda (pFD),y + sta ZPDCBPtr+1 + ldy #S.DCB.TTY.DEVID + lda (ZPDCBPtr),y + cmp A2osX.ASCREEN + beq .1 CS + + clc +.1 ror bActive rts *-------------------------------------- DRV.TERM.Title.ON @@ -1153,13 +1150,7 @@ DRV.TERM.Title.ON .1 lda (ZPTmpWord),y beq .2 - cmp #$40 - bcc .10 - cmp #$5F - bcs .10 - and #$3F - -.10 phy + phy jsr SetCharAtY.SCR ply iny @@ -1185,6 +1176,29 @@ DRV.TERM.Title.OFF sta (ZPDCBPtr),y jmp DRV.TERM.LINE0CPY *-------------------------------------- +DRV.TERM.SETUP.L1X + ldy #S.FD.DEV.BUFPTR + lda (pFD),y + clc + adc BUF.BASEL,x + sta ZPBufBaseL1 + + iny + lda (pFD),y + adc BUF.BASEH,x + sta ZPBufBaseL1+1 + + bit bActive + bpl DRV.TERM.SETUP.L1X.8 + +DRV.TERM.SETUP.L1X.SCR + lda SCR.BASEL,x + sta ZPScrBaseL1 + lda SCR.BASEH,x + sta ZPScrBaseL1+1 +DRV.TERM.SETUP.L1X.8 + rts +*-------------------------------------- RESET.VALUES .DA #0 S.DCB.TTY.MODE .DA #0 S.DCB.TTY.CH .DA #0 S.DCB.TTY.CV diff --git a/SYS/KERNEL.S.TERMLC.txt b/SYS/KERNEL.S.TERMLC.txt index 34128601..6249f154 100644 --- a/SYS/KERNEL.S.TERMLC.txt +++ b/SYS/KERNEL.S.TERMLC.txt @@ -2,29 +2,6 @@ NEW PREFIX AUTO 4,1 *-------------------------------------- -DRV.TERM.SETUP.L1X - ldy #S.FD.DEV.BUFPTR - lda (pFD),y - clc - adc BUF.BASEL,x - sta ZPBufBaseL1 - - iny - lda (pFD),y - adc BUF.BASEH,x - sta ZPBufBaseL1+1 - - bit bActive - bpl DRV.TERM.SETUP.L1X.8 - -DRV.TERM.SETUP.L1X.SCR - lda SCR.BASEL,x - sta ZPScrBaseL1 - lda SCR.BASEH,x - sta ZPScrBaseL1+1 -DRV.TERM.SETUP.L1X.8 - rts -*-------------------------------------- SCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0 SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07 *-------------------------------------- @@ -89,20 +66,12 @@ DRV.TERM.CLRSCR ldx #23 sta SETPAGE2 - ldy #39 - -.2 sta (ZPScrBaseL1),y - dey - bpl .2 + jsr .7 sta CLRPAGE2 - ldy #39 - -.3 sta (ZPScrBaseL1),y - dey - bpl .3 - + jsr .7 + .4 sta SETWRITEAUX ldy #79 @@ -115,12 +84,14 @@ DRV.TERM.CLRSCR ldx #23 dex bpl .1 + + rts - lda #0 - ldy #S.DCB.TTY.CV - sta (ZPDCBPtr),y +.7 ldy #39 + +.8 sta (ZPScrBaseL1),y dey - sta (ZPDCBPtr),y + bpl .8 rts *-------------------------------------- DRV.TERM.LINE0CPY @@ -172,7 +143,13 @@ DRV.TERM.SCRCPY ldx #23 .8 ldy #39 .80 lda $ffff,x SELF MODIFIED - sta (ZPScrBaseL1),y + cmp #$40 + bcc .81 + cmp #$5F + bcs .81 + and #$3F + +.81 sta (ZPScrBaseL1),y dex dex dey @@ -180,6 +157,17 @@ DRV.TERM.SCRCPY ldx #23 rts *-------------------------------------- DRV.TERM.COPY.XtoL1 + ldy #S.FD.DEV.BUFPTR + lda (pFD),y + clc + adc BUF.BASEL,x + sta ZPBufBaseL2 + + iny + lda (pFD),y + adc BUF.BASEH,x + sta ZPBufBaseL2+1 + ldy #79 sta SETWRITEAUX @@ -214,6 +202,7 @@ DRV.TERM.COPY.XtoL1 sta (ZPScrBaseL1),y dey bpl .7 + .8 rts *-------------------------------------- SetCharAtCurPos.SCR @@ -228,13 +217,7 @@ SetCharAtCurPos.SCR jsr DRV.TERM.SETUP.L1X.SCR pla - cmp #$40 - bcc .1 - cmp #$5F - bcs .1 - and #$3F - -.1 bra SetCharAtY.SCR + bra SetCharAtY.SCR SetCharAtCurPos pha ldy #S.DCB.TTY.CV @@ -245,13 +228,7 @@ SetCharAtCurPos pha tay pla *-------------------------------------- -SetCharAtYX cmp #$40 - bcc .1 - cmp #$5F - bcs .1 - and #$3F - -.1 pha +SetCharAtYX pha phy jsr DRV.TERM.SETUP.L1X ply @@ -263,8 +240,14 @@ SetCharAtYX cmp #$40 bit bActive bpl SetCharAtYX.8 -SetCharAtY.SCR - pha + +SetCharAtY.SCR cmp #$40 + bcc .1 + cmp #$5F + bcs .1 + and #$3F + +.1 pha tya lsr