diff --git a/.Docs/TERM.md b/.Docs/TERM.md index 4d7cbd05..7e61802c 100644 --- a/.Docs/TERM.md +++ b/.Docs/TERM.md @@ -1,94 +1,92 @@ # A2osX Terminal Codes Guide -### Updated February 10, 2020 +### Updated Apr. 15, 2023 A2osX terminal capabilities are based off of the standard VT-100 Terminal. This applies to users connected via Super Serial Cards, Telnet (via TelnetD server daemon) and the Apple console (physical keyboard/screen). All programs can use this facility to create rich interactive text mode applications. This includes both programs written in Assembly or Scripts written for the Shell (SH). The table below lists the codes you can use in your applications and their function. Consult the A2osX Shell Developers Guide for information on using these codes in scripts. Note, the Apple Console implementation only supports a subset of the VT-100 codes, these are noted in the last column as OK. -| Esc Sequence | Description | DEC Code | A2osX TERM | -|--------------|-------------|----------|------------| -|Esc[20h |Set new line mode|LMN|OK| -|Esc[?1h |Set cursor key to application|DECCKM|| -|Esc[?3h |Set number of columns to 132|DECCOLM|| -|Esc[?4h |Set smooth scrolling|DECSCLM|| -|Esc[?5h |Set reverse video on screen|DECSCNM|OK| -|Esc[?6h |Set origin to relative|DECOM|| -|Esc[?7h |Set auto-wrap mode|DECAWM|OK| -|Esc[?8h |Set auto-repeat mode|DECARM|| -|Esc[?9h |Set interlacing mode|DECINLM|| -|Esc[20l |Set line feed mode|LMN|OK| -|Esc[?1l |Set cursor key to cursor|DECCKM|| -|Esc[?2l |Set VT52 (versus ANSI) DECANM|| -|Esc[?3l |Set number of columns to 80|DECCOLM -|Esc[?4l |Set jump scrolling| DECSCLM -|Esc[?5l |Set normal video on screen| DECSCNM |OK| -|Esc[?6l |Set origin to absolute| DECOM -|Esc[?7l |Reset auto-wrap mode| DECAWM |OK| -|Esc[?8l |Reset auto-repeat mode| DECARM -|Esc[?9l |Reset interlacing mode| DECINLM || -|Esc= |Set alternate keypad mode| DECKPAM || -|Esc> |Set numeric keypad mode| DECKPNM || -|Esc(A |Set United Kingdom G0 character set| setukg0 |OK| -|Esc)A |Set United Kingdom G1 character set| setukg1 |OK| -|Esc(B |Set United States G0 character set| setusg0 |OK| -|Esc)B |Set United States G1 character set| setusg1 |OK| -|Esc(0 |Set G0 special chars. & line set| setspecg0 |OK| -|Esc)0 |Set G1 special chars. & line set| setspecg1 |OK| -|Esc(1 |Set G0 alternate character ROM| setaltg0 |OK| -|Esc)1 |Set G1 alternate character ROM| setaltg1 |OK| -|Esc(2 |Set G0 alt char ROM and spec. graphics| setaltspecg0 |OK| -|Esc)2 |Set G1 alt char ROM and spec. graphics| setaltspecg1 |OK| -|EscN |Set single shift 2| SS2 -|EscO |Set single shift 3| SS3 -|Esc[m |Turn off character attributes| SGR0 |OK| -|Esc[0m |Turn off character attributes| SGR0 |OK| -|Esc[1m |Turn bold mode on| SGR1 -|Esc[2m |Turn low intensity mode on| SGR2 -|Esc[4m |Turn underline mode on| SGR4 -|Esc[5m |Turn blinking mode on| SGR5 -|Esc[7m |Turn reverse video on| SGR7 |OK| -|Esc[8m |Turn invisible text mode on| SGR8 || -|Esc[FG;BGm| Set Text Color to FG and BG |OK| -|Esc[Line;Liner |Set top and bottom lines of a window| DECSTBM |OK| -|Esc[ValueA |Move cursor up n lines| CUU || -|Esc[ValueB |Move cursor down n lines| CUD || -|Esc[ValueC |Move cursor right n lines| CUF|| -|Esc[ValueD |Move cursor left n lines| CUB || -|Esc[H |Move cursor to upper left corner| cursorhome|| -|Esc[;H |Move cursor to upper left corner| cursorhome|| -|Esc[Line;ColumnH |Move cursor to screen location v,h| CUP |OK| -|Esc[f |Move cursor to upper left corner| hvhome || -|Esc[;f |Move cursor to upper left corner| hvhome || -|Esc[Line;Columnf |Move cursor to screen location v,h| CUP|| -|EscD |Move/scroll window up one line| IND || -|EscM |Move/scroll window down one line| RI || -|EscE |Move to next line| NEL || -|Esc7 |Save cursor position and attributes| DECSC | OK | -|Esc8 |Restore cursor position and attributes| DECSC | OK | -|EscH |Set a tab at the current column| HTS || -|Esc[g |Clear a tab at the current column| TBC|| -|Esc[0g |Clear a tab at the current column| TBC|| -|Esc[3g |Clear all tabs| TBC|| -|Esc#3 |Double-height letters, top half| DECDHL || -|Esc#4 |Double-height letters, bottom half| DECDHL|| -|Esc#5 |Single width, single height letters| DECSWL|| -|Esc#6 |Double width, single height letters| DECDWL|| -|Esc[K |Clear line from cursor right| EL0 |OK| -|Esc[0K |Clear line from cursor right| EL0 |OK| -|Esc[1K |Clear line from cursor left | EL1 |OK| -|Esc[2K |Clear entire line| EL2 |OK| -|Esc[J |Clear screen from cursor down| ED0 |OK| -|Esc[0J |Clear screen from cursor down | ED0 |OK| -|Esc[1J |Clear screen from cursor up | ED1 |OK| -|Esc[2J |Clear entire screen | ED2 |OK| -|Esc5n |Device status report | DSR || -|Esc0n |Response: terminal is OK | DSR|| -|Esc3n |Response: terminal is not OK | DSR|| -|Esc6n |Get cursor position | DSR |OK| -|EscLine;ColumnR |Response: cursor is at v,h | CPR |OK| -|Esc[c |Identify what terminal type | DA || -|Esc[0c |Identify what terminal type (another)| DA|| -|Esc[?1;Value0c |Response: terminal type code n | DA || -|Escc |Reset terminal to initial state| RIS |OK| +| Esc Sequence | Description | DEC Code | A2osX TERM | +|---------------|-------------|----------|------------| +|Esc[20h |Set new line mode|LMN|OK| +|Esc[?1h |Set cursor key to application|DECCKM|| +|Esc[?3h |Set number of columns to 132|DECCOLM|| +|Esc[?4h |Set smooth scrolling|DECSCLM|| +|Esc[?5h |Set reverse video on screen|DECSCNM|OK| +|Esc[?6h |Set origin to relative|DECOM|| +|Esc[?7h |Set auto-wrap mode|DECAWM|OK| +|Esc[?8h |Set auto-repeat mode|DECARM|| +|Esc[?9h |Set interlacing mode|DECINLM|| +|Esc[20l |Set line feed mode|LMN|OK| +|Esc[?1l |Set cursor key to cursor|DECCKM|| +|Esc[?2l |Set VT52 (versus ANSI) |DECANM|| +|Esc[?3l |Set number of columns to 80|DECCOLM || +|Esc[?4l |Set jump scrolling| DECSCLM || +|Esc[?5l |Set normal video on screen| DECSCNM |OK| +|Esc[?6l |Set origin to absolute| DECOM || +|Esc[?7l |Reset auto-wrap mode| DECAWM |OK| +|Esc[?8l |Reset auto-repeat mode| DECARM || +|Esc[?9l |Reset interlacing mode| DECINLM || +|Esc= |Set alternate keypad mode| DECKPAM || +|Esc> |Set numeric keypad mode| DECKPNM || +|Esc(A |Set United Kingdom G0 character set| setukg0 |OK| +|Esc)A |Set United Kingdom G1 character set| setukg1 |OK| +|Esc(B |Set United States G0 character set| setusg0 |OK| +|Esc)B |Set United States G1 character set| setusg1 |OK| +|Esc(0 |Set G0 special chars. & line set| setspecg0 |OK| +|Esc)0 |Set G1 special chars. & line set| setspecg1 |OK| +|Esc(1 |Set G0 alternate character ROM| setaltg0 |OK| +|Esc)1 |Set G1 alternate character ROM| setaltg1 |OK| +|Esc(2 |Set G0 alt char ROM and spec. graphics| setaltspecg0 |OK| +|Esc)2 |Set G1 alt char ROM and spec. graphics| setaltspecg1 |OK| +|EscN |Set single shift 2| SS2 +|EscO |Set single shift 3| SS3 +|Esc[m |Turn off character attributes| SGR0 |OK| +|Esc[0m |Turn off character attributes| SGR0 |OK| +|Esc[1m |Turn bold mode on| SGR1 || +|Esc[2m |Turn low intensity mode on| SGR2 || +|Esc[4m |Turn underline mode on| SGR4 || +|Esc[5m |Turn blinking mode on| SGR5 || +|Esc[7m |Turn reverse video on| SGR7 |OK| +|Esc[8m |Turn invisible text mode on| SGR8 || +|Esc[FG;BGm |Set Text Color to FG and BG ||OK| +|Esc[Line;Liner |Set top and bottom lines of a window| DECSTBM |OK| +|Esc[ValueA |Move cursor up n lines| CUU |OK| +|Esc[ValueB |Move cursor down n lines| CUD |OK| +|Esc[ValueC |Move cursor right n lines| CUF |OK| +|Esc[ValueD |Move cursor left n lines| CUB |OK| +|Esc[H |Move cursor to upper left corner| CUP |OK| +|Esc[Line;ColH |Move cursor to screen location v,h| CUP |OK| +|Esc[f |Move cursor to upper left corner| HVP|OK| +|Esc[Line;Colf |Move cursor to screen location v,h| HVP|OK| +|EscD |Move/scroll window up one line| IND |OK| +|EscE |Move to next line| NEL |OK| +|EscM |Move/scroll window down one line| RI |OK| +|Esc7 |Save cursor position and attributes| DECSC | OK | +|Esc8 |Restore cursor position and attributes| DECSC | OK | +|EscH |Set a tab at the current column| HTS || +|Esc[g |Clear a tab at the current column| TBC|| +|Esc[0g |Clear a tab at the current column| TBC|| +|Esc[3g |Clear all tabs| TBC|| +|Esc#3 |Double-height letters, top half| DECDHL || +|Esc#4 |Double-height letters, bottom half| DECDHL|| +|Esc#5 |Single width, single height letters| DECSWL|| +|Esc#6 |Double width, single height letters| DECDWL|| +|Esc[K |Clear line from cursor right| EL0 |OK| +|Esc[0K |Clear line from cursor right| EL0 |OK| +|Esc[1K |Clear line from cursor left | EL1 |OK| +|Esc[2K |Clear entire line| EL2 |OK| +|Esc[J |Clear screen from cursor down| ED0 |OK| +|Esc[0J |Clear screen from cursor down | ED0 |OK| +|Esc[1J |Clear screen from cursor up | ED1 |OK| +|Esc[2J |Clear entire screen | ED2 |OK| +|Esc5n |Device status report | DSR || +|Esc0n |Response: terminal is OK | DSR|| +|Esc3n |Response: terminal is not OK | DSR|| +|Esc6n |Get cursor position | DSR |OK| +|EscLine;ColR |Response: cursor is at v,h | CPR |OK| +|Esc[c |Identify what terminal type | DA || +|Esc[0c |Identify what terminal type (another)| DA|| +|Esc[?1;Value0c |Response: terminal type code n | DA || +|Escc |Reset terminal to initial state| RIS |OK| ## License A2osX is licensed under the GNU General Public License. @@ -107,4 +105,4 @@ The full A2osX license can be found **[Here](../LICENSE)**. ## Copyright -Copyright 2015 - 2019, Remy Gibert and the A2osX contributors. +Copyright 2015 - 2023, Remy Gibert and the A2osX contributors. diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index b13773a7..7a89a39b 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/CC.S.txt b/BIN/CC.S.txt index b69a3ca3..30f89ebe 100644 --- a/BIN/CC.S.txt +++ b/BIN/CC.S.txt @@ -692,7 +692,7 @@ ENV.LIB .AZ "LIB" LIB.O .AZ ".o" *-------------------------------------- CC.EscChars .AS "abefnrtv" - .HS 5C27223F + .HS 5C27223F \'"? CC.EscChars.Cnt .EQ *-CC.EscChars CC.EscCodes .HS 07081B0C0A0D090B .HS 5C27223F diff --git a/BIN/EDIT.S.CTRL.txt b/BIN/EDIT.S.CTRL.txt index c904fe0d..52d72628 100644 --- a/BIN/EDIT.S.CTRL.txt +++ b/BIN/EDIT.S.CTRL.txt @@ -36,6 +36,7 @@ Ctrl.DEL jsr BUF.ComputeCOffset jsr Ctrl.BS bcs .9 + jmp Ctrl.Z .8 clc @@ -255,60 +256,40 @@ Ctrl.L jsr BUF.GetLine *-------------------------------------- Ctrl.CR lda #C.CR jsr BUF.InsertA - bcs .99 + bcs .9 - jsr SCRN.LineBufInitEdit CEOL - - >STZ.G FileX >INCW.G FileY + >STZ.G FileX + >LDA.G ScreenX + beq .1 + + jmp SCRN.UpdateViewPort +*-------------------------------------- +.1 jsr SCRN.LineBufInitEdit +CEOL + jsr SCRN.LineBufOut + bcs .9 + + >LDA.G CurY + >CMP.G ViewPortHm1 + bne .2 bottom line ? + + jmp SCRN.UpdateViewPort +*-------------------------------------- +.2 inc + >STA.G CurY >STZ.G CurX - - >LDA.G CurY - >CMP.G ViewPortHm1 - bne .1 - - jsr SCRN.LineBufOut Bottom line, CEOL... - bcs .99 - - jmp SCRN.UpdateViewPort ...and scroll - -.1 dec - >CMP.G ViewPortHm1 - beq .6 No scroll needed - - >PUSHW LineBufPtr - >PUSHW L.SEQ.SCROLLCURDN - - >LDA.G CurY - inc - inc - >PUSHA - >LDA.G ScreenH - dec - >PUSHA - >PUSHBI 2 - jsr SCRN.LineBufSprintf - -.99 bcs .9 - - >PUSHW LineBufPtr - >PUSHW L.SEQ.SCROLLRGN - >LDA.G ScreenH - dec - >PUSHA - >PUSHBI 1 - jsr SCRN.LineBufSprintf + + jsr SCRN.InsLineAtCurY bcs .9 -.6 jsr SCRN.LineBufOut - bcs .9 - - >INC.G CurY - jsr BUF.ComputeCOffset jsr SCRN.UpdateCurrentLine + bcs .9 + jmp SCRN.GotoCurXCurY +* jmp SCRN.UpdateViewPort + .9 rts *-------------------------------------- Ctrl.O ldy #FileY+1 @@ -405,24 +386,7 @@ Ctrl.Y jsr BUF.GetNextLine tya Y = line length >STA.G FileX - >LDA.G FileY - sec - >SBC.G ViewPortHm1 - tax - >LDA.G FileY+1 - sbc #0 - bcs .2 - - >LDA.G FileY - tax - lda #0 - -.2 >STA.G ScreenY+1 - dey - txa - sta (pData),y - - jmp SCRN.UpdateMainAndStatus + jmp SCRN.UpdateViewPort *-------------------------------------- Ctrl.F >LDYA L.DLG.FIND jsr DLG.Open @@ -600,6 +564,7 @@ Ctrl.D jsr BUF.DelSel bcs Ctrl.D.8 jsr BUF.ResetSel + jsr SCRN.CursorAdjust jsr SCRN.UpdateViewPort jsr SCRN.UnSaved will update TopBar @@ -648,18 +613,17 @@ Ctrl.Z jsr BUF.ComputeCOffset jsr SCRN.ResetScrollRgn bcs .9 - jsr SCRN.UpdateCurrentLine - bcs .9 - jsr SCRN.UpdateLast bcs .9 .8 jsr SCRN.UpdateCurrentLine bcs .9 -.80 jsr SCRN.UnSaved - jsr SCRN.GotoCurXCurY - jmp SCRN.UpdateStatusBar +.80 jsr SCRN.CursorAdjust + jsr SCRN.UpdateViewPort + jsr SCRN.UnSaved will update TopBar + jmp SCRN.UpdateMainAndStatus + .9 rts *-------------------------------------- MAN diff --git a/BIN/EDIT.S.DLG.txt b/BIN/EDIT.S.DLG.txt index 8130c9b1..9f930e6c 100644 --- a/BIN/EDIT.S.DLG.txt +++ b/BIN/EDIT.S.DLG.txt @@ -8,64 +8,65 @@ DLG.Open >STYA ZPPTR2 lda #0 >SYSCALL GetMem bcs .99 - + >STYA ZPPTR1 txa >STA.G hDLG - + ldy #0 - + .1 lda (ZPPTR2),y sta (ZPPTR1),y iny tya cmp (ZPPTR2) bne .1 - + jsr DLG.SetOrigin sty TmpByte - + jsr SCRN.GotoXY bcs .9 - - ldy #S.DLG.Title - jsr DLG.DrawBar + + jsr DLG.DrawTBar .99 bcs .9 - + jsr SCRN.LineBufInitDLG - + ldy #S.DLG.W lda (ZPPTR1),y dec + dec tax - + lda #C.SPACE + .3 jsr SCRN.ToLineBuf dex bne .3 jsr DLG.VBarToLineBuf - + ldy #S.DLG.H lda (ZPPTR1),y dec dec tax - + .4 phx inc TmpByte - + ldy #S.DLG.X lda (ZPPTR1),y tax ldy TmpByte jsr SCRN.GotoXY bcs .9 - + jsr SCRN.LineBufOut bcs .9 - + plx dex bne .4 @@ -75,42 +76,42 @@ DLG.Open >STYA ZPPTR2 ldy #S.DLG.X lda (ZPPTR1),y tax - + ldy TmpByte jsr SCRN.GotoXY bcs .9 - - ldy #S.DLG.Status - jsr DLG.DrawBar + + jsr DLG.DrawSBar bcs .9 jmp DLG.CTRL.DrawAll -.9 rts +.9 rts *-------------------------------------- DLG.Run jsr IO.GetCh bcs .9 - + cmp #3 beq .8 - + cmp #C.CR beq .8 cmp #C.TAB beq DLG.NextFocus + pha - + ldy #S.DLG.Focus lda (ZPPTR1),y get actual focused Ctrl tay - + pla jsr DLG.CTRL.CharIn - + bra DLG.Run - + .8 clc .9 rts *-------------------------------------- @@ -119,7 +120,7 @@ DLG.NextFocus ldy #S.DLG.Focus pha save it... tax - + .1 inx next one .2 txa @@ -137,50 +138,50 @@ DLG.NextFocus ldy #S.DLG.Focus txa ldy #S.DLG.Focus sta (ZPPTR1),y - + pla get old focused phx save new focused jsr DLG.CTRL.Focus - + pla jsr DLG.CTRL.Focus jmp DLG.Run *-------------------------------------- DLG.Close ldy #S.DLG.Y lda (ZPPTR1),y - + sta TmpByte - + >LDA.G ScreenY clc ldy #S.DLG.Y adc (ZPPTR1),y sta TmpIndex - + >LDA.G ScreenY+1 adc #0 sta TmpIndex+1 ldy #S.DLG.H lda (ZPPTR1),y - + jsr SCRN.UpdateMain.1 bcs .9 >LDA.G hDLG >SYSCALL FreeMem - + >STZ.G hDLG clc -.9 rts +.9 rts *-------------------------------------- DLG.CTRL.DrawAll ldy #S.DLG.Ctrls - + .5 lda (ZPPTR1),y beq .8 - + phy jsr DLG.CTRL.Draw ply @@ -192,7 +193,7 @@ DLG.CTRL.DrawAll .8 ldy #S.DLG.Focus lda (ZPPTR1),y jmp DLG.CTRL.Focus - + .9 rts *-------------------------------------- DLG.CTRL.Draw sty TmpByte Y=CtrlID @@ -208,24 +209,24 @@ DLG.CTRL.Draw.LBL jsr DLG.CTRL.GotoOrg bcs .9 - + ldy TmpByte CtrlID lda (ZPPTR1),y tay - + iny iny iny .1 lda (ZPPTR1),y beq .8 - + jsr SCRN.ToLineBuf iny bra .1 - + .8 jmp SCRN.LineBufOut - + .9 rts *-------------------------------------- DLG.CTRL.Draw.TB @@ -233,17 +234,17 @@ DLG.CTRL.Draw.TB jsr DLG.CTRL.GotoOrg bcs .9 - + ldy TmpByte lda (ZPPTR1),y tay - + iny iny iny - + iny - + iny lda (ZPPTR1),y @@ -252,38 +253,38 @@ DLG.CTRL.Draw.TB >SYSCALL GetMemPtr >STYA ZPPTR2 - + lda #C.SPACE jsr SCRN.ToLineBuf ldy #0 - + .1 lda (ZPPTR2),y beq .2 jsr SCRN.ToLineBuf iny bra .1 - + .2 tya tax - + ldy TmpByte lda (ZPPTR1),y tay - + iny iny iny - + txa sta (ZPPTR1),y CURPOS iny - -.3 txa + +.3 txa eor (ZPPTR1),y MAXCHAR beq .8 - + lda #C.SPACE jsr SCRN.ToLineBuf inx @@ -291,7 +292,7 @@ DLG.CTRL.Draw.TB .8 lda #C.SPACE jsr SCRN.ToLineBuf - + jmp SCRN.LineBufOut .9 rts *-------------------------------------- @@ -300,55 +301,62 @@ DLG.CTRL.Draw.OL jsr DLG.CTRL.GotoOrg bcs .9 - + ldy TmpByte lda (ZPPTR1),y tay S.DLG.Ctrl.OL - - iny X + + iny X iny Y iny shortcut - + iny varptr lda (ZPPTR1),y phy tay lda (pData),y ply - + iny value - + eor (ZPPTR1),y tax - + iny label - - lda #"(" + + lda #'(' jsr SCRN.ToLineBuf - lda #"o" - cpx #0 + lda #C.SO + jsr SCRN.ToLineBuf + + lda #'`' + cpx #0 beq .2 lda #C.SPACE - + .2 jsr SCRN.ToLineBuf - lda #")" + + lda #C.SI + jsr SCRN.ToLineBuf + + lda #')' jsr SCRN.ToLineBuf lda #C.SPACE jsr SCRN.ToLineBuf - + .3 lda (ZPPTR1),y beq .4 jsr SCRN.ToLineBuf iny bra .3 - + .4 lda #C.SPACE jsr SCRN.ToLineBuf - + .8 jmp SCRN.LineBufOut .9 rts @@ -358,27 +366,27 @@ DLG.CTRL.Draw.BUT jsr DLG.CTRL.GotoOrg bcs .9 - + ldy TmpByte CtrlID lda (ZPPTR1),y tay - + iny iny iny - + iny - + lda #C.SPACE - jsr SCRN.ToLineBuf + jsr SCRN.ToLineBuf .1 lda (ZPPTR1),y beq .8 - + jsr SCRN.ToLineBuf iny bra .1 - + .8 lda #C.SPACE jsr SCRN.ToLineBuf @@ -386,7 +394,7 @@ DLG.CTRL.Draw.BUT .9 rts *-------------------------------------- DLG.CTRL.Focus sta TmpByte A=CtrlID - + tay lda (ZPPTR1),y Ctrl Definition tay @@ -400,28 +408,28 @@ DLG.CTRL.Focus.LBL rts DLG.CTRL.Focus.TB jsr SCRN.LineBufInitTB - + jsr DLG.CTRL.GotoOrg - + ldy #S.DLG.Focus lda (ZPPTR1),y eor TmpByte bne .1 sec - + .1 lda #C.SPACE bcc .2 lda #'[' .2 jsr SCRN.ToLineBuf jsr DLG.CTRL.GotoEnd - + ldy #S.DLG.Focus lda (ZPPTR1),y eor TmpByte bne .3 sec - + .3 lda #C.SPACE bcc .4 lda #']' @@ -432,68 +440,68 @@ DLG.CTRL.Focus.TB ldy TmpByte CtrlID lda (ZPPTR1),y tay - + iny skip Ctrl Type lda (ZPPTR1),y clc - + ldy #S.DLG.X adc (ZPPTR1),y pha - + ldy TmpByte CtrlID lda (ZPPTR1),y tay - + iny iny iny pla - + sec +1 adc (ZPPTR1),y tax - + ldy TmpByte CtrlID lda (ZPPTR1),y tay - + iny skip Ctrl Type iny skip X - + lda (ZPPTR1),y clc ldy #S.DLG.Y adc (ZPPTR1),y - + tay - + jmp SCRN.GotoXY DLG.CTRL.Focus.OL jsr SCRN.LineBufInitLBL - + jsr DLG.CTRL.GotoOrg - + ldy #S.DLG.Focus lda (ZPPTR1),y eor TmpByte bne .1 sec - + .1 lda #'(' bcc .2 lda #'[' .2 jsr SCRN.ToLineBuf jsr DLG.CTRL.GotoEnd - + ldy #S.DLG.Focus lda (ZPPTR1),y eor TmpByte bne .3 sec - + .3 lda #')' bcc .4 lda #']' @@ -503,31 +511,31 @@ DLG.CTRL.Focus.OL jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf jmp SCRN.LineBufOut - + DLG.CTRL.Focus.BUT jsr SCRN.LineBufInitBut - + jsr DLG.CTRL.GotoOrg - + ldy #S.DLG.Focus lda (ZPPTR1),y eor TmpByte bne .1 sec - + .1 lda #C.SPACE bcc .2 lda #'[' .2 jsr SCRN.ToLineBuf jsr DLG.CTRL.GotoEnd - + ldy #S.DLG.Focus lda (ZPPTR1),y eor TmpByte bne .3 sec - + .3 lda #C.SPACE bcc .4 lda #']' @@ -538,45 +546,45 @@ DLG.CTRL.Focus.BUT DLG.CTRL.GotoOrg clc .HS B0 BCS -DLG.CTRL.GotoEnd +DLG.CTRL.GotoEnd sec php - + ldy TmpByte CtrlID lda (ZPPTR1),y tay - + iny skip Ctrl Type lda (ZPPTR1),y clc - + ldy #S.DLG.X adc (ZPPTR1),y plp bcc .1 - + >PUSHA jsr DLG.CTRL.GetWitdh clc adc (pStack) inc pStack - + .1 tax - + ldy TmpByte CtrlID lda (ZPPTR1),y tay - + iny skip Ctrl Type iny skip X - + lda (ZPPTR1),y clc ldy #S.DLG.Y adc (ZPPTR1),y - + tay - + DLG.CTRL.GotoXY >PUSHW LineBufPtr >PUSHW L.MSG.GOTOXY tya @@ -588,41 +596,41 @@ DLG.CTRL.GotoXY >PUSHW LineBufPtr >PUSHA >PUSHBI 2 >SYSCALL SPrintF - + .2 lda (LineBufPtr) beq .8 inc LineBufPtr bne .2 inc LineBufPtr+1 bra .2 - -.8 rts + +.8 rts *-------------------------------------- DLG.SetOrigin ldy #S.DLG.X lda (ZPPTR1),y bne .1 - + >LDA.G ScreenW ldy #S.DLG.W sec sbc (ZPPTR1),y - + lsr - + ldy #S.DLG.X sta (ZPPTR1),y - + .1 tax ldy #S.DLG.Y lda (ZPPTR1),y bne .2 - + >LDA.G ViewPortHm1 ldy #S.DLG.H sec sbc (ZPPTR1),y - + lsr ldy #S.DLG.Y sta (ZPPTR1),y @@ -635,12 +643,12 @@ DLG.CTRL.GetWitdh ldy TmpByte CtrlID lda (ZPPTR1),y tay - + lda (ZPPTR1),y tax - + jmp (J.DLG.CTRL.GetWitdh,x) -*-------------------------------------- +*-------------------------------------- DLG.CTRL.GetWitdh.LBL clc rts @@ -661,35 +669,35 @@ DLG.CTRL.GetWitdh.OL iny iny iny - + ldx #0 - + .1 inx iny lda (ZPPTR1),y bne .1 - + txa rts - + DLG.CTRL.GetWitdh.BUT iny iny iny - + ldx #0 - + .1 inx iny lda (ZPPTR1),y bne .1 - + txa rts *-------------------------------------- DLG.CTRL.CharIn sty TmpByte A=CtrlID pha - + lda (ZPPTR1),y Ctrl Definition tay lda (ZPPTR1),y Ctrl Type @@ -704,10 +712,10 @@ DLG.CTRL.CharIn.LBL DLG.CTRL.CharIn.TB cmp #C.DEL beq .5 - + cmp #C.SPACE bcc .9 - + pha iny @@ -717,13 +725,13 @@ DLG.CTRL.CharIn.TB iny cmp (ZPPTR1),y MAXCHAR beq .7 - + pha - + inc dey sta (ZPPTR1),y CURPOS - + iny iny @@ -747,7 +755,7 @@ DLG.CTRL.CharIn.TB >SYSCALL PutChar clc rts - + .5 iny iny iny @@ -775,12 +783,12 @@ DLG.CTRL.CharIn.TB >SYSCALL PutChar clc rts - + .7 pla .8 clc rts - + .9 sec rts *-------------------------------------- @@ -802,9 +810,9 @@ DLG.CTRL.CharIn.OL ply sta (pData),y - + jmp DLG.CTRL.DrawAll - + .8 clc rts *-------------------------------------- @@ -812,40 +820,72 @@ DLG.CTRL.CharIn.BUT clc rts *-------------------------------------- -DLG.DrawBar phy - jsr SCRN.LineBufInitDLGBar - +DLG.DrawTBar ldx #SEQ.DLG.TBAR-SEQS + jsr SCRN.LineBufInit + ldy #S.DLG.W lda (ZPPTR1),y + dec + dec tax - ply + ldy #S.DLG.Title lda (ZPPTR1),y tay - + .1 lda (ZPPTR1),y beq .11 jsr SCRN.ToLineBuf dex + beq .3 + iny bra .1 - + .11 lda #C.SPACE - + .2 jsr SCRN.ToLineBuf dex bne .2 - - ldy #0 -.3 lda SEQ.NORM,y - beq .4 +.3 ldx #SEQ.DLG.TBAR.E-SEQS + jsr SCRN.SEQS.ToLineBuf + +.4 jmp SCRN.LineBufOut +*-------------------------------------- +DLG.DrawSBar ldx #SEQ.DLG.SBAR-SEQS + jsr SCRN.LineBufInit + + ldy #S.DLG.W + lda (ZPPTR1),y + dec + dec + tax + + ldy #S.DLG.Status + lda (ZPPTR1),y + tay + +.1 lda (ZPPTR1),y + beq .11 jsr SCRN.ToLineBuf - iny - bra .3 + dex + beq .3 + iny + bra .1 + +.11 lda #C.SPACE + +.2 jsr SCRN.ToLineBuf + dex + bne .2 + +.3 ldx #SEQ.DLG.SBAR.E-SEQS + jsr SCRN.SEQS.ToLineBuf + .4 jmp SCRN.LineBufOut *-------------------------------------- DLG.VBarToLineBuf @@ -857,7 +897,7 @@ DLG.VBarToLineBuf jsr SCRN.ToLineBuf iny bra .1 - + .8 rts *-------------------------------------- MAN diff --git a/BIN/EDIT.S.IO.txt b/BIN/EDIT.S.IO.txt index 0e5d3eb3..22ca2987 100644 --- a/BIN/EDIT.S.IO.txt +++ b/BIN/EDIT.S.IO.txt @@ -57,7 +57,7 @@ IO.GetCh.1 tax rts *-------------------------------------- .11 lda (pData) #EscBufferPtr - cmp #15 + cmp #21 bcc .10 .19 >STZ.G bEscMode diff --git a/BIN/EDIT.S.SCRN.txt b/BIN/EDIT.S.SCRN.txt index 04784420..5c8a8c92 100644 --- a/BIN/EDIT.S.SCRN.txt +++ b/BIN/EDIT.S.SCRN.txt @@ -9,22 +9,8 @@ SCRN.Init >PUSHW L.SEQ.INIT >PUSHBI 1 >SYSCALL PrintF bcs SCRN.Init.9 - - jmp SCRN.Home -*-------------------------------------- -SCRN.Repaint lda #$ff - >STA.G bUpdateTop - >STA.G bUpdateStatus - - jsr SCRN.UpdateTopBar - bcs SCRN.Init.9 - - jsr SCRN.GotoCurXCurY - bcs SCRN.Init.9 - - jmp SCRN.UpdateMainAndStatus - -SCRN.Init.9 rts + + jsr SCRN.ResetScrollRgn *-------------------------------------- SCRN.Home lda #0 @@ -35,6 +21,53 @@ SCRN.Home lda #0 cpy #CurY+1 bne .1 + + rts +*-------------------------------------- +SCRN.Repaint jsr SCRN.GotoCurXCurY + bcs SCRN.Init.9 + + lda #$ff + >STA.G bUpdateStatus + + jsr SCRN.UpdateTopBar + bcs SCRN.Init.9 + + jmp SCRN.UpdateMainAndStatus + +SCRN.Init.8 clc +SCRN.Init.9 rts +*-------------------------------------- +SCRN.InsLineAtCurY + >LDA.G CurY + >CMP.G ViewPortHm1 + beq .8 + + jsr SCRN.GotoCurXCurY + bcs .9 + + >PUSHW L.SEQ.SCROLLCURDN + >LDA.G CurY + inc + inc + >PUSHA + >LDA.G ScreenH + dec + >PUSHA + >PUSHBI 2 + >SYSCALL PrintF + bcs .9 + + jsr SCRN.ResetScrollRgn + + +.8 clc +.9 rts +*-------------------------------------- +SCRN.DelLineAtCurY + + + clc rts *-------------------------------------- SCRN.ResetScrollRgn @@ -47,42 +80,18 @@ SCRN.ResetScrollRgn rts *-------------------------------------- SCRN.UnSaved >LDA.G bUnSaved - bne SCRN.UpdateTopBar.8 + bne SCRN.Init.8 dec - sta (pData),y + sta (pData),y bUnSaved *-------------------------------------- SCRN.UpdateTopBar - >LDA.G bUpdateTop - bmi SCRN.UpdateTopBar.1 -SCRN.UpdateTopBar.8 - clc - rts - -SCRN.UpdateTopBar.1 - lda #0 - sta (pData),y - - jsr SCRN.LineBufInitBar - ldx #SEQ.CURSAVE-SEQS - jsr SCRN.SEQS.ToLineBuf + jsr SCRN.LineBufInit ldy #1 jsr SCRN.LineBufGotoLineY - bcs .9 - - >LDA.G ScreenW - tax - - lda #C.SPACE - -.1 jsr SCRN.ToLineBuf - dex - bne .1 - - lda #C.CR - jsr SCRN.ToLineBuf + jsr SCRN.ResetBar >PUSHW LineBufPtr >PUSHW L.MSG.TOPBAR @@ -111,7 +120,6 @@ SCRN.UpdateTopBar.1 jmp SCRN.LineBufOut -.8 clc .9 rts *-------------------------------------- SCRN.UpdateViewPort @@ -189,6 +197,7 @@ SCRN.UpdateViewPort jsr SCRN.scrollUp ...and move content one line up bcc .41 + .9 rts .6 >LDA.G FileX @@ -251,6 +260,7 @@ SCRN.UpdateMain.1 bne .4 inc TmpIndex+1 + .4 dec TmpCount bne .1 @@ -261,7 +271,7 @@ SCRN.UpdateMain.1 jsr SCRN.GotoXY bcs SCRN.UpdateMain.9 - >PUSHW L.SEQ.CEOL + >PUSHW L.SEQ.EDIT >PUSHBI 0 >SYSCALL PrintF bcs SCRN.UpdateMain.9 @@ -356,6 +366,7 @@ SCRN.UpdateLineAtBufPtr .5 lda (BufPtr) cmp #'\' beq .50 + cmp #'%' bne .51 @@ -413,7 +424,7 @@ SCRN.UpdateStatusBar sta (pData),y jsr SCRN.ResetStatusBar - + >PUSHW LineBufPtr >PUSHW L.MSG.STATUSBAR @@ -451,15 +462,16 @@ SCRN.UpdateStatusBar .9 rts *-------------------------------------- SCRN.ResetStatusBar - jsr SCRN.LineBufInitBar - ldx #SEQ.CURSAVE-SEQS - jsr SCRN.SEQS.ToLineBuf + jsr SCRN.LineBufInit >LDA.G ScreenH tay jsr SCRN.LineBufGotoLineY +SCRN.ResetBar ldx #SEQ.BAR-SEQS + jsr SCRN.SEQS.ToLineBuf + >LDA.G ScreenW tax @@ -483,9 +495,9 @@ SCRN.CursorAdjust .2 tya >CMP.G FileX bcs .8 - + >STA.G FileX - + .8 clc rts *-------------------------------------- @@ -555,40 +567,26 @@ SCRN.scrollDn >PUSHW L.SEQ.SCROLLDN .9 rts *-------------------------------------- SCRN.LineBufInitBar - phx ldx #SEQ.BAR-SEQS bra SCRN.LineBufInit -SCRN.LineBufInitDLGBar - phx - ldx #SEQ.DLG.BAR-SEQS - bra SCRN.LineBufInit SCRN.LineBufInitDLG - phx ldx #SEQ.DLG-SEQS bra SCRN.LineBufInit SCRN.LineBufInitLBL - phx ldx #SEQ.DLG.LBL-SEQS bra SCRN.LineBufInit SCRN.LineBufInitTB - phx ldx #SEQ.DLG.TB-SEQS bra SCRN.LineBufInit SCRN.LineBufInitBut - phx ldx #SEQ.DLG.BUT-SEQS bra SCRN.LineBufInit SCRN.LineBufInitEdit - phx ldx #SEQ.EDIT-SEQS SCRN.LineBufInit >LDYA.G LineBufBase >STYA LineBufPtr - - jsr SCRN.SEQS.ToLineBuf - plx - rts *-------------------------------------- SCRN.SEQS.ToLineBuf lda SEQS,x @@ -597,6 +595,7 @@ SCRN.SEQS.ToLineBuf inx lda SEQS,x bne .1 + rts *-------------------------------------- SCRN.LineBufGotoLineY @@ -625,6 +624,7 @@ SCRN.LineBufSprintf SCRN.ToLineBuf sta (LineBufPtr) inc LineBufPtr bne .8 + inc LineBufPtr+1 .8 rts *-------------------------------------- diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index 1f465481..37e3d8f0 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -69,7 +69,7 @@ L.SEQ.SCROLLUP .DA SEQ.SCROLLUP L.SEQ.SCROLLDN .DA SEQ.SCROLLDN L.SEQ.SCROLLCURUP .DA SEQ.SCROLLCURUP L.SEQ.SCROLLCURDN .DA SEQ.SCROLLCURDN -L.SEQ.CEOL .DA SEQ.CEOL +L.SEQ.EDIT .DA SEQ.EDIT L.MSG.TERMCAP .DA MSG.TERMCAP L.MSG.TOPBAR .DA MSG.TOPBAR L.MSG.FILETYPES .DA MSG.TXTCR @@ -147,18 +147,13 @@ CS.INIT.RTS rts *-------------------------------------- CS.RUN >PUSHW L.MSG.TERMCAP >PUSHBI 0 - >SYSCALL PrintF Send Query for term W & H + >SYSCALL PrintF Send Query for term W & H bcs CS.INIT.RTS .1 jsr IO.GetCh bcs CS.INIT.RTS -* beq .11 - -* >SYSCALL PutChar -* bcs CS.INIT.RTS - -.11 >LDA.G ScreenW Wait for Response from terminal for W & H + >LDA.G ScreenW Wait for Response from terminal for W & H beq .1 jsr SCRN.Init @@ -260,7 +255,6 @@ CS.DOEVENT lda (pEvent) asl bpl .9 - >STA.G bUpdateTop >STA.G bUpdateStatus .9 sec @@ -304,16 +298,25 @@ CS.QUIT ldy #hLineBuf CS.END SEQS .EQ * SEQ.BAR .CZ "\e[7m\e[37;40m" -SEQ.DLG.BAR .CS "\e[0m\e[37;40m" - .DA #C.SO,#'x',#C.SI +SEQ.DLG.TBAR .CS "\e[0m\e[93;104m" + .DA #C.SO,#'l',#C.SI .CZ "\e[7m\e[37;40m" -SEQ.DLG .CS "\e[30;46m" +SEQ.DLG.TBAR.E .CS "\e[0m\e[93;104m" + .DA #C.SO,#'k',#C.SI + .DA #0 +SEQ.DLG .CS "\e[93;104m" .DA #C.SO,#'x',#C.SI .DA #0 -SEQ.DLG.VBAR .CS "\e[37;40m" +SEQ.DLG.VBAR .CS "\e[93;104m" .DA #C.SO,#'x',#C.SI .DA #0 -SEQ.DLG.LBL .CZ "\e[0m\e[30;46m" +SEQ.DLG.SBAR .CS "\e[0m\e[93;104m" + .DA #C.SO,#'m',#C.SI + .CZ "\e[7m\e[37;40m" +SEQ.DLG.SBAR.E .CS "\e[0m\e[93;104m" + .DA #C.SO,#'j',#C.SI + .DA #0 +SEQ.DLG.LBL .CZ "\e[0m\e[30;104m" SEQ.DLG.TB .CZ "\e[0m\e[93;44m" SEQ.DLG.BUT .CZ "\e[7m\e[93;44m" SEQ.EDIT .CS "\e[0m\e[93;44m" +CEOL @@ -323,12 +326,16 @@ SEQ.INV .CZ "\e[7m" SEQ.CURSAVE .CZ "\e7" SEQ.CURRESTORE .CZ "\e8" *-------------------------------------- -SEQ.RESET .CZ "\ec" -SEQ.INIT .CS "\ec\e(B\e)0" -SEQ.SCROLLRGN .CZ "\e[?7l\e[2;%dr" -SEQ.SCROLLCURUP .CS "\e[?7l\e[%d;%dr" +SEQ.INIT .CS "\ec" + .CS "\e(B" font select + .CS "\e)0" font select + .CZ "\e[?7l" Disable Line Wrap +SEQ.RESET .CZ "\ec\e[?7h" Enable Line Wrap +*-------------------------------------- +SEQ.SCROLLRGN .CZ "\e[2;%dr" +SEQ.SCROLLCURUP .CS "\e[%d;%dr" SEQ.SCROLLUP .CZ "\eD" -SEQ.SCROLLCURDN .CS "\e[?7l\e[%d;%dr" +SEQ.SCROLLCURDN .CS "\e[%d;%dr" SEQ.SCROLLDN .CZ "\eM" *-------------------------------------- MSG.TERMCAP .CZ "\r\n\e[999;999H\e[6n" @@ -371,7 +378,7 @@ MSG.HELP .PS "All commands:" MSG.NEWFILE .AZ "newfile" EscChars .AS "DABC" EscChars.Cnt .EQ *-EscChars -EscAscii .DA #C.BS,#C.VT,#C.LF,#C.FS +EscAscii .DA #C.BS,#C.VT,#C.LF,#21 *-------------------------------------- S.DLG.Size .EQ 0 S.DLG.X .EQ 1 @@ -495,7 +502,7 @@ bEscMode .BS 1 bCSIMode .BS 1 bExit .BS 1 bUnSaved .BS 1 -bUpdateTop .BS 1 + bUpdateStatus .BS 1 hFileName .BS 1 diff --git a/BIN/FORTH.S.CL.txt b/BIN/FORTH.S.CL.txt index 0fbe3fd6..937cc6c1 100644 --- a/BIN/FORTH.S.CL.txt +++ b/BIN/FORTH.S.CL.txt @@ -14,9 +14,8 @@ CL.READN0X >PUSHW ZPCLBuf >PUSHBI 1 >SYSCALL SPrintF bcs .9 - - lda #$ff - sta CL.bReady + + dec CL.bReady * clc .9 rts *-------------------------------------- @@ -39,14 +38,15 @@ CL.CHARIN tax dex bpl .1 -.8 rts invalid \e[ sequence +.8 clc + rts invalid \e[ sequence .2 lda CL.MaxCnt bne .3 - + lda EscChars.Remap,x bra CL.READN0A - + .3 txa asl tax @@ -63,7 +63,7 @@ CL.CHARIN tax .5 lda CL.MaxCnt beq CL.READN0X - + cpx #C.SPACE bcc CL.CHARIN.CTRL @@ -74,12 +74,11 @@ CL.CHARIN tax *-------------------------------------- lda CL.Len beq .8 - + lda CL.Ptr beq .8 - lda #C.BS - >SYSCALL PutChar + jsr CL.BS.OUT dec CL.Ptr jmp CL.DEL @@ -101,26 +100,30 @@ CL.Insert ldy CL.Len txa sta (ZPCLBuf),y - inc CL.Ptr >SYSCALL PutChar + bcs .9 + + inc CL.Ptr + jsr CL.PrintEOL + bcs .9 lda CL.MaxCnt dec MaxCnt = 1, don't wait for CR bne .8 - lda #$ff - sta CL.bReady + dec CL.bReady .8 clc - rts + +.9 rts *-------------------------------------- CL.CHARIN.CTRL cpx #C.CR - beq .8 + beq .70 cpx #C.EOF - beq .9 + beq .71 cpx #3 Ctrl-C beq CL.CLR @@ -134,14 +137,13 @@ CL.CHARIN.CTRL cpx #C.CR bne .8 jmp CL.SUPPR - -.8 jsr CheckLFAfterCR + +.70 jsr CheckLFAfterCR bcs .9 - lda #$ff - sta CL.bReady +.71 dec CL.bReady - clc +.8 clc .9 rts *-------------------------------------- CL.CLR lda (ZPCLBuf) @@ -151,12 +153,12 @@ CL.CLR lda (ZPCLBuf) cmp CL.Len beq .2 - inc - sta CL.Ptr + inc CL.Ptr - lda #C.FS - >SYSCALL PutChar - bra .1 + jsr CL.FS.OUT + bcc .1 + + rts .2 ldy #0 @@ -170,9 +172,9 @@ CL.CLR lda (ZPCLBuf) *-------------------------------------- CL.Reset lda #0 sta (ZPCLBuf) - + CL.Reset.1 ldx #CL.Ptr - + .1 stz 0,x inx cpx #CL.bEscMode+1 @@ -181,38 +183,45 @@ CL.Reset.1 ldx #CL.Ptr >LDYA ZPCLBuf >STYA ZPCLBufPtr +CL.Reset.8 clc rts *-------------------------------------- CL.BS lda CL.Ptr - beq .9 + beq CL.Reset.8 dec CL.Ptr - lda #C.BS +CL.BS.OUT lda #C.BS >SYSCALL PutChar -.9 rts + rts *-------------------------------------- -CL.NAK lda CL.Ptr +CL.FS lda CL.Ptr cmp CL.Len - beq .9 + beq CL.Reset.8 inc sta CL.Ptr - lda #C.FS - >SYSCALL PutChar +CL.FS.OUT lda #C.ESC + >SYSCALL PutChar -.9 rts + lda #'[' + >SYSCALL PutChar + + lda #'C' + >SYSCALL PutChar + + rts *-------------------------------------- * Erase char UNDER cursor *-------------------------------------- CL.SUPPR lda CL.Len - beq CL.PrintEOL.8 + beq CL.Reset.8 lda CL.Ptr cmp CL.Len - beq CL.PrintEOL.8 + beq CL.Reset.8 *-------------------------------------- CL.DEL ldy CL.Ptr @@ -226,38 +235,42 @@ CL.DEL ldy CL.Ptr dec CL.Len *-------------------------------------- -CL.PrintEOL lda CL.Ptr +CL.PrintEOL ldy CL.Ptr -.1 cmp CL.Len - beq .2 +.1 cpy CL.Len + beq .8 - pha - tay + phy lda (ZPCLBuf),y >SYSCALL PutChar - pla - inc + ply + bcs .9 + + iny bra .1 .2 lda #C.SPACE >SYSCALL PutChar - lda CL.Ptr + bcs .9 -.3 cmp CL.Len - beq .4 + jsr CL.BS.OUT + bcs .9 - pha - lda #C.BS - >SYSCALL PutChar - pla - inc + ldy CL.Ptr + +.3 cpy CL.Len + beq .8 + + phy + jsr CL.BS.OUT + ply + bcs .9 + + iny bra .3 - -.4 lda #C.BS - >SYSCALL PutChar -CL.PrintEOL.8 clc - rts +.8 clc +.9 rts *-------------------------------------- CL.Print ldy #S.PS.hStdOut lda (pPS),y diff --git a/BIN/FORTH.S.txt b/BIN/FORTH.S.txt index 2426d433..0115a015 100644 --- a/BIN/FORTH.S.txt +++ b/BIN/FORTH.S.txt @@ -101,7 +101,7 @@ L.FMT.int32 .DA FMT.int32 J.ESC .DA CL.BS left arrow .DA HIS.GetNext .DA HIS.GetPrev - .DA CL.NAK right arrow + .DA CL.FS right arrow L.KEYWORDS .DA KEYWORDS I.KEYWORDS .DA GFX.TEXT .DA GFX.GR @@ -411,8 +411,8 @@ CS.RUN.LOOP >SLEEP .7 cmp #MLI.E.EOF beq .8 - cmp #3 - beq .99 + cmp #24 Ctrl-X + beq .8 pha >LDA.G hFile @@ -461,10 +461,11 @@ CS.FORTH.Run jsr CL.Reset .1 >SYSCALL GetChar bcs .9 I/O error -.2 cmp #3 Ctrl-C +.2 cmp #24 Ctrl-X beq .9 CS jsr CL.CHARIN + bcs .9 bit CL.bReady Something to execute ? bpl .1 @@ -938,7 +939,7 @@ OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace *-------------------------------------- EscChars .AS 'DBAC' EscChars.Cnt .EQ *-EscChars -EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS +EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#21 *-------------------------------------- KEYWORDS .AT "TEXT" .AT "GR" diff --git a/BIN/GOPHER.S.txt b/BIN/GOPHER.S.txt index c26d2b5b..243fc4ae 100644 --- a/BIN/GOPHER.S.txt +++ b/BIN/GOPHER.S.txt @@ -165,7 +165,9 @@ CS.RUN.LOOP0 jsr CS.Scr.SetStatusConn jsr CS.Scr.SetBuf jsr CS.Scr.SetStatusOkErr *-------------------------------------- -CS.RUN.LOOP lda hSCR +CS.RUN.LOOP >SLEEP + + lda hSCR >LIBCALL hLIBTUI,LIBTUI.Exec bcs CS.RUN.LOOP.9 diff --git a/BIN/IRC.S.txt b/BIN/IRC.S.txt index 1206eb8c..b8d57cbf 100644 --- a/BIN/IRC.S.txt +++ b/BIN/IRC.S.txt @@ -980,8 +980,15 @@ CS.RUN.CHARIN.RIGHT inc sta TextPtr - lda #C.FS + lda #C.ESC >SYSCALL PutChar + + lda #'[' + >SYSCALL PutChar + + lda #'C' + >SYSCALL PutChar + .9 rts *-------------------------------------- CS.DOEVENT lda (pEvent) @@ -1054,7 +1061,7 @@ MSG.NULL .HS 00 *-------------------------------------- EscChars .AS 'DBAC' EscChars.Cnt .EQ *-EscChars -EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS +EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#21 *-------------------------------------- IRC.REP.NOIDENT .AZ "*** No Ident response" IRC.REP.JOIN .AZ "JOIN" diff --git a/BIN/LSDEV.S.txt b/BIN/LSDEV.S.txt index aa963f76..4f09d8ab 100644 --- a/BIN/LSDEV.S.txt +++ b/BIN/LSDEV.S.txt @@ -113,12 +113,12 @@ DumpFD.BDEV >PUSHW L.MSG.DEV adc /S.FD.DEV >PUSHYA - ldy #S.FD.DEV.DRVPTR+1 + ldy #S.FD.DEV.BUSPTR+1 >PUSHB (ZPFDPtr),y dey >PUSHB (ZPFDPtr),y - >PUSHBI 7 + >PUSHBI 8 >SYSCALL PrintF bcs .9 @@ -223,6 +223,17 @@ DumpFD.PIPE >PUSHW L.MSG.PIPE DumpFD.T ldx Index >PUSHB hFDs,x + ldy #S.FD.DEV.BUSID + lda (ZPFDPtr),y + asl + asl + asl + asl + + iny #S.FD.DEV.DEVID + ora (ZPFDPtr),y + >PUSHA + lda (ZPFDPtr) S.FD.T tax >PUSHW L.FD.T,x @@ -246,10 +257,10 @@ CS.QUIT clc rts *-------------------------------------- CS.END -MSG0 .CZ "hFD Type Name Addr Status Typ/Sub IDString Version Size (BLK)" -MSG.DEV .CZ "%3d %4s %12s %H " +MSG0 .CZ "hFD ID Type Name Addr Status TP.ST IDString Version Size (BLK)" +MSG.DEV .CZ "%3d %h %4s %12s %H " MSG.DEV.ERR .CZ "[%h] Device Error.\r\n" -MSG.DEV.DIB .CZ "%s $%h/$%h %16S %03d.%03d " +MSG.DEV.DIB .CZ "%s %h.%h %16S %3d.%3d " MSG.DEV.B .CZ "%10u\r\n" MSG.DEV.C .CZ "n/a\r\n" MSG.PIPE .CZ "%3d %5s %s\r\n" diff --git a/BIN/SH.S.CL.txt b/BIN/SH.S.CL.txt index a26c56f8..bc372150 100644 --- a/BIN/SH.S.CL.txt +++ b/BIN/SH.S.CL.txt @@ -54,20 +54,21 @@ CL.CHARIN tax sta (pData),y Y=bEscMode txa - ldx #EscChars.Cnt-1 + ldx #IN.EscCharsCnt-1 -.1 cmp EscChars,x +.1 cmp IN.EscChars,x beq .2 dex bpl .1 -.8 rts invalid \e[ sequence +.8 clc + rts invalid \e[ sequence .2 >LDA.G CL.MaxCnt bne .3 - lda EscChars.Remap,x + lda IN.EscCodes,x bra CL.READN0A .3 txa @@ -103,10 +104,15 @@ CL.CHARIN tax >LDA.G CL.bSilent bmi .6 - lda #C.BS + jsr CL.BS.OUT + + lda #C.SPACE >SYSCALL PutChar + + jsr CL.BS.OUT .6 >DEC.G CL.Ptr + jmp CL.DEL *-------------------------------------- CL.Insert >LDA.G CL.Len @@ -163,17 +169,18 @@ CL.CHARIN.CTRL cpx #C.CR cpx #C.EOF beq .19 - cpx #3 Ctrl-C - beq CL.CLR - cpx #C.TAB bne .1 jmp HIS.Select .1 cpx #26 Ctrl-Z + beq CL.SUPPR + + cpx #3 Ctrl-C bne .8 - jmp CL.SUPPR + + jmp CL.CLR .18 jsr CheckLFAfterCR Check for any extra LF bcs .9 @@ -184,6 +191,98 @@ CL.CHARIN.CTRL cpx #C.CR .8 clc .9 rts *-------------------------------------- +* Erase char UNDER cursor +*-------------------------------------- +CL.SUPPR >LDA.G CL.Len + beq CL.PrintEOL.8 + + >LDA.G CL.Ptr + >CMP.G CL.Len + beq CL.PrintEOL.8 +*-------------------------------------- +CL.DEL pha CL.Ptr + +.1 ply + iny + lda (ZPCLBuf),y + dey + sta (ZPCLBuf),y + iny + phy + tya + + >CMP.G CL.Len + bne .1 + + pla + + >DEC.G CL.Len + + >LDA.G CL.bSilent + bmi CL.PrintEOL.8 +*-------------------------------------- +CL.PrintEOL >LDA.G CL.Ptr + + >CMP.G CL.Len + beq CL.PrintEOL.8 + +.1 pha + tay + lda (ZPCLBuf),y + >SYSCALL PutChar + pla + inc + >CMP.G CL.Len + bne .1 + + lda #C.SPACE + >SYSCALL PutChar + >LDA.G CL.Ptr + +.3 >CMP.G CL.Len + beq .4 + + pha + jsr CL.BS.OUT + pla + inc + bra .3 + +.4 jmp CL.BS.OUT + +CL.PrintEOL.8 clc + rts +*-------------------------------------- +CL.BS >LDA.G CL.Ptr + beq CL.BS.8 + + dec + sta (pData),y + + >LDA.G CL.bSilent + bpl CL.BS.OUT + +CL.BS.8 clc + rts + +CL.BS.OUT lda #C.BS + >SYSCALL PutChar + + rts +*-------------------------------------- +CL.FS >LDA.G CL.Ptr + >CMP.G CL.Len + beq CL.BS.8 + + inc + >STA.G CL.Ptr + + >LDA.G CL.bSilent + bmi CL.BS.8 + +CL.FS.OUT >LDYA L.MSG.FS + jmp PrintYANoCR +*-------------------------------------- CL.CLR >STZ.G HIS.Ptr CL.CLR.1 lda (ZPCLBuf) @@ -198,8 +297,8 @@ CL.CLR.1 lda (ZPCLBuf) inc >STA.G CL.Ptr - lda #C.FS - >SYSCALL PutChar + + jsr CL.FS.OUT bra .1 .2 ldy #0 @@ -239,95 +338,6 @@ CL.ReadReset lda #$ff sta (pData),y rts *-------------------------------------- -CL.BS >LDA.G CL.Ptr - beq .9 - - dec - sta (pData),y - - >LDA.G CL.bSilent - bmi .9 - - lda #C.BS - >SYSCALL PutChar -.9 rts -*-------------------------------------- -CL.NAK >LDA.G CL.Ptr - >CMP.G CL.Len - beq .9 - - inc - >STA.G CL.Ptr - - >LDA.G CL.bSilent - bmi .9 - - lda #C.FS - >SYSCALL PutChar - -.9 rts -*-------------------------------------- -* Erase char UNDER cursor -*-------------------------------------- -CL.SUPPR >LDA.G CL.Len - beq CL.PrintEOL.8 - >LDA.G CL.Ptr - >CMP.G CL.Len - beq CL.PrintEOL.8 -*-------------------------------------- -CL.DEL pha -.1 ply - iny - lda (ZPCLBuf),y - dey - sta (ZPCLBuf),y - iny - phy - tya - - >CMP.G CL.Len - bne .1 - - pla - - >DEC.G CL.Len - - >LDA.G CL.bSilent - bmi CL.PrintEOL.8 -*-------------------------------------- -CL.PrintEOL >LDA.G CL.Ptr - -.1 >CMP.G CL.Len - beq .2 - - pha - tay - lda (ZPCLBuf),y - >SYSCALL PutChar - pla - inc - bra .1 - -.2 lda #C.SPACE - >SYSCALL PutChar - >LDA.G CL.Ptr - -.3 >CMP.G CL.Len - beq .4 - - pha - lda #C.BS - >SYSCALL PutChar - pla - inc - bra .3 - -.4 lda #C.BS - >SYSCALL PutChar - -CL.PrintEOL.8 clc - rts -*-------------------------------------- MAN SAVE usr/src/bin/sh.s.cl LOAD usr/src/bin/sh.s diff --git a/BIN/SH.S.CMD.txt b/BIN/SH.S.CMD.txt index 1eb79863..46a75444 100644 --- a/BIN/SH.S.CMD.txt +++ b/BIN/SH.S.CMD.txt @@ -171,6 +171,7 @@ CMD.CD.YA >PUSHYA >PUSHWZ Allocate >SYSCALL RealPath bcs CMD.POPD.RTS + >STYA ZPPtr1 stx ZPTmpW Save hMem @@ -563,6 +564,7 @@ CMD.REN lda (ZPArgVBufPtr) >SYSCALL GetMem bcs .90 + >STYA ZPPtr2 stx ZPTmpW+1 @@ -630,6 +632,7 @@ CMD.FUNCTION lda (ZPArgVBufPtr) jsr CORE.ArgV.Next nothing after function name beq .10 + cmp #'{' bne .9 @@ -1109,6 +1112,7 @@ CMD.NEXT.LIST.TOKEN lda (pData),y sta ZPPtr1+1 ldy #0 + .10 jsr GetPtr1NextChar beq .3 @@ -1117,11 +1121,13 @@ CMD.NEXT.LIST.TOKEN sta (ZPCLBuf),y iny + .1 jsr GetPtr1NextChar beq .3 cmp #C.SPACE beq .3 + sta (ZPCLBuf),y iny bra .1 diff --git a/BIN/SH.S.txt b/BIN/SH.S.txt index 1d118785..b8cf8ae9 100644 --- a/BIN/SH.S.txt +++ b/BIN/SH.S.txt @@ -130,13 +130,14 @@ L.MSG.BATCHERR .DA MSG.BATCHERR L.MSG.ERROR .DA MSG.ERROR L.MSG.PID .DA MSG.PID L.MSG.ALIAS .DA MSG.ALIAS +L.MSG.FS .DA MSG.FS L.FMT.DATE .DA FMT.DATE L.FMT.Long .DA FMT.Long L.FMT.Byte .DA FMT.Byte -J.ESC .DA CL.BS left arrow +J.ESC .DA CL.BS .DA HIS.GetPrev up .DA HIS.GetNext down - .DA CL.NAK right + .DA CL.FS L.CD.. .DA CD.. L.IN .DA IN L.CMD .DA CMD @@ -623,6 +624,7 @@ MSG.ERROR .CS "[$%h]:%s." MSG.ECHOCRLF .CZ "\r\n" MSG.PID .CZ "PID=%d\r\n" MSG.ALIAS .CZ '%s = "%s"\r\n' +MSG.FS .CZ "\e[C" *-------------------------------------- FMT.DATE .AZ "%A, %B %d %Y %H:%M:%S" FMT.Long .AZ "%L" @@ -634,9 +636,22 @@ PS1 .AZ "${PS1}" HOME .AZ "${HOME}" EXECC .AZ "%s -C %s" *-------------------------------------- -EscChars .AS "DABC" -EscChars.Cnt .EQ *-EscChars -EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS +IN.EscChars .AS "DABC" +IN.EscCharsCnt .EQ *-EscChars +IN.EscCodes .DA #C.BS,#C.VT,#C.LF,#21 +*-------------------------------------- +* \e[1~ - Home +* \e[2~ - Insert +* \e[3~ - Delete +* \e[4~ - End +* \e[5~ - PgUp +* \e[6~ - PgDn +*-------------------------------------- +OUT.EscChars .AS "abefnrtv" + .HS 5C27223F \'"? +OUT.EscCharsCnt .EQ *-OUT.EscChars +OUT.EscCodes .HS 07081B0C0A0D090B + .HS 5C27223F *-------------------------------------- CD.. .AZ ".." *-------------------------------------- diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 3f4ef779..6b760362 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -147,7 +147,6 @@ C.SO .EQ 14 C.SI .EQ 15 C.XON .EQ 17 C.XOFF .EQ 19 -C.FS .EQ 21 C.ESC .EQ 27 C.SPACE .EQ 32 C.DEL .EQ 127 diff --git a/INC/LIBTCPIP.I.txt b/INC/LIBTCPIP.I.txt index 886d7cdd..c21857a9 100644 --- a/INC/LIBTCPIP.I.txt +++ b/INC/LIBTCPIP.I.txt @@ -180,22 +180,23 @@ S.SOCKET.TCP.S.TIMEWT .EQ 11 S.SOCKET.TCP.O .EQ S.SOCKET+1 * S.SOCKET.TCP.INSEQNUM .EQ S.SOCKET+2 Recv:Last SEQ received from remote -S.SOCKET.TCP.OUTNEXTSEQ .EQ S.SOCKET+6 Send:Next SEQ to send -S.SOCKET.TCP.OUTSENTSEQ .EQ S.SOCKET+10 Send:SEQ sent not yet ACKed (retransmit) +S.SOCKET.TCP.INACKNUM .EQ S.SOCKET+6 +S.SOCKET.TCP.OUTNEXTSEQ .EQ S.SOCKET+10 Send:Next SEQ to send +S.SOCKET.TCP.OUTSENTSEQ .EQ S.SOCKET+14 Send:SEQ sent not yet ACKed (retransmit) * -S.SOCKET.TCP.INTAIL .EQ S.SOCKET+14 -S.SOCKET.TCP.INHEAD .EQ S.SOCKET+16 -S.SOCKET.TCP.INFREE .EQ S.SOCKET+18 -S.SOCKET.TCP.INUSED .EQ S.SOCKET+20 +S.SOCKET.TCP.INTAIL .EQ S.SOCKET+18 +S.SOCKET.TCP.INHEAD .EQ S.SOCKET+20 +S.SOCKET.TCP.INFREE .EQ S.SOCKET+22 +S.SOCKET.TCP.INUSED .EQ S.SOCKET+24 * -S.SOCKET.TCP.OUTTAIL .EQ S.SOCKET+22 -S.SOCKET.TCP.OUTTAILSENT .EQ S.SOCKET+24 -S.SOCKET.TCP.OUTHEAD .EQ S.SOCKET+26 -S.SOCKET.TCP.OUTFREE .EQ S.SOCKET+28 -S.SOCKET.TCP.OUTTOSEND .EQ S.SOCKET+30 -S.SOCKET.TCP.OUTUSED .EQ S.SOCKET+32 +S.SOCKET.TCP.OUTTAIL .EQ S.SOCKET+26 +S.SOCKET.TCP.OUTTAILSENT .EQ S.SOCKET+28 +S.SOCKET.TCP.OUTHEAD .EQ S.SOCKET+30 +S.SOCKET.TCP.OUTFREE .EQ S.SOCKET+32 +S.SOCKET.TCP.OUTTOSEND .EQ S.SOCKET+34 +S.SOCKET.TCP.OUTUSED .EQ S.SOCKET+36 * -S.SOCKET.TCP .EQ S.SOCKET+34 +S.SOCKET.TCP .EQ S.SOCKET+38 *-------------------------------------- MAN SAVE inc/libtcpip.i diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 9a7f69ce..fa80c5d0 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -333,16 +333,16 @@ SKT.shutdown pha ldy #S.SOCKET.TCP.S lda (ZPPtrSKT),y - cmp #S.SOCKET.TCP.S.CLOSING + cmp #S.SOCKET.TCP.S.CLWAIT bne .10 - inc S.SOCKET.TCP.S.TIMEWT + lda #S.SOCKET.TCP.S.TIMEWT sta (ZPPtrSKT),y pla clc rts - +*-------------------------------------- .10 pla jsr SKT.GetTCB ldy #S.SOCKET.TCP.S @@ -350,15 +350,15 @@ SKT.shutdown pha cmp #S.SOCKET.TCP.S.ESTBLSH bne .1 - jsr SKT.SendOptFIN + jsr SKT.OUT.SendFINACK lda #S.SOCKET.TCP.S.FINWT1 jmp SKT.StoreTCB.S -.1 cmp #S.SOCKET.TCP.S.CLWAIT +.1 cmp #S.SOCKET.TCP.S.FINWT2 bne .2 - jsr SKT.SendOptFIN + jsr SKT.OUT.SendFINACK lda #S.SOCKET.TCP.S.LASTACK jmp SKT.StoreTCB.S @@ -390,19 +390,6 @@ SKT.shutdown.HQ jsr SKT.GetFromQueue >SYSCALL2 freemem * clc rts -*-------------------------------------- -SKT.SendOptFIN lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK - jsr TCP.OUT.SendOptA Send FIN/ACK - - ldx #3 - -.1 inc SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x - bne .8 - - dex - bpl .1 - -.8 rts */-------------------------------------- * # Read (STREAM) * ## C @@ -419,12 +406,14 @@ SKT.SendOptFIN lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK *\-------------------------------------- SKT.Read jsr SKT.PullhFDDataInPtrLen + jsr SKT.GetTCB + ldy #S.SOCKET.TCP.INUSED lda (ZPPtrSKT),y tax iny ora (ZPPtrSKT),y - beq .7 no data, go check SKT status + beq .8 no data, go check SKT status cpx ZPDataInLen XA = Data in pipe lda (ZPPtrSKT),y @@ -436,13 +425,6 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen sta ZPDataInLen+1 bra SKT.GetDataFromSktIn -.7 ldy #S.SOCKET.TCP.O - lda (ZPPtrSKT),y - and #S.TCP.OPTIONS.ACK - beq .8 - - jmp TCP.OUT.SendOptA - .8 jsr SKT.CheckStream bcs .99 I/O error @@ -457,7 +439,6 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen * Y,A = bytes read *-------------------------------------- SKT.GetDataFromSktIn - jsr SKT.GetTCB ldy #S.SOCKET.SQ.hInMem lda (ZPPtrSKT),y .DO AUXPIPE=1 @@ -473,6 +454,7 @@ SKT.GetDataFromSktIn jsr SKT.GetNotDataInLen pha + .DO AUXPIPE=1 jsr SKT.SetupZPCode .FIN @@ -525,11 +507,15 @@ SKT.GetDataFromSktIn ldx #S.SOCKET.TCP.INUSED jsr SKT.SubDataInLenAtSktX - jsr SKT.StoreTCB - jsr TCP.SetSocketTCPO.ACK ACK=1 -> send WSIZE + lda ZPDataInLen + ldy ZPDataInLen+1 + ldx #S.SOCKET.TCP.INACKNUM + jsr TCP.AddAYToSktCacheAtX -* lda #S.TCP.OPTIONS.ACK -* jsr TCP.OUT.SendOptA + jsr SKT.StoreTCB + + lda #S.TCP.OPTIONS.ACK + jsr TCP.SetSocketTCPO >LDYA ZPDataInLen clc @@ -576,6 +562,7 @@ SKT.AddDataToSktIn .2 inx bne .3 + pla inc beq .8 @@ -586,10 +573,12 @@ SKT.AddDataToSktIn sta (ZPTmpPtr1),y inc ZPDataInPtr bne .4 + inc ZPDataInPtr+1 .4 iny bne .2 + .DO AUXPIPE=1 sta CLRWRITEAUX .FIN @@ -676,6 +665,7 @@ SKT.AddDataToSktOut jsr SKT.GetNotDataInLen pha + .1 .DO AUXPIPE=1 sta SETWRITEAUX .FIN @@ -694,6 +684,7 @@ SKT.AddDataToSktOut inc ZPDataInPtr bne .4 + inc ZPDataInPtr+1 .4 iny @@ -816,6 +807,7 @@ SKT.GetDataFromSktOut .3 iny bne .1 + inc ZPTmpPtr1+1 inc SKT.Cache+S.SOCKET.TCP.OUTTAILSENT+1 lda SKT.Cache+S.SOCKET.TCP.OUTTAILSENT+1 @@ -837,7 +829,7 @@ SKT.GetDataFromSktOut clc rts */-------------------------------------- -* # RecvFrom (RAW,DGRAM,SEQPKT) +* # RecvFrom (RAW,DGRAM) * ## C * `hMem recvfrom(hFD fd, struct sockaddr *addr);` * ## ASM @@ -874,12 +866,36 @@ SKT.Recv clc cmp #S.SOCKET.T.SEQPKT bcc .10 RAW,DGRAM - bne .99 STREAM + bne .98 STREAM jsr SKT.GetFromQueue SEQPKT - bcc .1 + bcs .1 - jsr SKT.CheckTCP + pha + >SYSCALL2 GetMemPtr + >STYA ZPFrameInPtr + + jsr TCP.IN.SetDataInPtrAndLen + + jsr SKT.GetTCB + + lda ZPDataInLen + ldy ZPDataInLen+1 + ldx #S.SOCKET.TCP.INACKNUM + jsr TCP.AddAYToSktCacheAtX + + jsr SKT.StoreTCB + + lda #S.TCP.OPTIONS.ACK +* jsr TCP.OUT.SendOptA + jsr TCP.SetSocketTCPO + + pla + plp + clc + rts + +.1 jsr SKT.CheckTCP bcs .91 .90 lda #E.NODATA @@ -887,10 +903,15 @@ SKT.Recv clc sec rts +.98 plp +.99 lda #ERR.SKT.BAD + sec + rts +*-------------------------------------- .10 jsr SKT.GetFromQueue bcs .90 -.1 plp if CS, RecvFrom + plp if CS, RecvFrom bcc .9 CC, Recv : Exit with CC and A=hFrame pha @@ -937,11 +958,6 @@ SKT.Recv clc pla clc .9 rts - -.99 lda #ERR.SKT.BAD - plp - sec - rts */-------------------------------------- * # SendTo (RAW,DGRAM,SEQPKT) * ## C @@ -976,6 +992,8 @@ SKT.Send jsr SKT.PullhFDDataInPtrLen ldy #S.SOCKET.T lda (ZPPtrSKT),y + cmp #S.SOCKET.T.STREAM + bcs * tax jmp (J.SKT.send,x) *-------------------------------------- @@ -985,12 +1003,14 @@ SKT.Send.RAW ldy #S.SOCKET.PROTO >LDYA ZPDataInLen jsr FRM.NewIP bcc SKT.Send.8 + rts *-------------------------------------- SKT.Send.DGRAM ldx #S.IP.PROTOCOL.UDP >LDYA ZPDataInLen jsr FRM.NewIP bcs SKT.Send.9 + jsr SKT.SetFrameOutTCPUDPPorts SKT.Send.8 jsr SKT.SetFrameOutDstIP @@ -1478,6 +1498,7 @@ SKT.CopyDataInToOut sta (ZPDataOutPtr),y iny bne .1 + inc ZPDataInPtr+1 inc ZPDataOutPtr+1 bne .1 diff --git a/LIB/LIBTCPIP.S.TCP.txt b/LIB/LIBTCPIP.S.TCP.txt index e9371f77..cea7b7ee 100644 --- a/LIB/LIBTCPIP.S.TCP.txt +++ b/LIB/LIBTCPIP.S.TCP.txt @@ -97,7 +97,7 @@ TCP.IN.JMP.SYNSENT .9 lda #S.TCP.OPTIONS.RST jsr TCP.OUT.SendOptA Send RST - + jmp TCP.IN.RST *-------------------------------------- TCP.IN.JMP.SYNRCVD @@ -137,7 +137,9 @@ TCP.IN.JMP.ESTBLSH lda (ZPFrameInPtr),y and #S.TCP.OPTIONS.ACK Remote side ACKed data ? beq .4 +*-------------------------------------- * Ack sent data +*-------------------------------------- ldy #S.TCP.ACKNUM+3 Get new ACK number from FrameIn... ldx #3 Substract old ACK from socket @@ -153,7 +155,7 @@ TCP.IN.JMP.ESTBLSH dex bpl .1 - bcc .70 ACK > SENT SEQ ???? + bcc .7 ACK > SENT SEQ ???? lda TmpDWord+3 ldx TmpDWord+2 @@ -189,7 +191,9 @@ TCP.IN.JMP.ESTBLSH sta SKT.Cache+S.SOCKET.TCP.OUTUSED+1 jsr SKT.StoreTCB +*-------------------------------------- * Store incoming data +*-------------------------------------- .4 jsr TCP.IN.SetDataInPtrAndLen lda ZPDataInLen Incoming Data in this frame ? ora ZPDataInLen+1 @@ -228,9 +232,6 @@ TCP.IN.JMP.ESTBLSH jsr TCP.AddAYToSktCacheAtX jsr SKT.StoreTCB update socket -* bra .7 - -.70 jsr TCP.SetSocketTCPO.ACK ...and ack data .7 ldy #S.TCP.OPTIONS lda (ZPFrameInPtr),y @@ -238,8 +239,10 @@ TCP.IN.JMP.ESTBLSH beq .8 jsr TCP.IN.ACKTheFIN - - lda #S.SOCKET.TCP.S.CLWAIT + + jsr SKT.OUT.SendFINACK + + lda #S.SOCKET.TCP.S.LASTACK jmp SKT.StoreTCB.S .8 ldy #S.SOCKET.TCP.O @@ -267,16 +270,14 @@ TCP.IN.JMP.LASTACK ldy #S.TCP.OPTIONS only accept ACK packet lda (ZPFrameInPtr),y bit #S.TCP.OPTIONS.ACK - beq .8 + beq TCP.IN.JMP.CLWAIT + + jsr SKT.GetTCB * jsr TCP.OUT.SendACK - ldy #S.SOCKET.TCP.S - lda #S.SOCKET.TCP.S.TIMEWT - sta (ZPPtrSKT),y - -.8 clc - rts + lda #S.SOCKET.TCP.S.CLWAIT + jmp SKT.StoreTCB.S *-------------------------------------- TCP.IN.JMP.FINWT1 ldy #S.TCP.OPTIONS FIN sent, accept ACK or FIN/ACK packet @@ -323,6 +324,7 @@ TCP.IN.ACKTheSYN .3 lda (ZPFrameInPtr),y Set OUTACK=SEQ+1 for new socket... adc #0 sta SKT.Cache+S.SOCKET.TCP.INSEQNUM,x + sta SKT.Cache+S.SOCKET.TCP.INACKNUM,x dey dex bpl .3 @@ -332,24 +334,13 @@ TCP.IN.ACKTheSYN TCP.IN.ACKTheFIN ldx #3 -.1 inc SKT.Cache+S.SOCKET.TCP.INSEQNUM,x +.1 inc SKT.Cache+S.SOCKET.TCP.INACKNUM,x bne .2 dex bpl .1 .2 rts - - -* ldx #3 - -*.3 inc SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x -* bne .4 - -* dex -* bpl .3 - -*.4 rts *-------------------------------------- TCP.IN.SetDataInPtrAndLen ldy #S.IP.TOTAL.LENGTH+1 @@ -421,16 +412,24 @@ TCP.SENDCLOSE ldx #0 beq .4 cmp #S.SOCKET.TCP.S.ESTBLSH - bne .2 + bne .3 cpx #S.SOCKET.T.SEQPKT - beq .8 + beq .2 - jsr SKT.GetTCB jsr TCP.OUT bra .8 + +.2 ldy #S.SOCKET.TCP.O + lda (ZPPtrSKT),y + and #S.TCP.OPTIONS.ACK + beq .8 + + jsr SKT.GetTCB + jsr TCP.OUT.SendOpt + bra .8 -.2 cmp #S.SOCKET.TCP.S.OPENED +.3 cmp #S.SOCKET.TCP.S.OPENED bne .8 jsr SKT.GetTCB @@ -484,17 +483,20 @@ TCP.SENDCLOSE.PIPE .FIN .8 rts *-------------------------------------- -TCP.OUT lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1 +TCP.OUT jsr SKT.GetTCB + + lda SKT.Cache+S.SOCKET.TCP.OUTTOSEND+1 ldy SKT.Cache+S.SOCKET.TCP.OUTTOSEND bne .1 tax bne .1 + * Y,A=0 : no data to send ldy #S.SOCKET.TCP.O lda (ZPPtrSKT),y - bne TCP.OUT.SendOptA a least an option... + bne TCP.OUT.SendOpt a least an option... clc No data, no flag....exit .9 rts @@ -529,12 +531,27 @@ TCP.OUT.SEQSEND ldy #S.TCP.WINDOW jmp SKT.StoreTCB exits with CC *-------------------------------------- +SKT.OUT.SendFINACK + lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK + jsr TCP.OUT.SendOptA Send FIN/ACK + bcs .9 + + ldx #3 + +.1 inc SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x + bne .9 + + dex + bpl .1 + +.9 rts +*-------------------------------------- TCP.OUT.SendACK lda #S.TCP.OPTIONS.ACK TCP.OUT.SendOptA jsr TCP.SetSocketTCPO - >LDYAI 0 +TCP.OUT.SendOpt >LDYAI 0 jsr TCP.NewFrame bcs TCP.OUT.Send.RTS @@ -552,15 +569,22 @@ TCP.OUT.SendOptA ldy #S.SOCKET.TCP.O lda (ZPPtrSKT),y -TCP.OUT.Send ldy #S.TCP.OPTIONS + sec DONT Queue if fail + .HS 90 BCC + +TCP.OUT.Send clc Queue if fail + + php + + ldy #S.TCP.OPTIONS sta (ZPFrameOutPtr),y - bit #S.TCP.OPTIONS.ACK - beq .2 +* bit #S.TCP.OPTIONS.ACK +* beq .2 ldx #3 ldy #S.TCP.ACKNUM+3 -.1 lda SKT.Cache+S.SOCKET.TCP.INSEQNUM,x +.1 lda SKT.Cache+S.SOCKET.TCP.INACKNUM,x sta (ZPFrameOutPtr),y dey dex @@ -575,11 +599,11 @@ TCP.OUT.Send ldy #S.TCP.OPTIONS dex bpl .3 - clc -* sec DONT Queue if fail + plp Get back Queue status jsr FRM.SendIP bcs TCP.OUT.Send.RTS + ldy #S.SOCKET.TCP.O lda #0 sta (ZPPtrSKT),y @@ -588,8 +612,6 @@ TCP.OUT.Send ldy #S.TCP.OPTIONS TCP.OUT.Send.RTS rts *-------------------------------------- -TCP.SetSocketTCPO.ACK - lda #S.TCP.OPTIONS.ACK TCP.SetSocketTCPO ldy #S.SOCKET.TCP.O ora (ZPPtrSKT),y diff --git a/LIB/LIBTUI.S.CTX.txt b/LIB/LIBTUI.S.CTX.txt index dcc3a0a3..6a6afef7 100644 --- a/LIB/LIBTUI.S.CTX.txt +++ b/LIB/LIBTUI.S.CTX.txt @@ -34,9 +34,7 @@ CTX.Init >LDYA L.SEQ.INIT jsr IO.GetC.Reset -.1 >SLEEP - - jsr IO.GetC +.1 jsr IO.GetC bcs .98 .2 ldy #S.CTX.W @@ -50,7 +48,6 @@ CTX.Init >LDYA L.SEQ.INIT bne .1 lda #80 - ldy #S.CTX.W sta (ZPCtxPtr),y diff --git a/LIB/LIBTUI.S.IO.txt b/LIB/LIBTUI.S.IO.txt index a87b0fda..71d5f19d 100644 --- a/LIB/LIBTUI.S.IO.txt +++ b/LIB/LIBTUI.S.IO.txt @@ -2,26 +2,7 @@ NEW AUTO 3,1 .LIST OFF *-------------------------------------- -IO.GetC ldx ZPCtxPtr - phx - ldx ZPCtxPtr+1 - phx - ldx ZPObjPtr - phx - ldx ZPObjPtr+1 - phx - - jsr IO.GetChar - - plx - stx ZPObjPtr+1 - plx - stx ZPObjPtr - plx - stx ZPCtxPtr+1 - plx - stx ZPCtxPtr - +IO.GetC jsr IO.GetChar bcs .9 tax @@ -241,7 +222,16 @@ IO.GetC.ToBuf ldy #S.CTX.InBufPtr .9 rts *-------------------------------------- -IO.GetChar >SYSCALL GetChar +IO.GetChar ldx ZPCtxPtr + phx + ldx ZPCtxPtr+1 + phx + ldx ZPObjPtr + phx + ldx ZPObjPtr+1 + phx + + >SYSCALL GetChar bcs .9 cmp #C.CR @@ -261,7 +251,16 @@ IO.GetChar >SYSCALL GetChar .8 lda #C.CR -.9 rts +.9 plx + stx ZPObjPtr+1 + plx + stx ZPObjPtr + plx + stx ZPCtxPtr+1 + plx + stx ZPCtxPtr + + rts *-------------------------------------- IO.fputs ldx ZPCtxPtr phx diff --git a/LIB/LIBTUI.S.OBJ.txt b/LIB/LIBTUI.S.OBJ.txt index 06614156..ce98cfcf 100644 --- a/LIB/LIBTUI.S.OBJ.txt +++ b/LIB/LIBTUI.S.OBJ.txt @@ -185,9 +185,7 @@ OBJ.Exec >PUSHA hOBJ jsr LIB.GetCTX -.1 >SLEEP - - jsr IO.GetC +.1 jsr IO.GetC bcs .9 cmp #EV.RESIZE @@ -764,7 +762,7 @@ OBJ.CurUpdPos ldy #S.OBJ.F OBJ.CurOn ldy #S.OBJ.F lda (ZPObjPtr),y and #S.OBJ.F.bEdit -* beq .8 + beq .8 ldy #S.OBJ.S lda (ZPObjPtr),y S.OBJ.S.bActive @@ -805,7 +803,7 @@ OBJ.CurOn ldy #S.OBJ.F OBJ.CurOff ldy #S.OBJ.F lda (ZPObjPtr),y and #S.OBJ.F.bEdit -* beq .8 + beq .8 ldy #S.OBJ.S lda (ZPObjPtr),y S.OBJ.S.bActive diff --git a/LIB/LIBTUI.S.TLINE.txt b/LIB/LIBTUI.S.TLINE.txt index b5ca7403..f283ad78 100644 --- a/LIB/LIBTUI.S.TLINE.txt +++ b/LIB/LIBTUI.S.TLINE.txt @@ -54,7 +54,7 @@ TLINE.Run ldy #S.OBJ.S cmp #C.BS beq TLINE.RUN.BS - cmp #C.FS + cmp #21 Forward Space beq TLINE.RUN.FS .9 lda #0 diff --git a/LIB/LIBTUI.S.txt b/LIB/LIBTUI.S.txt index c348ee99..1995b15f 100644 --- a/LIB/LIBTUI.S.txt +++ b/LIB/LIBTUI.S.txt @@ -266,7 +266,7 @@ LIB.Destroy ldx ZPObjPtr jsr OBJ.Destroy pla - >SYSCALL FreeMem + >SYSCALL2 FreeMem ply .2 iny @@ -280,7 +280,7 @@ LIB.Destroy ldx ZPObjPtr .3 jsr .7 pla - >SYSCALL FreeMem + >SYSCALL2 FreeMem plx stx ZPObjPtr+1 @@ -336,7 +336,7 @@ hLineBuf .BS 1 LineBuf .BS 2 *-------------------------------------- ESC.In .AS "DABC" -ESC.Out .DA #C.BS,#C.VT,#C.LF,#C.FS +ESC.Out .DA #C.BS,#C.VT,#C.LF,#21 *-------------------------------------- FMT.ESCCSI.R .AZ "%d;%d" *-------------------------------------- diff --git a/ProDOS.FX/ProDOS.S.LDR.txt b/ProDOS.FX/ProDOS.S.LDR.txt index be9d9037..7ca70ea2 100644 --- a/ProDOS.FX/ProDOS.S.LDR.txt +++ b/ProDOS.FX/ProDOS.S.LDR.txt @@ -673,7 +673,7 @@ LDR.BlkDevScan bit RROMBNK2 write protect lc ram. stz LDR.SlotDevType-1,x jsr LDR.CheckDiskID - bcs .8 if no ProDOS device in this slot. + bcs .4 if no ProDOS device in this slot. ldy #$ff lda (idxl),y check last byte of $Cn rom (y = $ff) @@ -686,35 +686,31 @@ LDR.BlkDevScan bit RROMBNK2 write protect lc ram. sta LDR.driveradr+1 sec 2 devices jsr LDR.AddBlkDevs - bra .7 + bra .4 .2 cmp #$FF if = $FF then 13 sector disk II. - beq .8 ignore if 13 sector boot ROM + beq .4 ignore if 13 sector boot ROM ldy #$07 check for a smartport device. lda (idxl),y bne .3 no smartport jsr LDR.AddSPDevs - bra .7 + bra .4 .3 ldy #$FE BLK device... lda (idxl),y get attributes. and #$03 verify it provides read and status calls. cmp #$03 - bne .7 assume it's an off-brand disk + bne .4 assume it's an off-brand disk - lda (idxl),y get back ID byte - lsr - lsr - lsr - lsr - sta devid ->DEV LIST NIBBLE + jsr LDR.SetDevID and #$3 Device count minus 1 inc ldx LDR.SlotIdx sta LDR.SlotDevCnt-1,x + dec LDR.SlotDevType-1,x set as BlockDeb tax iny $CnFF @@ -726,13 +722,10 @@ LDR.BlkDevScan bit RROMBNK2 write protect lc ram. cpx #2 CS if 2 devs or more jsr LDR.AddBlkDevs install 1 or 2 devices from this slot. -.7 - -.8 dec idxl+1 next lower slot. +.4 dec idxl+1 next lower slot. dec LDR.SlotIdx have all slots been checked ? bne .1 *-------------------------------------- -LDR.AddExtraDevs * stz idxl lda #$C7 sta idxl+1 @@ -740,7 +733,7 @@ LDR.AddExtraDevs lda #7 sta LDR.SlotIdx -.1 ldx LDR.SlotIdx +.5 ldx LDR.SlotIdx lda LDR.SlotDevType-1,x beq .8 @@ -748,11 +741,17 @@ LDR.AddExtraDevs cmp #3 bcc .8 - jsr LDR.AddExtraSPDevs + bit LDR.SlotDevType-1,x + bpl .6 type = smartport + + jsr LDR.AddExtraBLKDevs + bra .8 + +.6 jsr LDR.AddExtraSPDevs .8 dec idxl+1 dec LDR.SlotIdx - bne .1 + bne .5 LDR.AddExtraDevs.RTS rts @@ -797,8 +796,9 @@ LDR.AddSPDevs jsr LDR.SetDevID setup the devid byte from attributes jsr LDR.SPStatusCall status of Cocoon : A = device = 2 for SCSI -.2 lda #0 set unit# = 0 - jsr LDR.SPStatusCall + lda #0 set unit# = 0 + +.2 jsr LDR.SPStatusCall lda LDR.SPStatusBuf Device count beq LDR.AddExtraDevs.RTS no devices, so done. @@ -856,19 +856,84 @@ LDR.AddBlkDevs php how many drives (carry). lda LDR.driveradr get high address of device driver. sta DEVPTRS,y device driver table 1. bcc .2 branch if single drive. + sta DEVPTRS+16,y device driver table 2. .2 lda LDR.driveradr+1 sta DEVPTRS+1,y bcc .3 + sta DEVPTRS+17,y .3 LDR.AddBlkDevs.RTS rts *-------------------------------------- +LDR.AddExtraBLKDevs + dec + dec + sta LDR.DevCnt + + jsr LDR.SetDevID set up device attributes + + jsr LDR.FindFreeDevPtr + bcs .9 + +.1 cpy #$10 + bcc .2 must be Drive 1 + +.10 jsr LDR.FindFreeDevPtrNext + bcc .1 + + rts + +.2 lda LDR.DevCnt + dec + beq .4 only one to add + + tya + ora #$10 + tay + + lda DEVPTRS,y device driver table 1 + cmp #nodevice + bne .10 + + lda DEVPTRS+1,y + cmp /nodevice + bne .10 Drive 1 & 2 free + + jsr LDR.AddY2DEVLST Y = index in DEVPTRS + jsr .8 + + tya + and #$F + tay + +.4 jsr LDR.AddY2DEVLST Y = index in DEVPTRS + +.8 phy + + ldy #$ff + + lda (idxl),y BLK entry point + + ply + sta DEVPTRS,y + lda idxl+1 + sta DEVPTRS+1,y + +* clc + +.9 rts +*-------------------------------------- LDR.AddExtraSPDevs - ldy #$FF get smartport address. + jsr LDR.SetDevID set up device attributes + + iny ldy #$fe from SetDevID + +* ldy #$FF + lda (idxl),y clc adc #$03 add 3 for smartport call @@ -876,8 +941,6 @@ LDR.AddExtraSPDevs lda idxl+1 sta LDR.SPVect+2 - jsr LDR.SetDevID set up device attributes - lda #0 jsr LDR.SPStatusCall do a status call on smartport itself @@ -898,34 +961,10 @@ LDR.AddExtraSPDevs lda LDR.SPStatusBuf is this a block device? bpl .2 - jsr LDR.MountSPDevs + jsr LDR.FindFreeDevPtr bcs .8 -.2 inc LDR.SPStatus.U - - dec LDR.DevCnt - bne .1 - -.8 rts -*-------------------------------------- -LDR.MountSPDevs ldx #LDR.DEVPTRS.CNT-1 - -.1 ldy LDR.DEVPTRS.IDX,x - lda DEVPTRS,y device driver table 1 - cmp #nodevice - bne .2 - - lda DEVPTRS+1,y - cmp /nodevice - beq .3 - -.2 dex - bpl .1 - - sec - rts - -.3 jsr LDR.LCBNK1 + jsr LDR.LCBNK1 tya divide index by 2 lsr @@ -942,23 +981,19 @@ LDR.MountSPDevs ldx #LDR.DEVPTRS.CNT-1 bit RROMBNK2 write protect lc ram. - inc DEVCNT - ldx DEVCNT - tya - - asl convert to DSSS0000 - asl - asl - - ora devid include device attributes - sta DEVLST,x in the active device list. + jsr LDR.AddY2DEVLST lda #XDOS.SPREMAP - sta DEVPTRS,y device driver table 1 + sta DEVPTRS,y lda /XDOS.SPREMAP sta DEVPTRS+1,y - clc - rts + +.2 inc LDR.SPStatus.U + + dec LDR.DevCnt + bne .1 + +.8 rts *-------------------------------------- LDR.SPStatusCall sta LDR.SPStatus.U @@ -1008,6 +1043,28 @@ LDR.CheckDiskID ldy #5 bra .8 *-------------------------------------- +LDR.FindFreeDevPtr + ldx #LDR.DEVPTRS.CNT-1 +LDR.FindFreeDevPtrNext + +.1 ldy LDR.DEVPTRS.IDX,x + lda DEVPTRS,y device driver table 1 + cmp #nodevice + bne .2 + + lda DEVPTRS+1,y + cmp /nodevice + beq .8 + +.2 dex + bpl .1 + + sec + rts + +.8 clc + rts +*-------------------------------------- LDR.SetDevID ldy #$FE check attributes byte. lda (idxl),y @@ -1018,6 +1075,19 @@ LDR.SetDevID ldy #$FE check attributes byte. sta devid rts *-------------------------------------- +LDR.AddY2DEVLST inc DEVCNT + ldx DEVCNT + tya + + asl convert to DSSS0000 + asl + asl + + ora devid include device attributes + sta DEVLST,x in the active device list. + + rts +*-------------------------------------- LDR.Scr80Init phx Save LDR.MSG jsr LDR.IsIIc @@ -1322,14 +1392,14 @@ LDR.SPStatus.U .DA #$00 unit number (code for smartport stat) LDR.DEVPTRS.CNT .EQ 14 -LDR.DEVPTRS.IDX .DA #$16 S3D2 +LDR.DEVPTRS.IDX .DA #$16 S3D2 /RAM + .DA #$06 S3D1 .DA #$12 S1D2 .DA #$02 S1D1 .DA #$14 S2D2 .DA #$04 S2D1 .DA #$18 S4D2 .DA #$08 S4D1 - .DA #$06 S3D1 .DA #$1A S5D2 .DA #$0A S5D1 .DA #$1C S6D2 diff --git a/ROOT/asmtest/TESTTUI.S.txt b/ROOT/asmtest/TESTTUI.S.txt index d39db64b..47fe10bc 100644 --- a/ROOT/asmtest/TESTTUI.S.txt +++ b/ROOT/asmtest/TESTTUI.S.txt @@ -68,7 +68,7 @@ CS.INIT >LDYA L.LIBTUI CS.INIT.RTS rts *-------------------------------------- -CS.RUN >LIBCALL hLIBTUI,LIBTUI.Init +CS.RUN >LIBCALL hLIBTUI,LIBTUI.Init bcs CS.RUN.RTS sta hCTX @@ -100,9 +100,14 @@ CS.RUN >LIBCALL hLIBTUI,LIBTUI.Init *-------------------------------------- CS.RUN.LOOP lda hSCRN >LIBCALL hLIBTUI,LIBTUI.Exec - bcs .9 + bcc .10 + + tay + beq CS.RUN.LOOP + + rts - cmp #EV.RESIZE +.10 cmp #EV.RESIZE bne .1 jsr CS.SCRN.Draw diff --git a/SYS/KERNEL.S.DEF.txt b/SYS/KERNEL.S.DEF.txt index 6ab1980e..912bf060 100644 --- a/SYS/KERNEL.S.DEF.txt +++ b/SYS/KERNEL.S.DEF.txt @@ -206,8 +206,8 @@ S.DCB.TTY.bCURON .EQ 9 S.DCB.TTY.bTITLE .EQ 10 S.DCB.TTY.bNORMAL .EQ 11 -S.DCB.TTY.bLINEWRAP .EQ 12 -S.DCB.TTY.bCRLF .EQ 13 +S.DCB.TTY.bDECAWM .EQ 12 +S.DCB.TTY.bLNM .EQ 13 S.DCB.TTY.bG0G1 .EQ 14 S.DCB.TTY.bG0G1ALT .EQ 15 diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index 27c83e1e..47035721 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -133,10 +133,10 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,ptr1=fd lda (pFD),y bne .5 - lda /DRV.SmartPort + lda /DRV.SP sta (pFD),y dey - lda #DRV.SmartPort + lda #DRV.SP sta (pFD),y .5 jsr DEV.GetPDrv diff --git a/SYS/KERNEL.S.DRV.txt b/SYS/KERNEL.S.DRV.txt index 5d32df8b..9d239fc4 100644 --- a/SYS/KERNEL.S.DRV.txt +++ b/SYS/KERNEL.S.DRV.txt @@ -7,7 +7,8 @@ NEW *-------------------------------------- DRV.DiskII cld cpx #IOCTL.FORMAT - bcs DRV.RamDrive.9 + bcs DRV.BadCall + >STYA pIOCTL jmp (.1,x) @@ -27,33 +28,35 @@ DRV.DiskII.DIB .DA #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ .DA #0 .DA K.VER *-------------------------------------- -* DRV.RamDrive +* DRV.RAM * X = IOCTL * Y,A = PTR to S.IOCTL *-------------------------------------- -DRV.RamDrive cld +DRV.RAM cld cpx #IOCTL.CONTROL - bcs DRV.RamDrive.9 + bcs DRV.BadCall + >STYA pIOCTL jmp (.1,x) -.1 .DA DRV.RamDrive.S + +.1 .DA DRV.RAM.S .DA DRV.BLK READ .DA DRV.BLK WRITE .DA DRV.BLK FORMAT -DRV.RamDrive.9 jmp A2osX.BadCall + +DRV.BadCall jmp A2osX.BadCall *-------------------------------------- -DRV.RamDrive.S jsr DRV.Blk +DRV.RAM.S jsr DRV.Blk bcs .9 - stx DRV.RamDrive.DIB+S.DIB.SIZE - sty DRV.RamDrive.DIB+S.DIB.SIZE+1 - >LDYAI DRV.RamDrive.DIB + stx DRV.RAM.DIB+S.DIB.SIZE + sty DRV.RAM.DIB+S.DIB.SIZE+1 + >LDYAI DRV.RAM.DIB jmp DRV.STATUS.YA .9 rts *-------------------------------------- -DRV.RamDrive.DIB - .DA #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ +DRV.RAM.DIB .DA #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ .BS 3 .PS "ProDOS /RAM Disk" .DA #S.DIB.T.RAM @@ -66,14 +69,28 @@ DRV.RamDrive.DIB *-------------------------------------- DRV.BlkDev cld cpx #IOCTL.CONTROL - bcs DRV.RamDrive.9 + bcs DRV.BadCall + >STYA pIOCTL jmp (.1,x) + .1 .DA DRV.BlkDev.S .DA DRV.BLK READ .DA DRV.BLK WRITE .DA DRV.BLK FORMAT *-------------------------------------- +DRV.RSP cld + cpx #IOCTL.CONTROL + bcs DRV.BadCall + + >STYA pIOCTL + jmp (.1,x) + +.1 .DA DRV.RSP.S + .DA DRV.BLK READ + .DA DRV.BLK WRITE + .DA DRV.BLK FORMAT +*-------------------------------------- DRV.BlkDev.S jsr DRV.Blk bcs .9 @@ -91,12 +108,31 @@ DRV.BlkDev.DIB .DA #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ .DA #0 .DA K.VER *-------------------------------------- +DRV.RSP.S jsr DRV.Blk + bcs .9 + + stx DRV.RSP.DIB+S.DIB.SIZE + sty DRV.RSP.DIB+S.DIB.SIZE+1 + + >LDYAI DRV.RSP.DIB + jmp DRV.STATUS.YA + +.9 rts +*-------------------------------------- +DRV.RSP.DIB .DA #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ + .BS 3 + .PS "Remapped SP Dev " + .DA #S.DIB.T.PRODOS + .DA #0 + .DA K.VER +*-------------------------------------- * IOCTL to BLK protocol converter * in : pIOCTL *-------------------------------------- DRV.BLK txa lsr sta DRV.BLK.P CMD + ldy #S.FD.DEV.DEVID Drive 1, or 2 lda (pFD),y dec O or 1 @@ -147,7 +183,7 @@ DRV.BLK.P .BS 6 *-------------------------------------- * Smartport Driver *-------------------------------------- -DRV.SmartPort cld +DRV.SP cld >STYA pIOCTL >STYA .3 smartport Params @@ -155,7 +191,7 @@ DRV.SmartPort cld lsr sta .2 tax - lda DRV.SmartPort.Cnt,x + lda DRV.SP.Cnt,x sta (pIOCTL) S.IOCTL.CNT ldy #S.FD.DEV.DEVID @@ -179,8 +215,7 @@ DRV.SmartPort cld jsr GO.A2osX rts -DRV.SmartPort.Cnt - .HS 03030301030101010404 +DRV.SP.Cnt .HS 03030301030101010404 *-------------------------------------- * NULL DEVICE * - OPEN,WRITE,CLOSE always succeed. diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 66f27996..2cd02e3f 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -268,7 +268,7 @@ KConfigLoad >LDYAI MSG.KCREAD lda A2osX.FSID beq .99 - >LDYAI MSG.PRODOSFX + >LDYAI MSG.FX jsr PrintFYA .99 rts @@ -716,7 +716,7 @@ DevMgrInit >LDYAI MSG.DEV lda #A2osX.S.DII bra .7 Go mark slot as USED -.3 bcs .53 > $D0, Some BLK remapped DRV +.3 bcs .53 > $D0, Some SP remapped DRV cmp #$C0 bcs .4 $C0 .. $CF, in slot ROM @@ -755,6 +755,7 @@ DevMgrInit >LDYAI MSG.DEV bmi .80 jmp .1 + .80 clc rts *-------------------------------------- @@ -768,6 +769,9 @@ DevMgr.USR ldx #4 .HS 2C BIT ABS *-------------------------------------- DevMgr.BLK ldx #6 + .HS 2C BIT ABS +*-------------------------------------- +DevMgr.RSP ldx #10 bra DevMgr.AddBDev *-------------------------------------- DevMgr.SP ldy #$ff @@ -777,9 +781,6 @@ DevMgr.SP ldy #$ff sta FD.BDEV+S.FD.DEV.BUSPTR ldx #8 - .HS 2C BIT ABS - -DevMgr.RSP ldx #10 *-------------------------------------- DevMgr.AddBDev >LDYA DRV.BLKDEVX,x >STYA FD.BDEV+S.FD.DEV.DRVPTR @@ -1283,7 +1284,7 @@ MSG.KCREAD .CZ "Reading Kernel Config File..." MSG.KCREAD.OK .CZ "OK\r" MSG.KCREAD.KO .CZ "\rError While Reading Kernel Config File, Using Default.\r" MSG.HZ .CZ "Kernel SYS Timer Set For %d0 hz Machine.\r" -MSG.PRODOSFX .CZ "!!!Running under ProDOS.FX!!! Enabling lowercase mode.\r" +MSG.FX .CZ "!!!Running under ProDOS.FX!!! Enabling lowercase mode.\r" MSG.Init2.OK .CZ "A2osX[Stage2]:Complete." *-------------------------------------- MSG.Init3 .CZ "A2osX[Stage3]:Init *** Press Ctrl-R for entering ROOT Mode ***\r\n" @@ -1299,14 +1300,14 @@ MSG.BLKDEV.RAM .AZ "/RAM Disk" MSG.BLKDEV.DII .AZ "Disk ][" MSG.BLKDEV.USR .AZ "User" MSG.BLKDEV.BLK .AZ "Generic Block" -MSG.BLKDEV.SP .AZ "Smart Port" -MSG.BLKDEV.RSP .AZ "Remapped SP" -DRV.BLKDEVX .DA DRV.RamDrive +MSG.BLKDEV.SP .AZ "SmartPort" +MSG.BLKDEV.RSP .AZ "SmartPort (Remapped)" +DRV.BLKDEVX .DA DRV.RAM .DA DRV.DiskII .DA DRV.BlkDev .DA DRV.BlkDev - .DA DRV.SmartPort - .DA DRV.BlkDev + .DA DRV.SP + .DA DRV.RSP *-------------------------------------- MSG.IRQ .AZ "Interrupt Manager..." MSG.IRQGS .AZ " Apple IIgs VBL IRQ Activated." diff --git a/SYS/KERNEL.S.TERM.txt b/SYS/KERNEL.S.TERM.txt index cade8480..9ddd4030 100644 --- a/SYS/KERNEL.S.TERM.txt +++ b/SYS/KERNEL.S.TERM.txt @@ -23,7 +23,7 @@ TERM.STATUS jsr TERM.GetIOCTLBufCntDCB bra TERM.TOAUX *-------------------------------------- TERM.OPEN -* sta ZPhFD hFD in A for OPEN +* hFD in A for OPEN TERM.CONTROL TERM.CLOSE jsr TERM.GetDCB diff --git a/SYS/KERNEL.S.TERMX.txt b/SYS/KERNEL.S.TERMX.txt index 8cfac6cb..c1539723 100644 --- a/SYS/KERNEL.S.TERMX.txt +++ b/SYS/KERNEL.S.TERMX.txt @@ -1,9 +1,9 @@ NEW AUTO 3,1 *-------------------------------------- -CURSOR.BLINK.SPEED .EQ 2 +CURBLNK.SPEED .EQ 2 *-------------------------------------- - .DUMMY ZPDRV + .DUMMY .OR ZPDRV ZPIOCTL .BS 2 ZPBufPtr .BS 2 @@ -16,9 +16,8 @@ ZPScrBL1 .BS 2 ZPScrBL2 .BS 2 *-------------------------------------- bActive .BS 1 -*ZPhFD .BS 1 -ZPTmpBool .BS 1 +ZPTmpX .BS 1 ZPTmpChar .BS 1 CsiH .BS 1 @@ -44,7 +43,7 @@ TERMX.STATUS tya bne .3 ldy #S.DIB-1 - .HS 2C bit abs + .HS 2C BIT ABS .1 ldy #3 sta CLRWRITEAUX @@ -100,7 +99,7 @@ TERMX.OPEN jsr TERMX.ISOPENED lda (ZPDCBPtr) #S.DCB.TTY.DEVID tax -* lda ZPhFD + lda IO.hFD in ZPTMP sta CLRWRITEAUX @@ -112,7 +111,7 @@ TERMX.OPEN jsr TERMX.ISOPENED ora #S.DIB.S.OPENED ora TERMX.DIB+S.DIB.S sta (ZPDCBPtr),y - jsr RESET + jsr TERMX.RIS *-------------------------------------- TERMX.CONTROL lda (ZPDCBPtr) #S.DCB.TTY.DEVID @@ -173,6 +172,7 @@ TERMX.READ bit bActive is screen active? lda KBD bpl .6 + sta KBDSTROBE and #$7F @@ -181,7 +181,7 @@ TERMX.READ bit bActive is screen active? lda #3 -.10 ldx #3 +.10 ldx #KeyMap.Cnt-1 .2 cmp KeyMap,x beq .3 @@ -193,23 +193,20 @@ TERMX.READ bit bActive is screen active? bne .21 jsr TERMX.COUT - ldy #S.DCB.TTY.bCRLF + ldy #S.DCB.TTY.bLNM lda (ZPDCBPtr),y bpl .7 lda #C.LF -.21 jsr TERMX.COUT no remap....send char.... +.21 jsr TERMX.COUT no remap....send char.... bra .7 and flush -.3 lda KeyMap.Tbl,x - pha - lda #C.ESC - jsr TERMX.COUT - lda #'[' - jsr TERMX.COUT - pla +.3 jsr TERMX.ESCCSI + + lda CsiCodes,x jsr TERMX.COUT + bra .7 .6 ldy #S.DCB.TTY.OUTTAIL @@ -226,9 +223,26 @@ TERMX.READ bit bActive is screen active? inc ZPCnt+1 beq .8 -.71 jsr Char.Out.Get - bcs .8 +.71 ldy #S.DCB.TTY.OUTTAIL + lda (ZPDCBPtr),y + iny OUTHEAD + cmp (ZPDCBPtr),y + beq .8 + tay + lda (ZPDCBPtr),y + pha + tya + inc + cmp #S.DCB.TTY.OUTBUF.MAX + bne .72 + + lda #S.DCB.TTY.OUTBUF + +.72 ldy #S.DCB.TTY.OUTTAIL + sta (ZPDCBPtr),y + pla + ldy .8+1 sta CLRWRITEAUX sta (ZPBufPtr),y @@ -274,7 +288,7 @@ TERMX.WRITE jsr TERMX.CUROFF .3 jmp (.4,x) -.4 .DA TERMX.OUT +.4 .DA TERMX.CIN .DA TERMX.ESC .DA TERMX.CSI .DA TERMX.IAC @@ -284,7 +298,7 @@ TERMX.WRITE jsr TERMX.CUROFF .8 clc rts *-------------------------------------- -TERMX.OUT jsr TERM.GetBufByte +TERMX.CIN jsr TERM.GetBufByte cmp #IAC bne .1 @@ -293,7 +307,7 @@ TERMX.OUT jsr TERM.GetBufByte jmp TERMX.SETM .1 cmp #C.DEL - beq TERMX.OUT.DEL + beq TERMX.DEL cmp #C.SPACE bcs .8 @@ -314,44 +328,41 @@ TERMX.OUT jsr TERM.GetBufByte tax jmp (.4,x) -.4 .DA ENQ - .DA TERMX.OUT.BS - .DA TERMX.OUT.LF - .DA TERMX.OUT.FF - .DA TERMX.OUT.CR - .DA TERMX.OUT.SO - .DA TERMX.OUT.SI - .DA TERMX.OUT.FS - .DA TERMX.OUT.ESC +.4 .DA TERMX.ENQ + .DA TERMX.BS + .DA TERMX.LF + .DA TERMX.FF + .DA TERMX.CR + .DA TERMX.SO + .DA TERMX.SI + .DA TERMX.SETM.ESC *-------------------------------------- .8 jsr SetCharAtCurPos *-------------------------------------- -TERMX.OUT.FS ldy #S.DCB.TTY.CH +TERMX.FS ldy #S.DCB.TTY.CH lda (ZPDCBPtr),y inc sta (ZPDCBPtr),y cmp #80 - bcc TERMX.OUT.BS.8 + bcc TERMX.BS.8 - ldy #S.DCB.TTY.bLINEWRAP + ldy #S.DCB.TTY.bDECAWM lda (ZPDCBPtr),y - bpl TERMX.OUT.BS.8 + bpl TERMX.BS.8 - jsr TERMX.OUT.CR - - jmp TERMX.OUT.LF.1 + jmp TERMX.NEL *-------------------------------------- -TERMX.OUT.BS ldy #S.DCB.TTY.CH +TERMX.BS ldy #S.DCB.TTY.CH lda (ZPDCBPtr),y - beq TERMX.OUT.BS.1 + beq TERMX.BS.1 dec sta (ZPDCBPtr),y -TERMX.OUT.BS.8 clc +TERMX.BS.8 clc rts -TERMX.OUT.BS.1 ldy #S.DCB.TTY.CV +TERMX.BS.1 ldy #S.DCB.TTY.CV lda (ZPDCBPtr),y beq .2 @@ -365,7 +376,7 @@ TERMX.OUT.BS.1 ldy #S.DCB.TTY.CV .2 clc rts *-------------------------------------- -TERMX.OUT.DEL ldy #S.DCB.TTY.CH +TERMX.DEL ldy #S.DCB.TTY.CH lda (ZPDCBPtr),y beq .1 @@ -375,7 +386,7 @@ TERMX.OUT.DEL ldy #S.DCB.TTY.CH .1 ldy #S.DCB.TTY.CV lda (ZPDCBPtr),y - beq TERMX.OUT.BS.8 + beq TERMX.BS.8 dec sta (ZPDCBPtr),y @@ -383,40 +394,37 @@ TERMX.OUT.DEL ldy #S.DCB.TTY.CH ldy #S.DCB.TTY.CH lda #79 sta (ZPDCBPtr),y S.DCB.TTY.CH + .3 lda #C.SPACE jmp SetCharAtCurPos *-------------------------------------- -TERMX.OUT.FF jsr HOME - jmp TERMX.CLRSCR -*-------------------------------------- -TERMX.OUT.CR lda #0 +TERMX.CR lda #0 ldy #S.DCB.TTY.CH sta (ZPDCBPtr),y clc rts *-------------------------------------- -TERMX.OUT.SO sec +TERMX.SO sec .HS 90 BCC *-------------------------------------- -TERMX.OUT.SI clc +TERMX.SI clc ldy #S.DCB.TTY.bG0G1 ror sta (ZPDCBPtr),y clc rts *-------------------------------------- -TERMX.OUT.ESC lda #S.DCB.TTY.M.ESC - bra TERMX.SETM -*-------------------------------------- TERMX.ESC jsr TERM.GetBufByte y = #S.DCB.TTY.M ldx #EscCodes.Cnt-1 + .2 cmp EscCodes,x beq .3 + dex bpl .2 - bra TERMX.SETM0 + bra TERMX.SETM.0 .3 phx jsr .4 @@ -429,16 +437,19 @@ TERMX.ESC jsr TERM.GetBufByte y = #S.DCB.TTY.M tax jmp (.5,x) -.5 .DA SaveCurPos 7 - .DA RestoreCurPos 8 - .DA Scroll.Dn M - .DA Scroll.Up D - .DA RESET c +.5 .DA TERMX.DECSC 7 + .DA TERMX.DECRC 8 + .DA TERMX.IND D + .DA TERMX.NEL E + .DA TERMX.RI M + .DA TERMX.RIS c .DA TERMX.RTS [ .DA TERMX.RTS ( .DA TERMX.RTS ) *-------------------------------------- -TERMX.SETM0 lda #0 +TERMX.SETM.ESC lda #S.DCB.TTY.M.ESC + .HS 2C BIT ABS +TERMX.SETM.0 lda #0 TERMX.SETM ldy #S.DCB.TTY.M sta (ZPDCBPtr),y ldy #S.DCB.TTY.INBUF @@ -458,6 +469,7 @@ TERMX.CSI ldy #S.DCB.TTY.INBUF sta (ZPDCBPtr),y cmp #64 End of Seq ? bcs TERMX.CSI.Exec + cpy #S.DCB.TTY.INBUF.MAX-1 buffer full? bne .8 @@ -523,27 +535,28 @@ TERMX.CSI.Exec stz CsiH tax jmp (.8,x) -.8 .DA Csi.SetM h - .DA Csi.ResetM l - .DA Csi.DispAttr m - .DA Csi.Query n - .DA Csi.Scroll r - .DA Csi.CUU A - .DA Csi.CUD B - .DA Csi.CUF C - .DA Csi.CUB D - .DA Csi.CLRSCR J - .DA Csi.CLRL K - .DA Csi.Home H +.8 .DA TERMX.CUx A + .DA TERMX.CUx B + .DA TERMX.CUx C + .DA TERMX.CUx D + .DA TERMX.CUP H + .DA TERMX.ED J + .DA TERMX.EL K + .DA TERMX.HVP f + .DA TERMX.SM h + .DA TERMX.RM l + .DA TERMX.SGR m + .DA TERMX.DSR n + .DA TERMX.DECSTBM r *-------------------------------------- -* CRLF : ESC [ 20 -* LINEWRAP : ESC [ ? 7 +* LNM : ESC [ 20 +* DECAWM : ESC [ ? 7 * CUR : ESC [ ? 25 *-------------------------------------- -Csi.SetM sec +TERMX.SM sec .HS 90 BCC *-------------------------------------- -Csi.ResetM clc +TERMX.RM clc ldx CsiPCnt beq .99 @@ -556,10 +569,10 @@ Csi.ResetM clc php bne .1 - cmp #20 bCRLF + cmp #20 bLNM bne .98 - ldy #S.DCB.TTY.bCRLF + ldy #S.DCB.TTY.bLNM bra .8 *-------------------------------------- .1 cpx #'?' @@ -568,7 +581,7 @@ Csi.ResetM clc cmp #7 bne .2 - ldy #S.DCB.TTY.bLINEWRAP + ldy #S.DCB.TTY.bDECAWM bra .8 .2 cmp #25 @@ -597,7 +610,7 @@ Csi.ResetM clc .99 clc rts *-------------------------------------- -Csi.DispAttr ldx CsiPCnt +TERMX.SGR ldx CsiPCnt beq .10 ldx #0 @@ -627,7 +640,7 @@ Csi.DispAttr ldx CsiPCnt clc rts *-------------------------------------- -Csi.Query ldx CsiPCnt +TERMX.DSR ldx CsiPCnt beq .8 dex @@ -637,27 +650,25 @@ Csi.Query ldx CsiPCnt cmp #6 bne .8 - lda #C.ESC - jsr TERMX.COUT - lda #'[' - jsr TERMX.COUT + jsr TERMX.ESCCSI ldy #S.DCB.TTY.CV lda (ZPDCBPtr),y inc - jsr DecOut + jsr TERMX.10OUT lda #';' jsr TERMX.COUT ldy #S.DCB.TTY.CH lda (ZPDCBPtr),y inc - jsr DecOut + jsr TERMX.10OUT lda #'R' jsr TERMX.COUT + .8 clc rts *-------------------------------------- -Csi.Scroll lda #0 +TERMX.DECSTBM lda #0 ldx #23 ldy CsiPCnt @@ -667,6 +678,8 @@ Csi.Scroll lda #0 bne .9 ldy CsiP + beq .9 + dey cpy #24 bcs .9 @@ -674,6 +687,8 @@ Csi.Scroll lda #0 tya ldy CsiP+1 + beq .9 + dey cpy #24 bcs .9 @@ -690,74 +705,41 @@ Csi.Scroll lda #0 .9 clc rts *-------------------------------------- -Csi.CUU sec - .HS 90 BCC -Csi.CUD clc - ldy #S.DCB.TTY.CV - bra Csi.CU +TERMX.CUx ldy #1 -Csi.CUF clc - .HS B0 BCS -Csi.CUB sec - ldy #S.DCB.TTY.CH - -Csi.CU lda CsiPCnt - beq .8 + lda CsiPCnt + beq .1 dec bne .8 - lda (ZPDCBPtr),y - bcs .1 + ldy CsiP + beq .8 - adc CsiP - sta (ZPDCBPtr),y +.1 lda .80,x + sta .2+1 + lda .80+1,x + sta .2+2 - clc - rts + phy -.1 sbc CsiP - sta (ZPDCBPtr),y +.2 jsr $FFFF SELF MODIFIED + + ply + dey + bne .1 .8 clc rts + +.80 .DA TERMX.IND + .DA TERMX.RI + .DA TERMX.FS + .DA TERMX.BS *-------------------------------------- -Csi.CLRSCR ldx CsiPCnt - beq .8 - -.1 lda CsiP - beq .8 - - cmp #1 - bne .2 - - jmp TERMX.CLRSCR.DN - -.2 cmp #2 - bne .9 - - jmp TERMX.CLRSCR.UP - -.8 jmp TERMX.CLRSCR - -.9 clc - rts -*-------------------------------------- -Csi.CLRL ldx CsiPCnt - - bne .1 - jmp CLREOL -.1 lda CsiP - cmp #1 - bne .2 - jmp CLRSOL - -.2 cmp #2 - bne Csi.Home.8 - jmp CLRLINE -*-------------------------------------- -Csi.Home lda CsiPCnt - beq HOME +TERMX.CUP +TERMX.HVP lda CsiPCnt + beq TERMX.HOME ldx #1 lda CsiP @@ -774,7 +756,7 @@ Csi.Home lda CsiPCnt ldy #S.DCB.TTY.CV sta (ZPDCBPtr),y dec CsiPCnt - beq Csi.Home.8 + beq .8 ldx #1 lda CsiP+1 @@ -791,16 +773,17 @@ Csi.Home lda CsiPCnt ldy #S.DCB.TTY.CH sta (ZPDCBPtr),y -Csi.Home.8 clc +.8 clc rts *-------------------------------------- -HOME lda #0 +TERMX.HOME lda #0 ldy #S.DCB.TTY.CV sta (ZPDCBPtr),y ldy #S.DCB.TTY.CH sta (ZPDCBPtr),y - clc + +TERMX.HOME.8 clc rts *-------------------------------------- TERMX.G0 ldx #$80 @@ -822,7 +805,7 @@ TERMX.G1 ldx #$40 ora (ZPDCBPtr),y .8 sta (ZPDCBPtr),y - jmp TERMX.SETM0 + jmp TERMX.SETM.0 *-------------------------------------- TERMX.IAC ldy #S.DCB.TTY.INBUF lda (ZPDCBPtr),y @@ -834,7 +817,7 @@ TERMX.IAC ldy #S.DCB.TTY.INBUF sta (ZPDCBPtr),y cpy #S.DCB.TTY.INBUF+1 CMD ? - beq Csi.Home.8 yes, wait for additional bytes + beq TERMX.HOME.8 yes, wait for additional bytes ldy #S.DCB.TTY.INBUF+1 lda (ZPDCBPtr),y get back CMD @@ -844,7 +827,7 @@ TERMX.IAC ldy #S.DCB.TTY.INBUF jsr TERM.GetBufByte cmp #SE - bne Csi.Home.8 wait for ending SE....keep bIACMode + bne TERMX.HOME.8 wait for ending SE....keep bIACMode bra COUT.IAC.SB @@ -959,7 +942,7 @@ RESET.MODE lda #0 sta (ZPDCBPtr),y rts *-------------------------------------- -RESET ldy #S.DCB.TTY.M +TERMX.RIS ldy #S.DCB.TTY.M .1 lda RESET.VALUES-S.DCB.TTY.M,y sta (ZPDCBPtr),y @@ -967,57 +950,90 @@ RESET ldy #S.DCB.TTY.M cpy #S.DCB.TTY.INBUF+1 bne .1 - jmp TERMX.CLRSCR + jmp TERMX.ED0 Erase Screen *-------------------------------------- -ENQ ldx #0 +TERMX.ENQ ldx #0 -.1 lda ENQ.String,x +.1 lda TERMX.ENQ.REP,x jsr TERMX.COUT inx - cpx #ENQ.String.Len + cpx #TERMX.ENQ.REP.L bne .1 .8 clc rts *-------------------------------------- -TERMX.OUT.LF ldy #S.DCB.TTY.bCRLF +TERMX.LF ldy #S.DCB.TTY.bLNM lda (ZPDCBPtr),y - bpl TERMX.OUT.LF.1 + bpl TERMX.IND - jsr TERMX.OUT.CR +TERMX.NEL jsr TERMX.CR -TERMX.OUT.LF.1 ldy #S.DCB.TTY.CV +TERMX.IND ldy #S.DCB.TTY.CV lda (ZPDCBPtr),y ldy #S.DCB.TTY.SCROLLBOT cmp (ZPDCBPtr),y - bcs SCROLL.UP + bcs .1 inc ldy #S.DCB.TTY.CV sta (ZPDCBPtr),y + clc rts + +.1 ldy #S.DCB.TTY.SCROLLTOP + lda (ZPDCBPtr),y + + tax + +.2 jsr TERMX.SETUP.L1X + + inx + jsr TERMX.COPY.XtoL1 + + txa + ldy #S.DCB.TTY.SCROLLBOT + cmp (ZPDCBPtr),y + bne .2 + + bra TERMX.EL2 *-------------------------------------- -CLRSOL ldy #S.DCB.TTY.CH End +TERMX.EL ldx CsiPCnt + beq TERMX.EL0 Erase EOL + + lda CsiP + beq TERMX.EL0 Erase EOL + + cmp #1 + beq TERMX.EL1 Erase SOL + + cmp #2 Erase Line + beq TERMX.EL2 + +TERMX.EL.8 clc + rts +*-------------------------------------- +TERMX.EL1 ldy #S.DCB.TTY.CH End lda (ZPDCBPtr),y cmp #80 - bcc CLRLINE.1 + bcc TERMX.EL2.1 -CLRLINE lda #80 End +TERMX.EL2 lda #80 End -CLRLINE.1 ldy #0 Start - bra CLR +TERMX.EL2.1 ldy #0 Start + bra TERMX.EL0.1 -CLREOL ldy #S.DCB.TTY.CH +TERMX.EL0 ldy #S.DCB.TTY.CH lda (ZPDCBPtr),y tay Start cpy #80 - bcs CLR.8 + bcs TERMX.EL.8 lda #80 End -CLR sty .1+1 Save Start +TERMX.EL0.1 sty .1+1 Save Start sta .2+1 Save End ldy #S.DCB.TTY.CV @@ -1026,18 +1042,15 @@ CLR sty .1+1 Save Start .1 ldy #$ff SELF MODIFIED .2 cpy #$ff SELF MODIFIED - bcs CLR.8 + bcs TERMX.EL.8 lda #" " jsr SetCharAtYX X unmodified inc .1+1 bra .1 - -CLR.8 clc - rts *-------------------------------------- -SaveCurPos ldy #S.DCB.TTY.CH +TERMX.DECSC ldy #S.DCB.TTY.CH jsr .1 @@ -1048,7 +1061,7 @@ SaveCurPos ldy #S.DCB.TTY.CH sta (ZPDCBPtr),y rts *-------------------------------------- -RestoreCurPos jsr TERMX.CUROFF +TERMX.DECRC jsr TERMX.CUROFF ldy #S.DCB.TTY.CV.SAVE @@ -1061,29 +1074,25 @@ RestoreCurPos jsr TERMX.CUROFF sta (ZPDCBPtr),y rts *-------------------------------------- -SCROLL.UP ldy #S.DCB.TTY.SCROLLTOP +TERMX.RI ldy #S.DCB.TTY.SCROLLTOP lda (ZPDCBPtr),y - tax - -.1 jsr TERMX.SETUP.L1X - - inx - jsr TERMX.COPY.XtoL1 - - txa - ldy #S.DCB.TTY.SCROLLBOT + ldy #S.DCB.TTY.CV cmp (ZPDCBPtr),y - bne .1 + bcs .1 - bra CLRLINE -*-------------------------------------- -SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT + lda (ZPDCBPtr),y + dec + sta (ZPDCBPtr),y + clc + rts + +.1 ldy #S.DCB.TTY.SCROLLBOT lda (ZPDCBPtr),y tax -.1 jsr TERMX.SETUP.L1X +.2 jsr TERMX.SETUP.L1X dex jsr TERMX.COPY.XtoL1 @@ -1091,22 +1100,21 @@ SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT txa ldy #S.DCB.TTY.SCROLLTOP cmp (ZPDCBPtr),y - bne .1 + bne .2 - clc - rts + bra TERMX.EL2 *-------------------------------------- TERMX.CBLNK jsr TERMX.CCheck bcs TERMX.RTS lda DevMgr.Timer - and #CURSOR.BLINK.SPEED + and #CURBLNK.SPEED eor (ZPDCBPtr),y asl beq TERMX.RTS lda (ZPDCBPtr),y - eor #CURSOR.BLINK.SPEED + eor #CURBLNK.SPEED sta (ZPDCBPtr),y asl beq TERMX.CUROFF.1 @@ -1144,7 +1152,7 @@ TERMX.CCheck sec TERMX.RTS rts *-------------------------------------- -DecOut jsr MATH.A2STR10NP +TERMX.10OUT jsr MATH.A2STR10NP ldx #0 @@ -1155,6 +1163,10 @@ DecOut jsr MATH.A2STR10NP jsr TERMX.COUT bra .1 *-------------------------------------- +TERMX.ESCCSI lda #C.ESC + jsr TERMX.COUT + lda #'[' +*-------------------------------------- TERMX.COUT pha save char ldy #S.DCB.TTY.OUTHEAD @@ -1182,64 +1194,39 @@ TERMX.COUT pha save char pla rts *-------------------------------------- -Char.Out.Get ldy #S.DCB.TTY.OUTTAIL - lda (ZPDCBPtr),y - iny OUTHEAD - cmp (ZPDCBPtr),y - beq .9 CS +TERMX.ED ldx CsiPCnt + beq TERMX.ED0 + +.1 lda CsiP + beq TERMX.ED0 - tay - lda (ZPDCBPtr),y - pha - tya - inc - cmp #S.DCB.TTY.OUTBUF.MAX - bne .1 + cmp #1 + beq TERMX.ED1 - lda #S.DCB.TTY.OUTBUF +.2 cmp #2 + beq TERMX.ED2 -.1 ldy #S.DCB.TTY.OUTTAIL - sta (ZPDCBPtr),y - pla clc -.9 rts -*-------------------------------------- -TERMX.SETUP.L1X lda ZPDCBPtr - clc - adc BUF.BL,x - sta ZPBufBL1 - - lda ZPDCBPtr+1 - adc BUF.BH,x - sta ZPBufBL1+1 - - bit bActive - bpl TERMX.SETUP.L1X.8 - -TERMX.SETUP.L1X.SCR - lda SCR.BL,x - sta ZPScrBL1 - lda SCR.BH,x - sta ZPScrBL1+1 -TERMX.SETUP.L1X.8 rts *-------------------------------------- -TERMX.CLRSCR.DN ldy #S.DCB.TTY.CV +TERMX.ED1 ldy #S.DCB.TTY.CV sta (ZPDCBPtr),y tax - bra TERMX.CLRSCR.1 + bra TERMX.ED0.1 -TERMX.CLRSCR.UP ldx #0 +TERMX.ED2 ldx #0 ldy #S.DCB.TTY.CV sta (ZPDCBPtr),y tay - bra TERMX.CLRSCR.2 + bra TERMX.ED0.2 -TERMX.CLRSCR ldx #0 +TERMX.FF jsr TERMX.HOME -TERMX.CLRSCR.1 ldy #24 +TERMX.ED0 ldx #0 -TERMX.CLRSCR.2 sty .1+1 +TERMX.ED0.1 ldy #24 + +TERMX.ED0.2 sty .1+1 .1 cpx #$ff SELF MODIFIED beq .9 @@ -1314,7 +1301,7 @@ TERMX.Title.ON ldy #S.DCB.TTY.bTITLE bne .4 TERMX.RTS2 rts - +*-------------------------------------- TERMX.Title.OFF ldy #S.DCB.TTY.bTITLE lda (ZPDCBPtr),y bpl TERMX.RTS2 @@ -1356,6 +1343,7 @@ TERMX.SCRCPY ldx #23 plx dex bpl .1 + rts .8 ldy #39 @@ -1401,6 +1389,7 @@ TERMX.COPY.XtoL1 sta CLRPAGE2 .6 ldy #39 + .7 lda (ZPScrBL2),y sta (ZPScrBL1),y dey @@ -1419,7 +1408,9 @@ SetCharAtCurPos pha cpy #80 bcs SetCharAtYX.8 *-------------------------------------- -SetCharAtYX cmp #$40 +SetCharAtYX sty ZPTmpX + + cmp #$40 bcc .1 cmp #$60 @@ -1427,9 +1418,7 @@ SetCharAtYX cmp #$40 and #$1F remap UPPERCASE -.1 phy - - ldy #S.DCB.TTY.bNORMAL +.1 ldy #S.DCB.TTY.bNORMAL ora (ZPDCBPtr),y sta ZPTmpChar @@ -1458,18 +1447,20 @@ SetCharAtYX cmp #$40 sta ZPTmpChar .3 jsr TERMX.SETUP.L1X - ply + + ldy ZPTmpX lda ZPTmpChar sta (ZPBufBL1),y bit bActive - bpl SetCharAtYX.8 + bmi SetCharAtY.SCR1 + + rts -SetCharAtY.SCR pha - tya - lsr - tay - pla +SetCharAtY.SCR sty ZPTmpX + +SetCharAtY.SCR1 lsr ZPTmpX + ldy ZPTmpX bcs .2 @@ -1506,17 +1497,38 @@ GetCharAtCurPos ldy #S.DCB.TTY.CV .9 rts *-------------------------------------- -CtrlChars .DA #C.ENQ,#C.BS,#C.LF,#C.FF,#C.CR,#C.SO,#C.SI,#C.FS,#C.ESC +TERMX.SETUP.L1X lda ZPDCBPtr + clc + adc BUF.BL,x + sta ZPBufBL1 + + lda ZPDCBPtr+1 + adc BUF.BH,x + sta ZPBufBL1+1 + + bit bActive + bpl TERMX.SETUP.L1X.8 + +TERMX.SETUP.L1X.SCR + lda SCR.BL,x + sta ZPScrBL1 + lda SCR.BH,x + sta ZPScrBL1+1 +TERMX.SETUP.L1X.8 + rts +*-------------------------------------- +KeyMap .DA #11,#10,#21,#8 esc[A,esc[B,esc[C,esc[D +KeyMap.Cnt .EQ *-KeyMap +*-------------------------------------- +CtrlChars .DA #C.ENQ,#C.BS,#C.LF,#C.FF,#C.CR,#C.SO,#C.SI,#C.ESC CtrlChars.Cnt .EQ *-CtrlChars *-------------------------------------- -EscCodes .AZ "78MDc[()" +EscCodes .AZ "78DEMc[()" EscCodes.Cnt .EQ *-EscCodes -EscModes .DA #0,#0,#0,#0,#0,#S.DCB.TTY.M.CSI,#S.DCB.TTY.M.G0,#S.DCB.TTY.M.G1 -CsiCodes .AS "hlmnrABCDJKH" -CsiCodes.Cnt .EQ *-CsiCodes +EscModes .DA #0,#0,#0,#0,#0,#0,#S.DCB.TTY.M.CSI,#S.DCB.TTY.M.G0,#S.DCB.TTY.M.G1 *-------------------------------------- -KeyMap .HS 080A0B15 Left,Down,Up,Right -KeyMap.Tbl .HS 44424143 esc[D,esc[B,esc[A,esc[C +CsiCodes .AS "ABCDHJKfhlmnr" +CsiCodes.Cnt .EQ *-CsiCodes *-------------------------------------- WILLDO .DA #TN.O.BINARY,#TN.O.SGA,#TN.O.ECHO WILLDO.CNT .EQ *-WILLDO @@ -1529,8 +1541,8 @@ DOWONT .DA #TN.O.ECHO,#TN.O.NEWENV,#TN.O.XDISPLOC DOWONT.CNT .EQ *-DOWONT *-------------------------------------- SB.IS.TTYPE .DA #IAC,#SB,#TN.O.TTYPE,#SB.IS -ENQ.String .AS "vt100" -ENQ.String.Len .EQ *-ENQ.String +TERMX.ENQ.REP .AS "vt100" +TERMX.ENQ.REP.L .EQ *-TERMX.ENQ.REP .DA #IAC,#SE SB.IS.TTYPE.LEN .EQ *-SB.IS.TTYPE SB.IS.NAWS .DA #IAC,#SB,#TN.O.NAWS,#SB.IS @@ -1550,8 +1562,8 @@ RESET.VALUES .DA #0 MODE .DA #0 bTITLE .DA #$80 bNORMAL - .DA #$80 bLINEWRAP - .DA #$80 bCRLF + .DA #$80 bDECAWM + .DA #$80 bLNM .DA #0 bG0G1 .DA #0 bG0G1ALT