KERNEL : more terminal fixes

LIBTUI : DLG fix
This commit is contained in:
burniouf 2023-05-01 09:35:39 +02:00
parent 77f6c2664a
commit 0ea8d62a96
6 changed files with 202 additions and 179 deletions

Binary file not shown.

View File

@ -24,19 +24,17 @@ DLG.New lda #S.OBJ.T.DLG
>SYSCALL2 GetMemPtr
>STYA ZPPtr2
ldy #S.CTX.W
ldy #S.OBJ.W
lda (ZPPtr2),y
sec
ldy #S.OBJ.W
sbc (ZPObjPtr),y
lsr
ldy #S.OBJ.X1
sta (ZPObjPtr),y
ldy #S.CTX.H
ldy #S.OBJ.H
lda (ZPPtr2),y
sec
ldy #S.OBJ.H
sbc (ZPObjPtr),y
lsr
ldy #S.OBJ.Y1

View File

@ -305,7 +305,9 @@ LIB.GetCTX >LDYA ZPObjPtr
.8 ldy #S.OBJ.hParent
lda (ZPCtxPtr),y
beq *
>SYSCALL2 GetMemPtr
bcs *
>STYA ZPCtxPtr
rts

View File

@ -251,7 +251,7 @@ CS.BUT.Init >PUSHB hSCRN hParent
.9
CS.BUT.Init.RTS rts
*--------------------------------------
CS.RUN.DLGSAVE >PUSHB hCTX hParent
CS.RUN.DLGSAVE >PUSHB hSCRN hParent
>PUSHBI 70 W
>PUSHBI 11 H
>PUSHW L.DLGS.Title
@ -270,6 +270,7 @@ CS.RUN.DLGSAVE >PUSHB hCTX hParent
bcs .9
sta ZPPtr1
>PUSHB hDLGS hParent
>PUSHBI 57 X1
>PUSHBI 7 Y1
@ -285,7 +286,8 @@ CS.RUN.DLGSAVE >PUSHB hCTX hParent
lda ZPPtr1
>LIBCALL hLIBTUI,LIBTUI.Activate
.1 lda hDLGS
lda hDLGS
>LIBCALL hLIBTUI,LIBTUI.Exec
.9 php
@ -306,6 +308,7 @@ CS.QUIT >LDA.G TBOX1.hBuf
beq .1
>SYSCALL FreeMem
.1 lda hCTX
beq .2

View File

@ -63,7 +63,7 @@ int main(int argc, char *argv[])
do {
e = tuiExec(hSCRN);
if (e == EV_SAVE) {
short int hDLGS = tuiNewDlg(hCTX, 70, 11, "Save As...");
short int hDLGS = tuiNewDlg(hSCRN, 70, 11, "Save As...");
short int hOKBut = tuiNewBut(hDLGS, 50, 7, 13, EV_OK, " OK ");
short int hCanBut = tuiNewBut(hDLGS, 57, 7, 3, EV_CANCEL, "Cancel");
tuiDraw(hDLGS);

View File

@ -66,25 +66,25 @@ TERMX.STATUS tya
beq TERMX.OPEN.E
jsr TERMX.CBLNK
ldy #S.DCB.TTY.OUTTAIL
lda (ZPDCBPtr),y
iny
* sec
eor (ZPDCBPtr),y OUTHEAD
bne .8
bit bActive
bpl .7
bit OPENAPPLE
jsr TERMX.CheckOA
bmi .7
bit KBD
bmi .8
.7 lda #$ff
.7 lda #$ff EOF = TRUE
.HS 2C BIT ABS
.8 lda #0
.8 lda #0 EOF = FALSE
clc
rts
@ -160,28 +160,21 @@ TERMX.READ bit bActive is screen active?
jsr TERMX.CBLNK
bit OPENAPPLE
bpl .1
jsr TERMX.Title.ON
bra .6 Open apple key, not for us...
.1 jsr TERMX.Title.OFF
jsr TERMX.CheckOA
bmi .6 Open apple key, not for us...
lda KBD
bpl .6
sta KBDSTROBE
and #$7F
cmp #C.ESC
bne .10
bne .1
lda #3
.10 ldx #KeyMap.Cnt-1
.1 ldx #KeyMap.Cnt-1
.2 cmp KeyMap,x
beq .3
@ -786,7 +779,7 @@ TERMX.HOME lda #0
ldy #S.DCB.TTY.CH
sta (ZPDCBPtr),y
TERMX.HOME.8 clc
clc
rts
*--------------------------------------
TERMX.G0 ldx #$80
@ -810,132 +803,6 @@ TERMX.G1 ldx #$40
jmp TERMX.SETM.0
*--------------------------------------
TERMX.IAC ldy #S.DCB.TTY.INBUF
lda (ZPDCBPtr),y
inc
sta (ZPDCBPtr),y
tay
jsr TERM.GetBufByte
sta (ZPDCBPtr),y
cpy #S.DCB.TTY.INBUF+1 CMD ?
beq TERMX.HOME.8 yes, wait for additional bytes
ldy #S.DCB.TTY.INBUF+1
lda (ZPDCBPtr),y get back CMD
cmp #SB
bne .1 not a SB/SE....stop with CMD/SUBCMD
jsr TERM.GetBufByte
cmp #SE
bne TERMX.HOME.8 wait for ending SE....keep bIACMode
bra TERMX.IAC.SB
ldy #S.DCB.TTY.INBUF+1
lda (ZPDCBPtr),y get back CMD
.1 cmp #IAC
beq TERMX.IAC.SB.9
sec
sbc #WILL
bcc TERMX.IAC.SB.9
asl
tax
ldy #S.DCB.TTY.INBUF+2
lda (ZPDCBPtr),y Get SUBCMD in A
jmp (.8,x)
.8 .DA TERMX.IAC.WILL
.DA TERMX.IAC.WONT
.DA TERMX.IAC.DO
.DA TERMX.IAC.DONT
*--------------------------------------
TERMX.IAC.SB ldy #S.DCB.TTY.INBUF+2
lda (ZPDCBPtr),y Get SUBCMD in A
cmp #TN.O.TTYPE
bne TERMX.IAC.SB.9
iny
lda (ZPDCBPtr),y
cmp #SB.SEND
bne TERMX.IAC.SB.9
ldx #0
.1 lda SB.IS.TTYPE,x
jsr TERMX.COUT
inx
cpx #SB.IS.TTYPE.LEN
bne .1
TERMX.IAC.SB.9 jmp TERMX.SETM.0
*--------------------------------------
TERMX.IAC.WILL ldx #WILLDO.CNT-1
.1 cmp WILLDO,x
beq .7
dex
bpl .1
ldx #WILLDONT.CNT-1
.2 cmp WILLDONT,x
beq TERMX.IAC.WONT Send DONT
dex
bpl .2
jmp TERMX.SETM.0
.7 ldx #DO
bra TERMX.IAC.SendAX
*--------------------------------------
TERMX.IAC.DO ldx #DOWILL.CNT-1
.1 cmp DOWILL,x
beq .7
dex
bpl .1
ldx #DOWONT.CNT-1
.2 cmp DOWONT,x
beq TERMX.IAC.DONT Send WONT
dex
bpl .2
jmp TERMX.SETM.0
.7 ldx #WILL
.HS 2C BIT ABS
*--------------------------------------
TERMX.IAC.DONT ldx #WONT
.HS 2C BIT ABS
*--------------------------------------
TERMX.IAC.WONT ldx #DONT
*--------------------------------------
TERMX.IAC.SendAX
pha push CMD
phx
lda #IAC
jsr TERMX.COUT
pla
jsr TERMX.COUT
pla
jsr TERMX.COUT
jmp TERMX.SETM.0
*--------------------------------------
TERMX.RIS ldy #S.DCB.TTY.M
.1 lda RESET.VALUES-S.DCB.TTY.M,y
@ -1008,12 +875,12 @@ TERMX.EL ldx CsiPCnt
beq TERMX.EL0 Erase EOL
lda CsiP
beq TERMX.EL0 Erase EOL
beq TERMX.EL0 0:Erase EOL
cmp #1
beq TERMX.EL1 Erase SOL
dec
beq TERMX.EL1 1:Erase SOL
cmp #2 Erase Line
dec 2:Erase Line
beq TERMX.EL2
TERMX.EL.8 clc
@ -1213,15 +1080,15 @@ TERMX.ED ldx CsiPCnt
beq TERMX.ED0
.1 lda CsiP
beq TERMX.ED0
beq TERMX.ED0 0...
cmp #1
dec 1 ?
beq TERMX.ED1
.2 cmp #2
.2 dec 2 ?
beq TERMX.ED2
clc
TERMX.ED.8 clc
rts
*--------------------------------------
TERMX.ED0 ldy #S.DCB.TTY.CV Erase Cursor -> Bottom
@ -1275,11 +1142,151 @@ TERMX.ED.2 sty .1+1
.9 rts
*--------------------------------------
TERMX.Title.ON ldy #S.DCB.TTY.bTITLE
TERMX.IAC ldy #S.DCB.TTY.INBUF
lda (ZPDCBPtr),y
bmi TERMX.RTS2
inc
sta (ZPDCBPtr),y
tay
lda #$ff
jsr TERM.GetBufByte
sta (ZPDCBPtr),y
cpy #S.DCB.TTY.INBUF+1 CMD ?
beq TERMX.ED.8 yes, wait for additional bytes
ldy #S.DCB.TTY.INBUF+1
lda (ZPDCBPtr),y get back CMD
cmp #SB
bne .1 not a SB/SE....stop with CMD/SUBCMD
jsr TERM.GetBufByte
cmp #SE
bne TERMX.ED.8 wait for ending SE....keep bIACMode
bra TERMX.IAC.SB
ldy #S.DCB.TTY.INBUF+1
lda (ZPDCBPtr),y get back CMD
.1 cmp #IAC
beq TERMX.IAC.SB.9
sec
sbc #WILL
bcc TERMX.IAC.SB.9
asl
tax
ldy #S.DCB.TTY.INBUF+2
lda (ZPDCBPtr),y Get SUBCMD in A
jmp (.8,x)
.8 .DA TERMX.IAC.RWILL
.DA TERMX.IAC.RWONT
.DA TERMX.IAC.RDO
.DA TERMX.IAC.RDONT
*--------------------------------------
TERMX.IAC.SB ldy #S.DCB.TTY.INBUF+2
lda (ZPDCBPtr),y Get SUBCMD in A
cmp #TN.O.TTYPE
bne TERMX.IAC.SB.9
iny
lda (ZPDCBPtr),y
cmp #SB.SEND
bne TERMX.IAC.SB.9
ldx #0
.1 lda SB.IS.TTYPE,x
jsr TERMX.COUT
inx
cpx #SB.IS.TTYPE.LEN
bne .1
TERMX.IAC.SB.9 jmp TERMX.SETM.0
*--------------------------------------
TERMX.IAC.RWILL cmp #TN.O.ECHO
* beq TERMX.IAC.SDO
beq TERMX.IAC.SB.9
ldx #TERMX.IAC1.L-1
.1 cmp TERMX.IAC1,x
beq TERMX.IAC.SB.9
dex
bpl .1
.8 bra TERMX.IAC.SDONT
*--------------------------------------
TERMX.IAC.RWONT ldx #TERMX.IAC1.L-1
.1 cmp TERMX.IAC1,x
beq TERMX.IAC.SDO
dex
bpl .1
jmp TERMX.SETM.0
*--------------------------------------
TERMX.IAC.RDO cmp #TN.O.ECHO
beq TERMX.IAC.SWONT
ldx #TERMX.IAC1.L-1
.1 cmp TERMX.IAC1,x
beq TERMX.IAC.SWILL
dex
bpl .1
bra TERMX.IAC.SWONT
*--------------------------------------
TERMX.IAC.RDONT ldx #TERMX.IAC1.L-1
.1 cmp TERMX.IAC1,x
beq TERMX.IAC.SWILL
dex
bpl .1
jmp TERMX.SETM.0
*--------------------------------------
TERMX.IAC.SWILL ldx #WILL
.HS 2C BIT ABS
*--------------------------------------
TERMX.IAC.SWONT ldx #WONT
.HS 2C BIT ABS
*--------------------------------------
TERMX.IAC.SDO ldx #DO
.HS 2C BIT ABS
*--------------------------------------
TERMX.IAC.SDONT ldx #DONT
*--------------------------------------
pha push CMD
phx
lda #IAC
jsr TERMX.COUT
pla
jsr TERMX.COUT
pla
jsr TERMX.COUT
jmp TERMX.SETM.0
*--------------------------------------
TERMX.CheckOA lda OPENAPPLE
php
bpl .5 Restore Title
ldy #S.DCB.TTY.bTITLE
lda (ZPDCBPtr),y
bmi .8
inc
sta (ZPDCBPtr),y
jsr TERM.GetDevName
@ -1315,20 +1322,25 @@ TERMX.Title.ON ldy #S.DCB.TTY.bTITLE
cpy #80
bne .4
TERMX.RTS2 rts
*--------------------------------------
TERMX.Title.OFF ldy #S.DCB.TTY.bTITLE
lda (ZPDCBPtr),y
bpl TERMX.RTS2
plp
rts
lda #$0
.5 ldy #S.DCB.TTY.bTITLE
lda (ZPDCBPtr),y
bpl .8
dec
sta (ZPDCBPtr),y
ldx #0
jsr TERMX.SCR0CPY
.8 plp
rts
*--------------------------------------
TERMX.LINE0CPY ldx #0
.HS 2C BIT ABS
TERMX.SCRCPY ldx #23
.1 lda ZPDCBPtr
TERMX.SCR0CPY lda ZPDCBPtr
clc
adc BUF.BL,x
sta .80+1
@ -1357,7 +1369,7 @@ TERMX.SCRCPY ldx #23
plx
dex
bpl .1
bpl TERMX.SCR0CPY
rts
@ -1545,15 +1557,22 @@ EscModes .DA #0,#0,#0,#0,#0,#0,#S.DCB.TTY.M.CSI,#S.DCB.TTY.M.G0,#S.DCB.TTY.M.G1
CsiCodes .AS "ABCDHJKfhlmnr"
CsiCodes.Cnt .EQ *-CsiCodes
*--------------------------------------
WILLDO .DA #TN.O.BINARY,#TN.O.SGA,#TN.O.ECHO
WILLDO.CNT .EQ *-WILLDO
WILLDONT .DA #TN.O.TSPEED,#TN.O.LINEMODE,#TN.O.STATUS
WILLDONT.CNT .EQ *-WILLDONT
DOWILL .DA #TN.O.BINARY,#TN.O.SGA,#TN.O.TTYPE,#TN.O.NAWS
DOWILL.CNT .EQ *-DOWILL
DOWONT .DA #TN.O.ECHO,#TN.O.NEWENV,#TN.O.XDISPLOC
.DA #TN.O.TSPEED,#TN.O.LFLOW,#TN.O.AUTH
DOWONT.CNT .EQ *-DOWONT
* Enabled both sides
*--------------------------------------
TERMX.IAC1 .DA #TN.O.BINARY,#TN.O.SGA,#TN.O.TTYPE,#TN.O.NAWS
TERMX.IAC1.L .EQ *-TERMX.IAC1
*--------------------------------------
* Disabled both sides
*--------------------------------------
*TERMX.IAC0 .DA #TN.O.TSPEED,#TN.O.LINEMODE,#TN.O.STATUS
* .DA #TN.O.NEWENV,#TN.O.XDISPLOC
* .DA #TN.O.LFLOW,#TN.O.AUTH
*TERMX.IAC0.L .EQ *-TERMX.IAC0
*--------------------------------------
* Enabled Local, Disabled remote
*--------------------------------------
*TERMX.IAC10 .DA #TN.O.ECHO
*TERMX.IAC10.L .EQ *-TERMX.IAC10
*--------------------------------------
SB.IS.TTYPE .DA #IAC,#SB,#TN.O.TTYPE,#SB.IS
TERMX.ENQ.REP .AS "vt100"
@ -1571,6 +1590,7 @@ RESET.VALUES .DA #0 MODE
.DA #0 CH.SAVE
.DA #0 CV
.DA #0 CV.SAVE
.DA #0 SCROLLTOP
.DA #23 SCROLLBOT
.DA #$80 bCURON