diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 399db6fd..2d38f3a2 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ 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