diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 111e5a0e..c52b4a5c 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/LIB/LIBTUI.S.DLG.txt b/LIB/LIBTUI.S.DLG.txt index dafc6914..ad1584ba 100644 --- a/LIB/LIBTUI.S.DLG.txt +++ b/LIB/LIBTUI.S.DLG.txt @@ -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 diff --git a/LIB/LIBTUI.S.txt b/LIB/LIBTUI.S.txt index 1995b15f..cda85d65 100644 --- a/LIB/LIBTUI.S.txt +++ b/LIB/LIBTUI.S.txt @@ -305,7 +305,9 @@ LIB.GetCTX >LDYA ZPObjPtr .8 ldy #S.OBJ.hParent lda (ZPCtxPtr),y + beq * >SYSCALL2 GetMemPtr + bcs * >STYA ZPCtxPtr rts diff --git a/ROOT/asmtest/TESTTUI.S.txt b/ROOT/asmtest/TESTTUI.S.txt index 47fe10bc..02317bd3 100644 --- a/ROOT/asmtest/TESTTUI.S.txt +++ b/ROOT/asmtest/TESTTUI.S.txt @@ -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 diff --git a/ROOT/ctest/testlib.c.txt b/ROOT/ctest/testlib.c.txt index 0da5732c..cf00d677 100644 --- a/ROOT/ctest/testlib.c.txt +++ b/ROOT/ctest/testlib.c.txt @@ -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); diff --git a/SYS/KERNEL.S.TERMX.txt b/SYS/KERNEL.S.TERMX.txt index addb82b6..37b0ea4b 100644 --- a/SYS/KERNEL.S.TERMX.txt +++ b/SYS/KERNEL.S.TERMX.txt @@ -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