From a4e5c65711eb2019ce67f600091078ace237a91f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 14 May 2019 18:04:16 +0200 Subject: [PATCH] Kernel 0.93 --- SYS/KERNEL.S.DEF.txt | 8 +++-- SYS/KERNEL.S.IO.txt | 22 +++++------- SYS/KERNEL.S.TERM.txt | 72 ++++++++++++++++++++++++++++++--------- SYS/KERNEL.S.TERMLC.txt | 74 ++++++++++++++++++++++++++++++++--------- 4 files changed, 129 insertions(+), 47 deletions(-) diff --git a/SYS/KERNEL.S.DEF.txt b/SYS/KERNEL.S.DEF.txt index 9034b374..d5ac32b7 100644 --- a/SYS/KERNEL.S.DEF.txt +++ b/SYS/KERNEL.S.DEF.txt @@ -166,9 +166,11 @@ S.DCB.TTY.bCURON .EQ 7 S.DCB.TTY.bINVERSE .EQ 8 S.DCB.TTY.bLINEWRAP .EQ 9 S.DCB.TTY.bTITLE .EQ 10 -* -* -* + +S.DCB.TTY.bG0G1 .EQ 11 +S.DCB.TTY.bG0ALT .EQ 12 +S.DCB.TTY.bG1ALT .EQ 13 + S.DCB.TTY.OUTTAIL .EQ 14 S.DCB.TTY.OUTHEAD .EQ 15 S.DCB.TTY.INBUFFER .EQ 16 diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index 89f2f2db..39cb426c 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -759,11 +759,11 @@ IO.EOF.REG >MLICALL MLIGETMARK .2 lda K.MLI.PARAMS+2,y eor K.EOF.MARK,y - bne IO.EOF.CDEV.80 MARK != EOF -> false + bne IO.EOF.FALSE dey bpl .2 -IO.EOF.REG.88 lda #$ff +IO.EOF.TRUE lda #$ff * clc IO.EOF.REG.RTS rts *-------------------------------------- @@ -777,9 +777,9 @@ IO.EOF.CDEV >LDYAI K.IOBuf lda K.IOBuf ora K.IOBuf+1 - beq IO.EOF.REG.88 + beq IO.EOF.TRUE -IO.EOF.CDEV.80 lda #0 +IO.EOF.FALSE lda #0 * clc rts *-------------------------------------- @@ -797,19 +797,13 @@ IO.EOF.SSOCK ldy #S.FD.SSOCK.EOF .1 jmp $FFFF SELF MODIFIED *-------------------------------------- -IO.EOF.PIPE ldy #S.FD.PIPE.Used +IO.EOF.PIPE clc + ldy #S.FD.PIPE.Used lda (pFD),y iny ora (pFD),y - bne .8 Data, EOF = false - - lda #$ff - clc - rts - -.8 lda #0 - clc - rts + beq IO.EOF.TRUE + bne IO.EOF.FALSE *-------------------------------------- IO.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF ldx #S.MEM.F.ALIGN+S.MEM.F.NOMOVE diff --git a/SYS/KERNEL.S.TERM.txt b/SYS/KERNEL.S.TERM.txt index 8a5a104d..4947716f 100644 --- a/SYS/KERNEL.S.TERM.txt +++ b/SYS/KERNEL.S.TERM.txt @@ -14,6 +14,7 @@ ZPBufBaseL1 .BS 2 ZPBufBaseL2 .BS 2 ZPScrBaseL1 .BS 2 ZPScrBaseL2 .BS 2 + ZPTmpWord .BS 2 ZPTmpBool .BS 1 *-------------------------------------- @@ -402,9 +403,21 @@ DRV.TERM.COUT.ESC DRV.TERM.ESC lda (ZPBufPtr) cmp #'[' - bne DRV.TERM.ESC1 + bne .1 lda #S.DCB.TTY.MODE.CSI + bra DRV.TERM.SETMODE + +.1 cmp #'(' + bne .2 + + lda #S.DCB.TTY.MODE.G0 + bra DRV.TERM.SETMODE + +.2 cmp #')' + bne DRV.TERM.ESC1 + + lda #S.DCB.TTY.MODE.G1 DRV.TERM.SETMODE sta (ZPDCBPtr),y @@ -436,8 +449,6 @@ DRV.TERM.ESC1 lda #0 y = #S.DCB.TTY.MODE .4 .DA Scroll.Dn M .DA Scroll.Up D .DA RESET c - .DA G0 ( - .DA G1 ) *-------------------------------------- DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER lda (ZPDCBPtr),y @@ -548,7 +559,8 @@ DRV.TERM.CSI.Exec .DA Csi.DispAttr m .DA Csi.Query n .DA Csi.Scroll r - .DA Csi.Erase K + .DA Csi.EraseScreen J + .DA Csi.EraseLine K .DA Csi.Home H *-------------------------------------- Csi.LWEnable sec @@ -652,7 +664,24 @@ Csi.Scroll ldy CsiParamCnt .9 clc rts *-------------------------------------- -Csi.Erase ldx CsiParamCnt +Csi.EraseScreen ldx CsiParamCnt + + bne .1 + jmp DRV.TERM.CLRSCR.DN + +.1 lda CsiParams + cmp #1 + bne .2 + jmp DRV.TERM.CLRSCR.UP + +.2 cmp #2 + bne .9 + jmp DRV.TERM.CLRSCR + +.9 clc + rts +*-------------------------------------- +Csi.EraseLine ldx CsiParamCnt bne .1 jmp CLREOL @@ -716,10 +745,19 @@ Csi.Home lda CsiParamCnt Csi.Home.8 clc rts *-------------------------------------- -DRV.TERM.G0 -DRV.TERM.G1 +DRV.TERM.G0 ldy #S.DCB.TTY.bG0ALT + .HS 2C BIT ABS +DRV.TERM.G1 ldy #S.DCB.TTY.bG1ALT - jmp RESET.MODE + lda (ZPBufPtr) + cmp #'0' + beq .1 + clc + +.1 ror + sta (ZPDCBPtr),y + clc + rts *-------------------------------------- DRV.TERM.IAC ldy #S.DCB.TTY.INBUFFER lda (ZPDCBPtr),y @@ -846,7 +884,7 @@ COUT.IAC.DONT COUT.IAC.EXIT *-------------------------------------- RESET.MODE lda #0 -SET.MODE ldy #S.DCB.TTY.MODE + ldy #S.DCB.TTY.MODE sta (ZPDCBPtr),y clc rts @@ -867,11 +905,15 @@ RESETATTR lda #$80 clc rts *-------------------------------------- -G0 lda #S.DCB.TTY.MODE.G0 +SI clc .HS 2C BIT ABS *-------------------------------------- -G1 lda #S.DCB.TTY.MODE.G1 - bra SET.MODE +SO sec + ldy #S.DCB.TTY.bG0G1 + ror + sta (ZPDCBPtr),y + clc + rts *-------------------------------------- ENQ ldx #0 @@ -1261,7 +1303,7 @@ RESET.VALUES .DA #0 S.DCB.TTY.MODE .DA #$80 S.DCB.TTY.bINVERSE .DA #$80 S.DCB.TTY.bLINEWRAP .DA #0 S.DCB.TTY.bTITLE - .DA #0 + .DA #0 S.DCB.TTY.bALTFONT .DA #0 .DA #0 .DA #S.DCB.TTY.OUTBUFFER S.DCB.TTY.OUTTAIL @@ -1271,9 +1313,9 @@ RESET.VALUES .DA #0 S.DCB.TTY.MODE CtrlChars .HS 05080A0C0D151B CtrlChars.Cnt .EQ *-CtrlChars *-------------------------------------- -EscCodes .AZ "MDc()" +EscCodes .AZ "MDc" EscCodes.Cnt .EQ *-EscCodes -CsiCodes .AS "hlmnrKH" +CsiCodes .AS "hlmnrJKH" CsiCodes.Cnt .EQ *-CsiCodes ENQ.String .AZ "xterm" *-------------------------------------- diff --git a/SYS/KERNEL.S.TERMLC.txt b/SYS/KERNEL.S.TERMLC.txt index 875c8d5d..dae391bd 100644 --- a/SYS/KERNEL.S.TERMLC.txt +++ b/SYS/KERNEL.S.TERMLC.txt @@ -2,22 +2,43 @@ NEW PREFIX AUTO 4,1 *-------------------------------------- -DRV.TERM.CLRSCR ldx #23 +DRV.TERM.CLRSCR.DN + ldy #S.DCB.TTY.CV + sta (ZPDCBPtr),y + tax + bra DRV.TERM.CLRSCR.1 + +DRV.TERM.CLRSCR.UP + ldx #0 + ldy #S.DCB.TTY.CV + sta (ZPDCBPtr),y + tay + bra DRV.TERM.CLRSCR.2 + +DRV.TERM.CLRSCR ldx #0 + +DRV.TERM.CLRSCR.1 + ldy #24 + +DRV.TERM.CLRSCR.2 + sty .1+1 + sta SET80STORE -.1 jsr DRV.TERM.SETUP.L1X - +.1 cpx #$ff SELF MODIFIED + beq .9 + + jsr DRV.TERM.SETUP.L1X + lda #" " bit bActive bpl .4 sta SETPAGE2 - jsr .7 sta CLRPAGE2 - jsr .7 .4 sta SETWRITEAUX @@ -30,17 +51,15 @@ DRV.TERM.CLRSCR ldx #23 sta CLRWRITEAUX - dex - bpl .1 - - rts + inx + bra .1 .7 ldy #39 .8 sta (ZPScrBaseL1),y dey bpl .8 - rts +.9 rts *-------------------------------------- DRV.TERM.LINE0CPY ldx #0 @@ -167,9 +186,26 @@ SetCharAtCurPos.SCR pla bra SetCharAtY.SCR -SetCharAtCurPos ldy #S.DCB.TTY.bINVERSE +SetCharAtCurPos pha + ldy #S.DCB.TTY.bALTFONT + lda (ZPDCBPtr),y + bpl .1 + + pla + bmi .2 + + cmp #96 + bcc .2 + + and #$1F + bra .3 + +.1 pla + +.2 ldy #S.DCB.TTY.bINVERSE ora (ZPDCBPtr),y - pha + +.3 pha ldy #S.DCB.TTY.CV lda (ZPDCBPtr),y tax @@ -191,11 +227,19 @@ SetCharAtYX pha bit bActive bpl SetCharAtYX.8 -SetCharAtY.SCR cmp #$40 +SetCharAtY.SCR cmp #$20 + bcs .10 + phx + tax + + lda REMAP.96.127,x + plx + +.10 cmp #$40 Remap inverse UPPRECASE bcc .1 cmp #$5F bcs .1 - and #$3F + and #$1F .1 pha @@ -228,7 +272,7 @@ GetCharAtCurPos ldy #S.DCB.TTY.CV rts *-------------------------------------- -REMAP.95.126 .HS 404142434445464748494a4b4c4d4e4f +REMAP.96.127 .HS 404142434445464748494a4b4c4d4e4f .HS 505152535455565758595a5b5c5d5e5f *-------------------------------------- BUF.BASEL .DA #0