**LOT of mods*** TESTING REQUESTED around....everything :-)

This commit is contained in:
burniouf 2023-04-22 20:58:37 +02:00
parent 82f1cb8630
commit 9aea9939ee
33 changed files with 1312 additions and 1078 deletions

View File

@ -1,94 +1,92 @@
# A2osX Terminal Codes Guide # 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. 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 Sequence | Description | DEC Code | A2osX TERM |
|--------------|-------------|----------|------------| |---------------|-------------|----------|------------|
|Esc[20h |Set new line mode|LMN|OK| |Esc[20h |Set new line mode|LMN|OK|
|Esc[?1h |Set cursor key to application|DECCKM|| |Esc[?1h |Set cursor key to application|DECCKM||
|Esc[?3h |Set number of columns to 132|DECCOLM|| |Esc[?3h |Set number of columns to 132|DECCOLM||
|Esc[?4h |Set smooth scrolling|DECSCLM|| |Esc[?4h |Set smooth scrolling|DECSCLM||
|Esc[?5h |Set reverse video on screen|DECSCNM|OK| |Esc[?5h |Set reverse video on screen|DECSCNM|OK|
|Esc[?6h |Set origin to relative|DECOM|| |Esc[?6h |Set origin to relative|DECOM||
|Esc[?7h |Set auto-wrap mode|DECAWM|OK| |Esc[?7h |Set auto-wrap mode|DECAWM|OK|
|Esc[?8h |Set auto-repeat mode|DECARM|| |Esc[?8h |Set auto-repeat mode|DECARM||
|Esc[?9h |Set interlacing mode|DECINLM|| |Esc[?9h |Set interlacing mode|DECINLM||
|Esc[20l |Set line feed mode|LMN|OK| |Esc[20l |Set line feed mode|LMN|OK|
|Esc[?1l |Set cursor key to cursor|DECCKM|| |Esc[?1l |Set cursor key to cursor|DECCKM||
|Esc[?2l |Set VT52 (versus ANSI) DECANM|| |Esc[?2l |Set VT52 (versus ANSI) |DECANM||
|Esc[?3l |Set number of columns to 80|DECCOLM |Esc[?3l |Set number of columns to 80|DECCOLM ||
|Esc[?4l |Set jump scrolling| DECSCLM |Esc[?4l |Set jump scrolling| DECSCLM ||
|Esc[?5l |Set normal video on screen| DECSCNM |OK| |Esc[?5l |Set normal video on screen| DECSCNM |OK|
|Esc[?6l |Set origin to absolute| DECOM |Esc[?6l |Set origin to absolute| DECOM ||
|Esc[?7l |Reset auto-wrap mode| DECAWM |OK| |Esc[?7l |Reset auto-wrap mode| DECAWM |OK|
|Esc[?8l |Reset auto-repeat mode| DECARM |Esc[?8l |Reset auto-repeat mode| DECARM ||
|Esc[?9l |Reset interlacing mode| DECINLM || |Esc[?9l |Reset interlacing mode| DECINLM ||
|Esc= |Set alternate keypad mode| DECKPAM || |Esc= |Set alternate keypad mode| DECKPAM ||
|Esc> |Set numeric keypad mode| DECKPNM || |Esc> |Set numeric keypad mode| DECKPNM ||
|Esc(A |Set United Kingdom G0 character set| setukg0 |OK| |Esc(A |Set United Kingdom G0 character set| setukg0 |OK|
|Esc)A |Set United Kingdom G1 character set| setukg1 |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 G0 character set| setusg0 |OK|
|Esc)B |Set United States G1 character set| setusg1 |OK| |Esc)B |Set United States G1 character set| setusg1 |OK|
|Esc(0 |Set G0 special chars. & line set| setspecg0 |OK| |Esc(0 |Set G0 special chars. & line set| setspecg0 |OK|
|Esc)0 |Set G1 special chars. & line set| setspecg1 |OK| |Esc)0 |Set G1 special chars. & line set| setspecg1 |OK|
|Esc(1 |Set G0 alternate character ROM| setaltg0 |OK| |Esc(1 |Set G0 alternate character ROM| setaltg0 |OK|
|Esc)1 |Set G1 alternate character ROM| setaltg1 |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 G0 alt char ROM and spec. graphics| setaltspecg0 |OK|
|Esc)2 |Set G1 alt char ROM and spec. graphics| setaltspecg1 |OK| |Esc)2 |Set G1 alt char ROM and spec. graphics| setaltspecg1 |OK|
|EscN |Set single shift 2| SS2 |EscN |Set single shift 2| SS2
|EscO |Set single shift 3| SS3 |EscO |Set single shift 3| SS3
|Esc[m |Turn off character attributes| SGR0 |OK| |Esc[m |Turn off character attributes| SGR0 |OK|
|Esc[0m |Turn off character attributes| SGR0 |OK| |Esc[0m |Turn off character attributes| SGR0 |OK|
|Esc[1m |Turn bold mode on| SGR1 |Esc[1m |Turn bold mode on| SGR1 ||
|Esc[2m |Turn low intensity mode on| SGR2 |Esc[2m |Turn low intensity mode on| SGR2 ||
|Esc[4m |Turn underline mode on| SGR4 |Esc[4m |Turn underline mode on| SGR4 ||
|Esc[5m |Turn blinking mode on| SGR5 |Esc[5m |Turn blinking mode on| SGR5 ||
|Esc[7m |Turn reverse video on| SGR7 |OK| |Esc[7m |Turn reverse video on| SGR7 |OK|
|Esc[8m |Turn invisible text mode on| SGR8 || |Esc[8m |Turn invisible text mode on| SGR8 ||
|Esc[FG;BGm| Set Text Color to FG and BG |OK| |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[Line;Liner |Set top and bottom lines of a window| DECSTBM |OK|
|Esc[ValueA |Move cursor up n lines| CUU || |Esc[ValueA |Move cursor up n lines| CUU |OK|
|Esc[ValueB |Move cursor down n lines| CUD || |Esc[ValueB |Move cursor down n lines| CUD |OK|
|Esc[ValueC |Move cursor right n lines| CUF|| |Esc[ValueC |Move cursor right n lines| CUF |OK|
|Esc[ValueD |Move cursor left n lines| CUB || |Esc[ValueD |Move cursor left n lines| CUB |OK|
|Esc[H |Move cursor to upper left corner| cursorhome|| |Esc[H |Move cursor to upper left corner| CUP |OK|
|Esc[;H |Move cursor to upper left corner| cursorhome|| |Esc[Line;ColH |Move cursor to screen location v,h| CUP |OK|
|Esc[Line;ColumnH |Move cursor to screen location v,h| CUP |OK| |Esc[f |Move cursor to upper left corner| HVP|OK|
|Esc[f |Move cursor to upper left corner| hvhome || |Esc[Line;Colf |Move cursor to screen location v,h| HVP|OK|
|Esc[;f |Move cursor to upper left corner| hvhome || |EscD |Move/scroll window up one line| IND |OK|
|Esc[Line;Columnf |Move cursor to screen location v,h| CUP|| |EscE |Move to next line| NEL |OK|
|EscD |Move/scroll window up one line| IND || |EscM |Move/scroll window down one line| RI |OK|
|EscM |Move/scroll window down one line| RI || |Esc7 |Save cursor position and attributes| DECSC | OK |
|EscE |Move to next line| NEL || |Esc8 |Restore cursor position and attributes| DECSC | OK |
|Esc7 |Save cursor position and attributes| DECSC | OK | |EscH |Set a tab at the current column| HTS ||
|Esc8 |Restore cursor position and attributes| DECSC | OK | |Esc[g |Clear a tab at the current column| TBC||
|EscH |Set a tab at the current column| HTS || |Esc[0g |Clear a tab at the current column| TBC||
|Esc[g |Clear a tab at the current column| TBC|| |Esc[3g |Clear all tabs| TBC||
|Esc[0g |Clear a tab at the current column| TBC|| |Esc#3 |Double-height letters, top half| DECDHL ||
|Esc[3g |Clear all tabs| TBC|| |Esc#4 |Double-height letters, bottom half| DECDHL||
|Esc#3 |Double-height letters, top half| DECDHL || |Esc#5 |Single width, single height letters| DECSWL||
|Esc#4 |Double-height letters, bottom half| DECDHL|| |Esc#6 |Double width, single height letters| DECDWL||
|Esc#5 |Single width, single height letters| DECSWL|| |Esc[K |Clear line from cursor right| EL0 |OK|
|Esc#6 |Double width, single height letters| DECDWL|| |Esc[0K |Clear line from cursor right| EL0 |OK|
|Esc[K |Clear line from cursor right| EL0 |OK| |Esc[1K |Clear line from cursor left | EL1 |OK|
|Esc[0K |Clear line from cursor right| EL0 |OK| |Esc[2K |Clear entire line| EL2 |OK|
|Esc[1K |Clear line from cursor left | EL1 |OK| |Esc[J |Clear screen from cursor down| ED0 |OK|
|Esc[2K |Clear entire line| EL2 |OK| |Esc[0J |Clear screen from cursor down | ED0 |OK|
|Esc[J |Clear screen from cursor down| ED0 |OK| |Esc[1J |Clear screen from cursor up | ED1 |OK|
|Esc[0J |Clear screen from cursor down | ED0 |OK| |Esc[2J |Clear entire screen | ED2 |OK|
|Esc[1J |Clear screen from cursor up | ED1 |OK| |Esc5n |Device status report | DSR ||
|Esc[2J |Clear entire screen | ED2 |OK| |Esc0n |Response: terminal is OK | DSR||
|Esc5n |Device status report | DSR || |Esc3n |Response: terminal is not OK | DSR||
|Esc0n |Response: terminal is OK | DSR|| |Esc6n |Get cursor position | DSR |OK|
|Esc3n |Response: terminal is not OK | DSR|| |EscLine;ColR |Response: cursor is at v,h | CPR |OK|
|Esc6n |Get cursor position | DSR |OK| |Esc[c |Identify what terminal type | DA ||
|EscLine;ColumnR |Response: cursor is at v,h | CPR |OK| |Esc[0c |Identify what terminal type (another)| DA||
|Esc[c |Identify what terminal type | DA || |Esc[?1;Value0c |Response: terminal type code n | DA ||
|Esc[0c |Identify what terminal type (another)| DA|| |Escc |Reset terminal to initial state| RIS |OK|
|Esc[?1;Value0c |Response: terminal type code n | DA ||
|Escc |Reset terminal to initial state| RIS |OK|
## License ## License
A2osX is licensed under the GNU General Public 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
Copyright 2015 - 2019, Remy Gibert and the A2osX contributors. Copyright 2015 - 2023, Remy Gibert and the A2osX contributors.

Binary file not shown.

View File

@ -692,7 +692,7 @@ ENV.LIB .AZ "LIB"
LIB.O .AZ ".o" LIB.O .AZ ".o"
*-------------------------------------- *--------------------------------------
CC.EscChars .AS "abefnrtv" CC.EscChars .AS "abefnrtv"
.HS 5C27223F .HS 5C27223F \'"?
CC.EscChars.Cnt .EQ *-CC.EscChars CC.EscChars.Cnt .EQ *-CC.EscChars
CC.EscCodes .HS 07081B0C0A0D090B CC.EscCodes .HS 07081B0C0A0D090B
.HS 5C27223F .HS 5C27223F

View File

@ -36,6 +36,7 @@ Ctrl.DEL jsr BUF.ComputeCOffset
jsr Ctrl.BS jsr Ctrl.BS
bcs .9 bcs .9
jmp Ctrl.Z jmp Ctrl.Z
.8 clc .8 clc
@ -255,60 +256,40 @@ Ctrl.L jsr BUF.GetLine
*-------------------------------------- *--------------------------------------
Ctrl.CR lda #C.CR Ctrl.CR lda #C.CR
jsr BUF.InsertA jsr BUF.InsertA
bcs .99 bcs .9
jsr SCRN.LineBufInitEdit CEOL
>STZ.G FileX
>INCW.G FileY >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 >STZ.G CurX
>LDA.G CurY jsr SCRN.InsLineAtCurY
>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
bcs .9 bcs .9
.6 jsr SCRN.LineBufOut
bcs .9
>INC.G CurY
jsr BUF.ComputeCOffset
jsr SCRN.UpdateCurrentLine jsr SCRN.UpdateCurrentLine
bcs .9
jmp SCRN.GotoCurXCurY jmp SCRN.GotoCurXCurY
* jmp SCRN.UpdateViewPort
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
Ctrl.O ldy #FileY+1 Ctrl.O ldy #FileY+1
@ -405,24 +386,7 @@ Ctrl.Y jsr BUF.GetNextLine
tya Y = line length tya Y = line length
>STA.G FileX >STA.G FileX
>LDA.G FileY jmp SCRN.UpdateViewPort
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
*-------------------------------------- *--------------------------------------
Ctrl.F >LDYA L.DLG.FIND Ctrl.F >LDYA L.DLG.FIND
jsr DLG.Open jsr DLG.Open
@ -600,6 +564,7 @@ Ctrl.D jsr BUF.DelSel
bcs Ctrl.D.8 bcs Ctrl.D.8
jsr BUF.ResetSel jsr BUF.ResetSel
jsr SCRN.CursorAdjust jsr SCRN.CursorAdjust
jsr SCRN.UpdateViewPort jsr SCRN.UpdateViewPort
jsr SCRN.UnSaved will update TopBar jsr SCRN.UnSaved will update TopBar
@ -648,18 +613,17 @@ Ctrl.Z jsr BUF.ComputeCOffset
jsr SCRN.ResetScrollRgn jsr SCRN.ResetScrollRgn
bcs .9 bcs .9
jsr SCRN.UpdateCurrentLine
bcs .9
jsr SCRN.UpdateLast jsr SCRN.UpdateLast
bcs .9 bcs .9
.8 jsr SCRN.UpdateCurrentLine .8 jsr SCRN.UpdateCurrentLine
bcs .9 bcs .9
.80 jsr SCRN.UnSaved .80 jsr SCRN.CursorAdjust
jsr SCRN.GotoCurXCurY jsr SCRN.UpdateViewPort
jmp SCRN.UpdateStatusBar jsr SCRN.UnSaved will update TopBar
jmp SCRN.UpdateMainAndStatus
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -8,64 +8,65 @@ DLG.Open >STYA ZPPTR2
lda #0 lda #0
>SYSCALL GetMem >SYSCALL GetMem
bcs .99 bcs .99
>STYA ZPPTR1 >STYA ZPPTR1
txa txa
>STA.G hDLG >STA.G hDLG
ldy #0 ldy #0
.1 lda (ZPPTR2),y .1 lda (ZPPTR2),y
sta (ZPPTR1),y sta (ZPPTR1),y
iny iny
tya tya
cmp (ZPPTR2) cmp (ZPPTR2)
bne .1 bne .1
jsr DLG.SetOrigin jsr DLG.SetOrigin
sty TmpByte sty TmpByte
jsr SCRN.GotoXY jsr SCRN.GotoXY
bcs .9 bcs .9
ldy #S.DLG.Title jsr DLG.DrawTBar
jsr DLG.DrawBar
.99 bcs .9 .99 bcs .9
jsr SCRN.LineBufInitDLG jsr SCRN.LineBufInitDLG
ldy #S.DLG.W ldy #S.DLG.W
lda (ZPPTR1),y lda (ZPPTR1),y
dec dec
dec
tax tax
lda #C.SPACE lda #C.SPACE
.3 jsr SCRN.ToLineBuf .3 jsr SCRN.ToLineBuf
dex dex
bne .3 bne .3
jsr DLG.VBarToLineBuf jsr DLG.VBarToLineBuf
ldy #S.DLG.H ldy #S.DLG.H
lda (ZPPTR1),y lda (ZPPTR1),y
dec dec
dec dec
tax tax
.4 phx .4 phx
inc TmpByte inc TmpByte
ldy #S.DLG.X ldy #S.DLG.X
lda (ZPPTR1),y lda (ZPPTR1),y
tax tax
ldy TmpByte ldy TmpByte
jsr SCRN.GotoXY jsr SCRN.GotoXY
bcs .9 bcs .9
jsr SCRN.LineBufOut jsr SCRN.LineBufOut
bcs .9 bcs .9
plx plx
dex dex
bne .4 bne .4
@ -75,42 +76,42 @@ DLG.Open >STYA ZPPTR2
ldy #S.DLG.X ldy #S.DLG.X
lda (ZPPTR1),y lda (ZPPTR1),y
tax tax
ldy TmpByte ldy TmpByte
jsr SCRN.GotoXY jsr SCRN.GotoXY
bcs .9 bcs .9
ldy #S.DLG.Status jsr DLG.DrawSBar
jsr DLG.DrawBar
bcs .9 bcs .9
jmp DLG.CTRL.DrawAll jmp DLG.CTRL.DrawAll
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
DLG.Run jsr IO.GetCh DLG.Run jsr IO.GetCh
bcs .9 bcs .9
cmp #3 cmp #3
beq .8 beq .8
cmp #C.CR cmp #C.CR
beq .8 beq .8
cmp #C.TAB cmp #C.TAB
beq DLG.NextFocus beq DLG.NextFocus
pha pha
ldy #S.DLG.Focus ldy #S.DLG.Focus
lda (ZPPTR1),y get actual focused Ctrl lda (ZPPTR1),y get actual focused Ctrl
tay tay
pla pla
jsr DLG.CTRL.CharIn jsr DLG.CTRL.CharIn
bra DLG.Run bra DLG.Run
.8 clc .8 clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -119,7 +120,7 @@ DLG.NextFocus ldy #S.DLG.Focus
pha save it... pha save it...
tax tax
.1 inx next one .1 inx next one
.2 txa .2 txa
@ -137,50 +138,50 @@ DLG.NextFocus ldy #S.DLG.Focus
txa txa
ldy #S.DLG.Focus ldy #S.DLG.Focus
sta (ZPPTR1),y sta (ZPPTR1),y
pla get old focused pla get old focused
phx save new focused phx save new focused
jsr DLG.CTRL.Focus jsr DLG.CTRL.Focus
pla pla
jsr DLG.CTRL.Focus jsr DLG.CTRL.Focus
jmp DLG.Run jmp DLG.Run
*-------------------------------------- *--------------------------------------
DLG.Close ldy #S.DLG.Y DLG.Close ldy #S.DLG.Y
lda (ZPPTR1),y lda (ZPPTR1),y
sta TmpByte sta TmpByte
>LDA.G ScreenY >LDA.G ScreenY
clc clc
ldy #S.DLG.Y ldy #S.DLG.Y
adc (ZPPTR1),y adc (ZPPTR1),y
sta TmpIndex sta TmpIndex
>LDA.G ScreenY+1 >LDA.G ScreenY+1
adc #0 adc #0
sta TmpIndex+1 sta TmpIndex+1
ldy #S.DLG.H ldy #S.DLG.H
lda (ZPPTR1),y lda (ZPPTR1),y
jsr SCRN.UpdateMain.1 jsr SCRN.UpdateMain.1
bcs .9 bcs .9
>LDA.G hDLG >LDA.G hDLG
>SYSCALL FreeMem >SYSCALL FreeMem
>STZ.G hDLG >STZ.G hDLG
clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
DLG.CTRL.DrawAll DLG.CTRL.DrawAll
ldy #S.DLG.Ctrls ldy #S.DLG.Ctrls
.5 lda (ZPPTR1),y .5 lda (ZPPTR1),y
beq .8 beq .8
phy phy
jsr DLG.CTRL.Draw jsr DLG.CTRL.Draw
ply ply
@ -192,7 +193,7 @@ DLG.CTRL.DrawAll
.8 ldy #S.DLG.Focus .8 ldy #S.DLG.Focus
lda (ZPPTR1),y lda (ZPPTR1),y
jmp DLG.CTRL.Focus jmp DLG.CTRL.Focus
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
DLG.CTRL.Draw sty TmpByte Y=CtrlID DLG.CTRL.Draw sty TmpByte Y=CtrlID
@ -208,24 +209,24 @@ DLG.CTRL.Draw.LBL
jsr DLG.CTRL.GotoOrg jsr DLG.CTRL.GotoOrg
bcs .9 bcs .9
ldy TmpByte CtrlID ldy TmpByte CtrlID
lda (ZPPTR1),y lda (ZPPTR1),y
tay tay
iny iny
iny iny
iny iny
.1 lda (ZPPTR1),y .1 lda (ZPPTR1),y
beq .8 beq .8
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
iny iny
bra .1 bra .1
.8 jmp SCRN.LineBufOut .8 jmp SCRN.LineBufOut
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
DLG.CTRL.Draw.TB DLG.CTRL.Draw.TB
@ -233,17 +234,17 @@ DLG.CTRL.Draw.TB
jsr DLG.CTRL.GotoOrg jsr DLG.CTRL.GotoOrg
bcs .9 bcs .9
ldy TmpByte ldy TmpByte
lda (ZPPTR1),y lda (ZPPTR1),y
tay tay
iny iny
iny iny
iny iny
iny iny
iny iny
lda (ZPPTR1),y lda (ZPPTR1),y
@ -252,38 +253,38 @@ DLG.CTRL.Draw.TB
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPPTR2 >STYA ZPPTR2
lda #C.SPACE lda #C.SPACE
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
ldy #0 ldy #0
.1 lda (ZPPTR2),y .1 lda (ZPPTR2),y
beq .2 beq .2
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
iny iny
bra .1 bra .1
.2 tya .2 tya
tax tax
ldy TmpByte ldy TmpByte
lda (ZPPTR1),y lda (ZPPTR1),y
tay tay
iny iny
iny iny
iny iny
txa txa
sta (ZPPTR1),y CURPOS sta (ZPPTR1),y CURPOS
iny iny
.3 txa .3 txa
eor (ZPPTR1),y MAXCHAR eor (ZPPTR1),y MAXCHAR
beq .8 beq .8
lda #C.SPACE lda #C.SPACE
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
inx inx
@ -291,7 +292,7 @@ DLG.CTRL.Draw.TB
.8 lda #C.SPACE .8 lda #C.SPACE
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
jmp SCRN.LineBufOut jmp SCRN.LineBufOut
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -300,55 +301,62 @@ DLG.CTRL.Draw.OL
jsr DLG.CTRL.GotoOrg jsr DLG.CTRL.GotoOrg
bcs .9 bcs .9
ldy TmpByte ldy TmpByte
lda (ZPPTR1),y lda (ZPPTR1),y
tay S.DLG.Ctrl.OL tay S.DLG.Ctrl.OL
iny X iny X
iny Y iny Y
iny shortcut iny shortcut
iny varptr iny varptr
lda (ZPPTR1),y lda (ZPPTR1),y
phy phy
tay tay
lda (pData),y lda (pData),y
ply ply
iny value iny value
eor (ZPPTR1),y eor (ZPPTR1),y
tax tax
iny label iny label
lda #"(" lda #'('
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
lda #"o" lda #C.SO
cpx #0 jsr SCRN.ToLineBuf
lda #'`'
cpx #0
beq .2 beq .2
lda #C.SPACE lda #C.SPACE
.2 jsr SCRN.ToLineBuf .2 jsr SCRN.ToLineBuf
lda #")"
lda #C.SI
jsr SCRN.ToLineBuf
lda #')'
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
lda #C.SPACE lda #C.SPACE
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
.3 lda (ZPPTR1),y .3 lda (ZPPTR1),y
beq .4 beq .4
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
iny iny
bra .3 bra .3
.4 lda #C.SPACE .4 lda #C.SPACE
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
.8 jmp SCRN.LineBufOut .8 jmp SCRN.LineBufOut
.9 rts .9 rts
@ -358,27 +366,27 @@ DLG.CTRL.Draw.BUT
jsr DLG.CTRL.GotoOrg jsr DLG.CTRL.GotoOrg
bcs .9 bcs .9
ldy TmpByte CtrlID ldy TmpByte CtrlID
lda (ZPPTR1),y lda (ZPPTR1),y
tay tay
iny iny
iny iny
iny iny
iny iny
lda #C.SPACE lda #C.SPACE
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
.1 lda (ZPPTR1),y .1 lda (ZPPTR1),y
beq .8 beq .8
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
iny iny
bra .1 bra .1
.8 lda #C.SPACE .8 lda #C.SPACE
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
@ -386,7 +394,7 @@ DLG.CTRL.Draw.BUT
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
DLG.CTRL.Focus sta TmpByte A=CtrlID DLG.CTRL.Focus sta TmpByte A=CtrlID
tay tay
lda (ZPPTR1),y Ctrl Definition lda (ZPPTR1),y Ctrl Definition
tay tay
@ -400,28 +408,28 @@ DLG.CTRL.Focus.LBL
rts rts
DLG.CTRL.Focus.TB DLG.CTRL.Focus.TB
jsr SCRN.LineBufInitTB jsr SCRN.LineBufInitTB
jsr DLG.CTRL.GotoOrg jsr DLG.CTRL.GotoOrg
ldy #S.DLG.Focus ldy #S.DLG.Focus
lda (ZPPTR1),y lda (ZPPTR1),y
eor TmpByte eor TmpByte
bne .1 bne .1
sec sec
.1 lda #C.SPACE .1 lda #C.SPACE
bcc .2 bcc .2
lda #'[' lda #'['
.2 jsr SCRN.ToLineBuf .2 jsr SCRN.ToLineBuf
jsr DLG.CTRL.GotoEnd jsr DLG.CTRL.GotoEnd
ldy #S.DLG.Focus ldy #S.DLG.Focus
lda (ZPPTR1),y lda (ZPPTR1),y
eor TmpByte eor TmpByte
bne .3 bne .3
sec sec
.3 lda #C.SPACE .3 lda #C.SPACE
bcc .4 bcc .4
lda #']' lda #']'
@ -432,68 +440,68 @@ DLG.CTRL.Focus.TB
ldy TmpByte CtrlID ldy TmpByte CtrlID
lda (ZPPTR1),y lda (ZPPTR1),y
tay tay
iny skip Ctrl Type iny skip Ctrl Type
lda (ZPPTR1),y lda (ZPPTR1),y
clc clc
ldy #S.DLG.X ldy #S.DLG.X
adc (ZPPTR1),y adc (ZPPTR1),y
pha pha
ldy TmpByte CtrlID ldy TmpByte CtrlID
lda (ZPPTR1),y lda (ZPPTR1),y
tay tay
iny iny
iny iny
iny iny
pla pla
sec +1 sec +1
adc (ZPPTR1),y adc (ZPPTR1),y
tax tax
ldy TmpByte CtrlID ldy TmpByte CtrlID
lda (ZPPTR1),y lda (ZPPTR1),y
tay tay
iny skip Ctrl Type iny skip Ctrl Type
iny skip X iny skip X
lda (ZPPTR1),y lda (ZPPTR1),y
clc clc
ldy #S.DLG.Y ldy #S.DLG.Y
adc (ZPPTR1),y adc (ZPPTR1),y
tay tay
jmp SCRN.GotoXY jmp SCRN.GotoXY
DLG.CTRL.Focus.OL DLG.CTRL.Focus.OL
jsr SCRN.LineBufInitLBL jsr SCRN.LineBufInitLBL
jsr DLG.CTRL.GotoOrg jsr DLG.CTRL.GotoOrg
ldy #S.DLG.Focus ldy #S.DLG.Focus
lda (ZPPTR1),y lda (ZPPTR1),y
eor TmpByte eor TmpByte
bne .1 bne .1
sec sec
.1 lda #'(' .1 lda #'('
bcc .2 bcc .2
lda #'[' lda #'['
.2 jsr SCRN.ToLineBuf .2 jsr SCRN.ToLineBuf
jsr DLG.CTRL.GotoEnd jsr DLG.CTRL.GotoEnd
ldy #S.DLG.Focus ldy #S.DLG.Focus
lda (ZPPTR1),y lda (ZPPTR1),y
eor TmpByte eor TmpByte
bne .3 bne .3
sec sec
.3 lda #')' .3 lda #')'
bcc .4 bcc .4
lda #']' lda #']'
@ -503,31 +511,31 @@ DLG.CTRL.Focus.OL
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
jmp SCRN.LineBufOut jmp SCRN.LineBufOut
DLG.CTRL.Focus.BUT DLG.CTRL.Focus.BUT
jsr SCRN.LineBufInitBut jsr SCRN.LineBufInitBut
jsr DLG.CTRL.GotoOrg jsr DLG.CTRL.GotoOrg
ldy #S.DLG.Focus ldy #S.DLG.Focus
lda (ZPPTR1),y lda (ZPPTR1),y
eor TmpByte eor TmpByte
bne .1 bne .1
sec sec
.1 lda #C.SPACE .1 lda #C.SPACE
bcc .2 bcc .2
lda #'[' lda #'['
.2 jsr SCRN.ToLineBuf .2 jsr SCRN.ToLineBuf
jsr DLG.CTRL.GotoEnd jsr DLG.CTRL.GotoEnd
ldy #S.DLG.Focus ldy #S.DLG.Focus
lda (ZPPTR1),y lda (ZPPTR1),y
eor TmpByte eor TmpByte
bne .3 bne .3
sec sec
.3 lda #C.SPACE .3 lda #C.SPACE
bcc .4 bcc .4
lda #']' lda #']'
@ -538,45 +546,45 @@ DLG.CTRL.Focus.BUT
DLG.CTRL.GotoOrg DLG.CTRL.GotoOrg
clc clc
.HS B0 BCS .HS B0 BCS
DLG.CTRL.GotoEnd DLG.CTRL.GotoEnd
sec sec
php php
ldy TmpByte CtrlID ldy TmpByte CtrlID
lda (ZPPTR1),y lda (ZPPTR1),y
tay tay
iny skip Ctrl Type iny skip Ctrl Type
lda (ZPPTR1),y lda (ZPPTR1),y
clc clc
ldy #S.DLG.X ldy #S.DLG.X
adc (ZPPTR1),y adc (ZPPTR1),y
plp plp
bcc .1 bcc .1
>PUSHA >PUSHA
jsr DLG.CTRL.GetWitdh jsr DLG.CTRL.GetWitdh
clc clc
adc (pStack) adc (pStack)
inc pStack inc pStack
.1 tax .1 tax
ldy TmpByte CtrlID ldy TmpByte CtrlID
lda (ZPPTR1),y lda (ZPPTR1),y
tay tay
iny skip Ctrl Type iny skip Ctrl Type
iny skip X iny skip X
lda (ZPPTR1),y lda (ZPPTR1),y
clc clc
ldy #S.DLG.Y ldy #S.DLG.Y
adc (ZPPTR1),y adc (ZPPTR1),y
tay tay
DLG.CTRL.GotoXY >PUSHW LineBufPtr DLG.CTRL.GotoXY >PUSHW LineBufPtr
>PUSHW L.MSG.GOTOXY >PUSHW L.MSG.GOTOXY
tya tya
@ -588,41 +596,41 @@ DLG.CTRL.GotoXY >PUSHW LineBufPtr
>PUSHA >PUSHA
>PUSHBI 2 >PUSHBI 2
>SYSCALL SPrintF >SYSCALL SPrintF
.2 lda (LineBufPtr) .2 lda (LineBufPtr)
beq .8 beq .8
inc LineBufPtr inc LineBufPtr
bne .2 bne .2
inc LineBufPtr+1 inc LineBufPtr+1
bra .2 bra .2
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
DLG.SetOrigin ldy #S.DLG.X DLG.SetOrigin ldy #S.DLG.X
lda (ZPPTR1),y lda (ZPPTR1),y
bne .1 bne .1
>LDA.G ScreenW >LDA.G ScreenW
ldy #S.DLG.W ldy #S.DLG.W
sec sec
sbc (ZPPTR1),y sbc (ZPPTR1),y
lsr lsr
ldy #S.DLG.X ldy #S.DLG.X
sta (ZPPTR1),y sta (ZPPTR1),y
.1 tax .1 tax
ldy #S.DLG.Y ldy #S.DLG.Y
lda (ZPPTR1),y lda (ZPPTR1),y
bne .2 bne .2
>LDA.G ViewPortHm1 >LDA.G ViewPortHm1
ldy #S.DLG.H ldy #S.DLG.H
sec sec
sbc (ZPPTR1),y sbc (ZPPTR1),y
lsr lsr
ldy #S.DLG.Y ldy #S.DLG.Y
sta (ZPPTR1),y sta (ZPPTR1),y
@ -635,12 +643,12 @@ DLG.CTRL.GetWitdh
ldy TmpByte CtrlID ldy TmpByte CtrlID
lda (ZPPTR1),y lda (ZPPTR1),y
tay tay
lda (ZPPTR1),y lda (ZPPTR1),y
tax tax
jmp (J.DLG.CTRL.GetWitdh,x) jmp (J.DLG.CTRL.GetWitdh,x)
*-------------------------------------- *--------------------------------------
DLG.CTRL.GetWitdh.LBL DLG.CTRL.GetWitdh.LBL
clc clc
rts rts
@ -661,35 +669,35 @@ DLG.CTRL.GetWitdh.OL
iny iny
iny iny
iny iny
ldx #0 ldx #0
.1 inx .1 inx
iny iny
lda (ZPPTR1),y lda (ZPPTR1),y
bne .1 bne .1
txa txa
rts rts
DLG.CTRL.GetWitdh.BUT DLG.CTRL.GetWitdh.BUT
iny iny
iny iny
iny iny
ldx #0 ldx #0
.1 inx .1 inx
iny iny
lda (ZPPTR1),y lda (ZPPTR1),y
bne .1 bne .1
txa txa
rts rts
*-------------------------------------- *--------------------------------------
DLG.CTRL.CharIn sty TmpByte A=CtrlID DLG.CTRL.CharIn sty TmpByte A=CtrlID
pha pha
lda (ZPPTR1),y Ctrl Definition lda (ZPPTR1),y Ctrl Definition
tay tay
lda (ZPPTR1),y Ctrl Type lda (ZPPTR1),y Ctrl Type
@ -704,10 +712,10 @@ DLG.CTRL.CharIn.LBL
DLG.CTRL.CharIn.TB DLG.CTRL.CharIn.TB
cmp #C.DEL cmp #C.DEL
beq .5 beq .5
cmp #C.SPACE cmp #C.SPACE
bcc .9 bcc .9
pha pha
iny iny
@ -717,13 +725,13 @@ DLG.CTRL.CharIn.TB
iny iny
cmp (ZPPTR1),y MAXCHAR cmp (ZPPTR1),y MAXCHAR
beq .7 beq .7
pha pha
inc inc
dey dey
sta (ZPPTR1),y CURPOS sta (ZPPTR1),y CURPOS
iny iny
iny iny
@ -747,7 +755,7 @@ DLG.CTRL.CharIn.TB
>SYSCALL PutChar >SYSCALL PutChar
clc clc
rts rts
.5 iny .5 iny
iny iny
iny iny
@ -775,12 +783,12 @@ DLG.CTRL.CharIn.TB
>SYSCALL PutChar >SYSCALL PutChar
clc clc
rts rts
.7 pla .7 pla
.8 clc .8 clc
rts rts
.9 sec .9 sec
rts rts
*-------------------------------------- *--------------------------------------
@ -802,9 +810,9 @@ DLG.CTRL.CharIn.OL
ply ply
sta (pData),y sta (pData),y
jmp DLG.CTRL.DrawAll jmp DLG.CTRL.DrawAll
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
@ -812,40 +820,72 @@ DLG.CTRL.CharIn.BUT
clc clc
rts rts
*-------------------------------------- *--------------------------------------
DLG.DrawBar phy DLG.DrawTBar ldx #SEQ.DLG.TBAR-SEQS
jsr SCRN.LineBufInitDLGBar jsr SCRN.LineBufInit
ldy #S.DLG.W ldy #S.DLG.W
lda (ZPPTR1),y lda (ZPPTR1),y
dec
dec
tax tax
ply ldy #S.DLG.Title
lda (ZPPTR1),y lda (ZPPTR1),y
tay tay
.1 lda (ZPPTR1),y .1 lda (ZPPTR1),y
beq .11 beq .11
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
dex dex
beq .3
iny iny
bra .1 bra .1
.11 lda #C.SPACE .11 lda #C.SPACE
.2 jsr SCRN.ToLineBuf .2 jsr SCRN.ToLineBuf
dex dex
bne .2 bne .2
ldy #0
.3 lda SEQ.NORM,y .3 ldx #SEQ.DLG.TBAR.E-SEQS
beq .4 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 jsr SCRN.ToLineBuf
iny dex
bra .3 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 .4 jmp SCRN.LineBufOut
*-------------------------------------- *--------------------------------------
DLG.VBarToLineBuf DLG.VBarToLineBuf
@ -857,7 +897,7 @@ DLG.VBarToLineBuf
jsr SCRN.ToLineBuf jsr SCRN.ToLineBuf
iny iny
bra .1 bra .1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -57,7 +57,7 @@ IO.GetCh.1 tax
rts rts
*-------------------------------------- *--------------------------------------
.11 lda (pData) #EscBufferPtr .11 lda (pData) #EscBufferPtr
cmp #15 cmp #21
bcc .10 bcc .10
.19 >STZ.G bEscMode .19 >STZ.G bEscMode

View File

@ -9,22 +9,8 @@ SCRN.Init >PUSHW L.SEQ.INIT
>PUSHBI 1 >PUSHBI 1
>SYSCALL PrintF >SYSCALL PrintF
bcs SCRN.Init.9 bcs SCRN.Init.9
jmp SCRN.Home jsr SCRN.ResetScrollRgn
*--------------------------------------
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
*-------------------------------------- *--------------------------------------
SCRN.Home lda #0 SCRN.Home lda #0
@ -35,6 +21,53 @@ SCRN.Home lda #0
cpy #CurY+1 cpy #CurY+1
bne .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 rts
*-------------------------------------- *--------------------------------------
SCRN.ResetScrollRgn SCRN.ResetScrollRgn
@ -47,42 +80,18 @@ SCRN.ResetScrollRgn
rts rts
*-------------------------------------- *--------------------------------------
SCRN.UnSaved >LDA.G bUnSaved SCRN.UnSaved >LDA.G bUnSaved
bne SCRN.UpdateTopBar.8 bne SCRN.Init.8
dec dec
sta (pData),y sta (pData),y bUnSaved
*-------------------------------------- *--------------------------------------
SCRN.UpdateTopBar 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 ldx #SEQ.CURSAVE-SEQS
jsr SCRN.SEQS.ToLineBuf jsr SCRN.LineBufInit
ldy #1 ldy #1
jsr SCRN.LineBufGotoLineY jsr SCRN.LineBufGotoLineY
bcs .9 jsr SCRN.ResetBar
>LDA.G ScreenW
tax
lda #C.SPACE
.1 jsr SCRN.ToLineBuf
dex
bne .1
lda #C.CR
jsr SCRN.ToLineBuf
>PUSHW LineBufPtr >PUSHW LineBufPtr
>PUSHW L.MSG.TOPBAR >PUSHW L.MSG.TOPBAR
@ -111,7 +120,6 @@ SCRN.UpdateTopBar.1
jmp SCRN.LineBufOut jmp SCRN.LineBufOut
.8 clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
SCRN.UpdateViewPort SCRN.UpdateViewPort
@ -189,6 +197,7 @@ SCRN.UpdateViewPort
jsr SCRN.scrollUp ...and move content one line up jsr SCRN.scrollUp ...and move content one line up
bcc .41 bcc .41
.9 rts .9 rts
.6 >LDA.G FileX .6 >LDA.G FileX
@ -251,6 +260,7 @@ SCRN.UpdateMain.1
bne .4 bne .4
inc TmpIndex+1 inc TmpIndex+1
.4 dec TmpCount .4 dec TmpCount
bne .1 bne .1
@ -261,7 +271,7 @@ SCRN.UpdateMain.1
jsr SCRN.GotoXY jsr SCRN.GotoXY
bcs SCRN.UpdateMain.9 bcs SCRN.UpdateMain.9
>PUSHW L.SEQ.CEOL >PUSHW L.SEQ.EDIT
>PUSHBI 0 >PUSHBI 0
>SYSCALL PrintF >SYSCALL PrintF
bcs SCRN.UpdateMain.9 bcs SCRN.UpdateMain.9
@ -356,6 +366,7 @@ SCRN.UpdateLineAtBufPtr
.5 lda (BufPtr) .5 lda (BufPtr)
cmp #'\' cmp #'\'
beq .50 beq .50
cmp #'%' cmp #'%'
bne .51 bne .51
@ -413,7 +424,7 @@ SCRN.UpdateStatusBar
sta (pData),y sta (pData),y
jsr SCRN.ResetStatusBar jsr SCRN.ResetStatusBar
>PUSHW LineBufPtr >PUSHW LineBufPtr
>PUSHW L.MSG.STATUSBAR >PUSHW L.MSG.STATUSBAR
@ -451,15 +462,16 @@ SCRN.UpdateStatusBar
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
SCRN.ResetStatusBar SCRN.ResetStatusBar
jsr SCRN.LineBufInitBar
ldx #SEQ.CURSAVE-SEQS ldx #SEQ.CURSAVE-SEQS
jsr SCRN.SEQS.ToLineBuf jsr SCRN.LineBufInit
>LDA.G ScreenH >LDA.G ScreenH
tay tay
jsr SCRN.LineBufGotoLineY jsr SCRN.LineBufGotoLineY
SCRN.ResetBar ldx #SEQ.BAR-SEQS
jsr SCRN.SEQS.ToLineBuf
>LDA.G ScreenW >LDA.G ScreenW
tax tax
@ -483,9 +495,9 @@ SCRN.CursorAdjust
.2 tya .2 tya
>CMP.G FileX >CMP.G FileX
bcs .8 bcs .8
>STA.G FileX >STA.G FileX
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
@ -555,40 +567,26 @@ SCRN.scrollDn >PUSHW L.SEQ.SCROLLDN
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
SCRN.LineBufInitBar SCRN.LineBufInitBar
phx
ldx #SEQ.BAR-SEQS ldx #SEQ.BAR-SEQS
bra SCRN.LineBufInit bra SCRN.LineBufInit
SCRN.LineBufInitDLGBar
phx
ldx #SEQ.DLG.BAR-SEQS
bra SCRN.LineBufInit
SCRN.LineBufInitDLG SCRN.LineBufInitDLG
phx
ldx #SEQ.DLG-SEQS ldx #SEQ.DLG-SEQS
bra SCRN.LineBufInit bra SCRN.LineBufInit
SCRN.LineBufInitLBL SCRN.LineBufInitLBL
phx
ldx #SEQ.DLG.LBL-SEQS ldx #SEQ.DLG.LBL-SEQS
bra SCRN.LineBufInit bra SCRN.LineBufInit
SCRN.LineBufInitTB SCRN.LineBufInitTB
phx
ldx #SEQ.DLG.TB-SEQS ldx #SEQ.DLG.TB-SEQS
bra SCRN.LineBufInit bra SCRN.LineBufInit
SCRN.LineBufInitBut SCRN.LineBufInitBut
phx
ldx #SEQ.DLG.BUT-SEQS ldx #SEQ.DLG.BUT-SEQS
bra SCRN.LineBufInit bra SCRN.LineBufInit
SCRN.LineBufInitEdit SCRN.LineBufInitEdit
phx
ldx #SEQ.EDIT-SEQS ldx #SEQ.EDIT-SEQS
SCRN.LineBufInit SCRN.LineBufInit
>LDYA.G LineBufBase >LDYA.G LineBufBase
>STYA LineBufPtr >STYA LineBufPtr
jsr SCRN.SEQS.ToLineBuf
plx
rts
*-------------------------------------- *--------------------------------------
SCRN.SEQS.ToLineBuf SCRN.SEQS.ToLineBuf
lda SEQS,x lda SEQS,x
@ -597,6 +595,7 @@ SCRN.SEQS.ToLineBuf
inx inx
lda SEQS,x lda SEQS,x
bne .1 bne .1
rts rts
*-------------------------------------- *--------------------------------------
SCRN.LineBufGotoLineY SCRN.LineBufGotoLineY
@ -625,6 +624,7 @@ SCRN.LineBufSprintf
SCRN.ToLineBuf sta (LineBufPtr) SCRN.ToLineBuf sta (LineBufPtr)
inc LineBufPtr inc LineBufPtr
bne .8 bne .8
inc LineBufPtr+1 inc LineBufPtr+1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------

View File

@ -69,7 +69,7 @@ L.SEQ.SCROLLUP .DA SEQ.SCROLLUP
L.SEQ.SCROLLDN .DA SEQ.SCROLLDN L.SEQ.SCROLLDN .DA SEQ.SCROLLDN
L.SEQ.SCROLLCURUP .DA SEQ.SCROLLCURUP L.SEQ.SCROLLCURUP .DA SEQ.SCROLLCURUP
L.SEQ.SCROLLCURDN .DA SEQ.SCROLLCURDN 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.TERMCAP .DA MSG.TERMCAP
L.MSG.TOPBAR .DA MSG.TOPBAR L.MSG.TOPBAR .DA MSG.TOPBAR
L.MSG.FILETYPES .DA MSG.TXTCR L.MSG.FILETYPES .DA MSG.TXTCR
@ -147,18 +147,13 @@ CS.INIT.RTS rts
*-------------------------------------- *--------------------------------------
CS.RUN >PUSHW L.MSG.TERMCAP CS.RUN >PUSHW L.MSG.TERMCAP
>PUSHBI 0 >PUSHBI 0
>SYSCALL PrintF Send Query for term W & H >SYSCALL PrintF Send Query for term W & H
bcs CS.INIT.RTS bcs CS.INIT.RTS
.1 jsr IO.GetCh .1 jsr IO.GetCh
bcs CS.INIT.RTS bcs CS.INIT.RTS
* beq .11 >LDA.G ScreenW Wait for Response from terminal for W & H
* >SYSCALL PutChar
* bcs CS.INIT.RTS
.11 >LDA.G ScreenW Wait for Response from terminal for W & H
beq .1 beq .1
jsr SCRN.Init jsr SCRN.Init
@ -260,7 +255,6 @@ CS.DOEVENT lda (pEvent)
asl asl
bpl .9 bpl .9
>STA.G bUpdateTop
>STA.G bUpdateStatus >STA.G bUpdateStatus
.9 sec .9 sec
@ -304,16 +298,25 @@ CS.QUIT ldy #hLineBuf
CS.END CS.END
SEQS .EQ * SEQS .EQ *
SEQ.BAR .CZ "\e[7m\e[37;40m" SEQ.BAR .CZ "\e[7m\e[37;40m"
SEQ.DLG.BAR .CS "\e[0m\e[37;40m" SEQ.DLG.TBAR .CS "\e[0m\e[93;104m"
.DA #C.SO,#'x',#C.SI .DA #C.SO,#'l',#C.SI
.CZ "\e[7m\e[37;40m" .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 #C.SO,#'x',#C.SI
.DA #0 .DA #0
SEQ.DLG.VBAR .CS "\e[37;40m" SEQ.DLG.VBAR .CS "\e[93;104m"
.DA #C.SO,#'x',#C.SI .DA #C.SO,#'x',#C.SI
.DA #0 .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.TB .CZ "\e[0m\e[93;44m"
SEQ.DLG.BUT .CZ "\e[7m\e[93;44m" SEQ.DLG.BUT .CZ "\e[7m\e[93;44m"
SEQ.EDIT .CS "\e[0m\e[93;44m" +CEOL SEQ.EDIT .CS "\e[0m\e[93;44m" +CEOL
@ -323,12 +326,16 @@ SEQ.INV .CZ "\e[7m"
SEQ.CURSAVE .CZ "\e7" SEQ.CURSAVE .CZ "\e7"
SEQ.CURRESTORE .CZ "\e8" SEQ.CURRESTORE .CZ "\e8"
*-------------------------------------- *--------------------------------------
SEQ.RESET .CZ "\ec" SEQ.INIT .CS "\ec"
SEQ.INIT .CS "\ec\e(B\e)0" .CS "\e(B" font select
SEQ.SCROLLRGN .CZ "\e[?7l\e[2;%dr" .CS "\e)0" font select
SEQ.SCROLLCURUP .CS "\e[?7l\e[%d;%dr" .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.SCROLLUP .CZ "\eD"
SEQ.SCROLLCURDN .CS "\e[?7l\e[%d;%dr" SEQ.SCROLLCURDN .CS "\e[%d;%dr"
SEQ.SCROLLDN .CZ "\eM" SEQ.SCROLLDN .CZ "\eM"
*-------------------------------------- *--------------------------------------
MSG.TERMCAP .CZ "\r\n\e[999;999H\e[6n" MSG.TERMCAP .CZ "\r\n\e[999;999H\e[6n"
@ -371,7 +378,7 @@ MSG.HELP .PS "All commands:"
MSG.NEWFILE .AZ "newfile" MSG.NEWFILE .AZ "newfile"
EscChars .AS "DABC" EscChars .AS "DABC"
EscChars.Cnt .EQ *-EscChars 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.Size .EQ 0
S.DLG.X .EQ 1 S.DLG.X .EQ 1
@ -495,7 +502,7 @@ bEscMode .BS 1
bCSIMode .BS 1 bCSIMode .BS 1
bExit .BS 1 bExit .BS 1
bUnSaved .BS 1 bUnSaved .BS 1
bUpdateTop .BS 1
bUpdateStatus .BS 1 bUpdateStatus .BS 1
hFileName .BS 1 hFileName .BS 1

View File

@ -14,9 +14,8 @@ CL.READN0X >PUSHW ZPCLBuf
>PUSHBI 1 >PUSHBI 1
>SYSCALL SPrintF >SYSCALL SPrintF
bcs .9 bcs .9
lda #$ff dec CL.bReady
sta CL.bReady
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
@ -39,14 +38,15 @@ CL.CHARIN tax
dex dex
bpl .1 bpl .1
.8 rts invalid \e[ sequence .8 clc
rts invalid \e[ sequence
.2 lda CL.MaxCnt .2 lda CL.MaxCnt
bne .3 bne .3
lda EscChars.Remap,x lda EscChars.Remap,x
bra CL.READN0A bra CL.READN0A
.3 txa .3 txa
asl asl
tax tax
@ -63,7 +63,7 @@ CL.CHARIN tax
.5 lda CL.MaxCnt .5 lda CL.MaxCnt
beq CL.READN0X beq CL.READN0X
cpx #C.SPACE cpx #C.SPACE
bcc CL.CHARIN.CTRL bcc CL.CHARIN.CTRL
@ -74,12 +74,11 @@ CL.CHARIN tax
*-------------------------------------- *--------------------------------------
lda CL.Len lda CL.Len
beq .8 beq .8
lda CL.Ptr lda CL.Ptr
beq .8 beq .8
lda #C.BS jsr CL.BS.OUT
>SYSCALL PutChar
dec CL.Ptr dec CL.Ptr
jmp CL.DEL jmp CL.DEL
@ -101,26 +100,30 @@ CL.Insert ldy CL.Len
txa txa
sta (ZPCLBuf),y sta (ZPCLBuf),y
inc CL.Ptr
>SYSCALL PutChar >SYSCALL PutChar
bcs .9
inc CL.Ptr
jsr CL.PrintEOL jsr CL.PrintEOL
bcs .9
lda CL.MaxCnt lda CL.MaxCnt
dec MaxCnt = 1, don't wait for CR dec MaxCnt = 1, don't wait for CR
bne .8 bne .8
lda #$ff dec CL.bReady
sta CL.bReady
.8 clc .8 clc
rts
.9 rts
*-------------------------------------- *--------------------------------------
CL.CHARIN.CTRL cpx #C.CR CL.CHARIN.CTRL cpx #C.CR
beq .8 beq .70
cpx #C.EOF cpx #C.EOF
beq .9 beq .71
cpx #3 Ctrl-C cpx #3 Ctrl-C
beq CL.CLR beq CL.CLR
@ -134,14 +137,13 @@ CL.CHARIN.CTRL cpx #C.CR
bne .8 bne .8
jmp CL.SUPPR jmp CL.SUPPR
.8 jsr CheckLFAfterCR .70 jsr CheckLFAfterCR
bcs .9 bcs .9
lda #$ff .71 dec CL.bReady
sta CL.bReady
clc .8 clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CL.CLR lda (ZPCLBuf) CL.CLR lda (ZPCLBuf)
@ -151,12 +153,12 @@ CL.CLR lda (ZPCLBuf)
cmp CL.Len cmp CL.Len
beq .2 beq .2
inc inc CL.Ptr
sta CL.Ptr
lda #C.FS jsr CL.FS.OUT
>SYSCALL PutChar bcc .1
bra .1
rts
.2 ldy #0 .2 ldy #0
@ -170,9 +172,9 @@ CL.CLR lda (ZPCLBuf)
*-------------------------------------- *--------------------------------------
CL.Reset lda #0 CL.Reset lda #0
sta (ZPCLBuf) sta (ZPCLBuf)
CL.Reset.1 ldx #CL.Ptr CL.Reset.1 ldx #CL.Ptr
.1 stz 0,x .1 stz 0,x
inx inx
cpx #CL.bEscMode+1 cpx #CL.bEscMode+1
@ -181,38 +183,45 @@ CL.Reset.1 ldx #CL.Ptr
>LDYA ZPCLBuf >LDYA ZPCLBuf
>STYA ZPCLBufPtr >STYA ZPCLBufPtr
CL.Reset.8 clc
rts rts
*-------------------------------------- *--------------------------------------
CL.BS lda CL.Ptr CL.BS lda CL.Ptr
beq .9 beq CL.Reset.8
dec CL.Ptr dec CL.Ptr
lda #C.BS CL.BS.OUT lda #C.BS
>SYSCALL PutChar >SYSCALL PutChar
.9 rts rts
*-------------------------------------- *--------------------------------------
CL.NAK lda CL.Ptr CL.FS lda CL.Ptr
cmp CL.Len cmp CL.Len
beq .9 beq CL.Reset.8
inc inc
sta CL.Ptr sta CL.Ptr
lda #C.FS CL.FS.OUT lda #C.ESC
>SYSCALL PutChar >SYSCALL PutChar
.9 rts lda #'['
>SYSCALL PutChar
lda #'C'
>SYSCALL PutChar
rts
*-------------------------------------- *--------------------------------------
* Erase char UNDER cursor * Erase char UNDER cursor
*-------------------------------------- *--------------------------------------
CL.SUPPR lda CL.Len CL.SUPPR lda CL.Len
beq CL.PrintEOL.8 beq CL.Reset.8
lda CL.Ptr lda CL.Ptr
cmp CL.Len cmp CL.Len
beq CL.PrintEOL.8 beq CL.Reset.8
*-------------------------------------- *--------------------------------------
CL.DEL ldy CL.Ptr CL.DEL ldy CL.Ptr
@ -226,38 +235,42 @@ CL.DEL ldy CL.Ptr
dec CL.Len dec CL.Len
*-------------------------------------- *--------------------------------------
CL.PrintEOL lda CL.Ptr CL.PrintEOL ldy CL.Ptr
.1 cmp CL.Len .1 cpy CL.Len
beq .2 beq .8
pha phy
tay
lda (ZPCLBuf),y lda (ZPCLBuf),y
>SYSCALL PutChar >SYSCALL PutChar
pla ply
inc bcs .9
iny
bra .1 bra .1
.2 lda #C.SPACE .2 lda #C.SPACE
>SYSCALL PutChar >SYSCALL PutChar
lda CL.Ptr bcs .9
.3 cmp CL.Len jsr CL.BS.OUT
beq .4 bcs .9
pha ldy CL.Ptr
lda #C.BS
>SYSCALL PutChar .3 cpy CL.Len
pla beq .8
inc
phy
jsr CL.BS.OUT
ply
bcs .9
iny
bra .3 bra .3
.4 lda #C.BS
>SYSCALL PutChar
CL.PrintEOL.8 clc .8 clc
rts .9 rts
*-------------------------------------- *--------------------------------------
CL.Print ldy #S.PS.hStdOut CL.Print ldy #S.PS.hStdOut
lda (pPS),y lda (pPS),y

View File

@ -101,7 +101,7 @@ L.FMT.int32 .DA FMT.int32
J.ESC .DA CL.BS left arrow J.ESC .DA CL.BS left arrow
.DA HIS.GetNext .DA HIS.GetNext
.DA HIS.GetPrev .DA HIS.GetPrev
.DA CL.NAK right arrow .DA CL.FS right arrow
L.KEYWORDS .DA KEYWORDS L.KEYWORDS .DA KEYWORDS
I.KEYWORDS .DA GFX.TEXT I.KEYWORDS .DA GFX.TEXT
.DA GFX.GR .DA GFX.GR
@ -411,8 +411,8 @@ CS.RUN.LOOP >SLEEP
.7 cmp #MLI.E.EOF .7 cmp #MLI.E.EOF
beq .8 beq .8
cmp #3 cmp #24 Ctrl-X
beq .99 beq .8
pha pha
>LDA.G hFile >LDA.G hFile
@ -461,10 +461,11 @@ CS.FORTH.Run jsr CL.Reset
.1 >SYSCALL GetChar .1 >SYSCALL GetChar
bcs .9 I/O error bcs .9 I/O error
.2 cmp #3 Ctrl-C .2 cmp #24 Ctrl-X
beq .9 CS beq .9 CS
jsr CL.CHARIN jsr CL.CHARIN
bcs .9
bit CL.bReady Something to execute ? bit CL.bReady Something to execute ?
bpl .1 bpl .1
@ -938,7 +939,7 @@ OptionVars .DA #bDebug,#bDebug,#bTrace,#bTrace
*-------------------------------------- *--------------------------------------
EscChars .AS 'DBAC' EscChars .AS 'DBAC'
EscChars.Cnt .EQ *-EscChars 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" KEYWORDS .AT "TEXT"
.AT "GR" .AT "GR"

View File

@ -165,7 +165,9 @@ CS.RUN.LOOP0 jsr CS.Scr.SetStatusConn
jsr CS.Scr.SetBuf jsr CS.Scr.SetBuf
jsr CS.Scr.SetStatusOkErr jsr CS.Scr.SetStatusOkErr
*-------------------------------------- *--------------------------------------
CS.RUN.LOOP lda hSCR CS.RUN.LOOP >SLEEP
lda hSCR
>LIBCALL hLIBTUI,LIBTUI.Exec >LIBCALL hLIBTUI,LIBTUI.Exec
bcs CS.RUN.LOOP.9 bcs CS.RUN.LOOP.9

View File

@ -980,8 +980,15 @@ CS.RUN.CHARIN.RIGHT
inc inc
sta TextPtr sta TextPtr
lda #C.FS lda #C.ESC
>SYSCALL PutChar >SYSCALL PutChar
lda #'['
>SYSCALL PutChar
lda #'C'
>SYSCALL PutChar
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.DOEVENT lda (pEvent) CS.DOEVENT lda (pEvent)
@ -1054,7 +1061,7 @@ MSG.NULL .HS 00
*-------------------------------------- *--------------------------------------
EscChars .AS 'DBAC' EscChars .AS 'DBAC'
EscChars.Cnt .EQ *-EscChars 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.NOIDENT .AZ "*** No Ident response"
IRC.REP.JOIN .AZ "JOIN" IRC.REP.JOIN .AZ "JOIN"

View File

@ -113,12 +113,12 @@ DumpFD.BDEV >PUSHW L.MSG.DEV
adc /S.FD.DEV adc /S.FD.DEV
>PUSHYA >PUSHYA
ldy #S.FD.DEV.DRVPTR+1 ldy #S.FD.DEV.BUSPTR+1
>PUSHB (ZPFDPtr),y >PUSHB (ZPFDPtr),y
dey dey
>PUSHB (ZPFDPtr),y >PUSHB (ZPFDPtr),y
>PUSHBI 7 >PUSHBI 8
>SYSCALL PrintF >SYSCALL PrintF
bcs .9 bcs .9
@ -223,6 +223,17 @@ DumpFD.PIPE >PUSHW L.MSG.PIPE
DumpFD.T ldx Index DumpFD.T ldx Index
>PUSHB hFDs,x >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 lda (ZPFDPtr) S.FD.T
tax tax
>PUSHW L.FD.T,x >PUSHW L.FD.T,x
@ -246,10 +257,10 @@ CS.QUIT clc
rts rts
*-------------------------------------- *--------------------------------------
CS.END CS.END
MSG0 .CZ "hFD Type Name Addr Status Typ/Sub IDString Version Size (BLK)" MSG0 .CZ "hFD ID Type Name Addr Status TP.ST IDString Version Size (BLK)"
MSG.DEV .CZ "%3d %4s %12s %H " MSG.DEV .CZ "%3d %h %4s %12s %H "
MSG.DEV.ERR .CZ "[%h] Device Error.\r\n" 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.B .CZ "%10u\r\n"
MSG.DEV.C .CZ "n/a\r\n" MSG.DEV.C .CZ "n/a\r\n"
MSG.PIPE .CZ "%3d %5s %s\r\n" MSG.PIPE .CZ "%3d %5s %s\r\n"

View File

@ -54,20 +54,21 @@ CL.CHARIN tax
sta (pData),y Y=bEscMode sta (pData),y Y=bEscMode
txa txa
ldx #EscChars.Cnt-1 ldx #IN.EscCharsCnt-1
.1 cmp EscChars,x .1 cmp IN.EscChars,x
beq .2 beq .2
dex dex
bpl .1 bpl .1
.8 rts invalid \e[ sequence .8 clc
rts invalid \e[ sequence
.2 >LDA.G CL.MaxCnt .2 >LDA.G CL.MaxCnt
bne .3 bne .3
lda EscChars.Remap,x lda IN.EscCodes,x
bra CL.READN0A bra CL.READN0A
.3 txa .3 txa
@ -103,10 +104,15 @@ CL.CHARIN tax
>LDA.G CL.bSilent >LDA.G CL.bSilent
bmi .6 bmi .6
lda #C.BS jsr CL.BS.OUT
lda #C.SPACE
>SYSCALL PutChar >SYSCALL PutChar
jsr CL.BS.OUT
.6 >DEC.G CL.Ptr .6 >DEC.G CL.Ptr
jmp CL.DEL jmp CL.DEL
*-------------------------------------- *--------------------------------------
CL.Insert >LDA.G CL.Len CL.Insert >LDA.G CL.Len
@ -163,17 +169,18 @@ CL.CHARIN.CTRL cpx #C.CR
cpx #C.EOF cpx #C.EOF
beq .19 beq .19
cpx #3 Ctrl-C
beq CL.CLR
cpx #C.TAB cpx #C.TAB
bne .1 bne .1
jmp HIS.Select jmp HIS.Select
.1 cpx #26 Ctrl-Z .1 cpx #26 Ctrl-Z
beq CL.SUPPR
cpx #3 Ctrl-C
bne .8 bne .8
jmp CL.SUPPR
jmp CL.CLR
.18 jsr CheckLFAfterCR Check for any extra LF .18 jsr CheckLFAfterCR Check for any extra LF
bcs .9 bcs .9
@ -184,6 +191,98 @@ CL.CHARIN.CTRL cpx #C.CR
.8 clc .8 clc
.9 rts .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 >STZ.G HIS.Ptr
CL.CLR.1 lda (ZPCLBuf) CL.CLR.1 lda (ZPCLBuf)
@ -198,8 +297,8 @@ CL.CLR.1 lda (ZPCLBuf)
inc inc
>STA.G CL.Ptr >STA.G CL.Ptr
lda #C.FS
>SYSCALL PutChar jsr CL.FS.OUT
bra .1 bra .1
.2 ldy #0 .2 ldy #0
@ -239,95 +338,6 @@ CL.ReadReset lda #$ff
sta (pData),y sta (pData),y
rts 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 MAN
SAVE usr/src/bin/sh.s.cl SAVE usr/src/bin/sh.s.cl
LOAD usr/src/bin/sh.s LOAD usr/src/bin/sh.s

View File

@ -171,6 +171,7 @@ CMD.CD.YA >PUSHYA
>PUSHWZ Allocate >PUSHWZ Allocate
>SYSCALL RealPath >SYSCALL RealPath
bcs CMD.POPD.RTS bcs CMD.POPD.RTS
>STYA ZPPtr1 >STYA ZPPtr1
stx ZPTmpW Save hMem stx ZPTmpW Save hMem
@ -563,6 +564,7 @@ CMD.REN lda (ZPArgVBufPtr)
>SYSCALL GetMem >SYSCALL GetMem
bcs .90 bcs .90
>STYA ZPPtr2 >STYA ZPPtr2
stx ZPTmpW+1 stx ZPTmpW+1
@ -630,6 +632,7 @@ CMD.FUNCTION lda (ZPArgVBufPtr)
jsr CORE.ArgV.Next nothing after function name jsr CORE.ArgV.Next nothing after function name
beq .10 beq .10
cmp #'{' cmp #'{'
bne .9 bne .9
@ -1109,6 +1112,7 @@ CMD.NEXT.LIST.TOKEN
lda (pData),y lda (pData),y
sta ZPPtr1+1 sta ZPPtr1+1
ldy #0 ldy #0
.10 jsr GetPtr1NextChar .10 jsr GetPtr1NextChar
beq .3 beq .3
@ -1117,11 +1121,13 @@ CMD.NEXT.LIST.TOKEN
sta (ZPCLBuf),y sta (ZPCLBuf),y
iny iny
.1 jsr GetPtr1NextChar .1 jsr GetPtr1NextChar
beq .3 beq .3
cmp #C.SPACE cmp #C.SPACE
beq .3 beq .3
sta (ZPCLBuf),y sta (ZPCLBuf),y
iny iny
bra .1 bra .1

View File

@ -130,13 +130,14 @@ L.MSG.BATCHERR .DA MSG.BATCHERR
L.MSG.ERROR .DA MSG.ERROR L.MSG.ERROR .DA MSG.ERROR
L.MSG.PID .DA MSG.PID L.MSG.PID .DA MSG.PID
L.MSG.ALIAS .DA MSG.ALIAS L.MSG.ALIAS .DA MSG.ALIAS
L.MSG.FS .DA MSG.FS
L.FMT.DATE .DA FMT.DATE L.FMT.DATE .DA FMT.DATE
L.FMT.Long .DA FMT.Long L.FMT.Long .DA FMT.Long
L.FMT.Byte .DA FMT.Byte L.FMT.Byte .DA FMT.Byte
J.ESC .DA CL.BS left arrow J.ESC .DA CL.BS
.DA HIS.GetPrev up .DA HIS.GetPrev up
.DA HIS.GetNext down .DA HIS.GetNext down
.DA CL.NAK right .DA CL.FS
L.CD.. .DA CD.. L.CD.. .DA CD..
L.IN .DA IN L.IN .DA IN
L.CMD .DA CMD L.CMD .DA CMD
@ -623,6 +624,7 @@ MSG.ERROR .CS "[$%h]:%s."
MSG.ECHOCRLF .CZ "\r\n" MSG.ECHOCRLF .CZ "\r\n"
MSG.PID .CZ "PID=%d\r\n" MSG.PID .CZ "PID=%d\r\n"
MSG.ALIAS .CZ '%s = "%s"\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.DATE .AZ "%A, %B %d %Y %H:%M:%S"
FMT.Long .AZ "%L" FMT.Long .AZ "%L"
@ -634,9 +636,22 @@ PS1 .AZ "${PS1}"
HOME .AZ "${HOME}" HOME .AZ "${HOME}"
EXECC .AZ "%s -C %s" EXECC .AZ "%s -C %s"
*-------------------------------------- *--------------------------------------
EscChars .AS "DABC" IN.EscChars .AS "DABC"
EscChars.Cnt .EQ *-EscChars IN.EscCharsCnt .EQ *-EscChars
EscChars.Remap .DA #C.BS,#C.VT,#C.LF,#C.FS 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 ".." CD.. .AZ ".."
*-------------------------------------- *--------------------------------------

View File

@ -147,7 +147,6 @@ C.SO .EQ 14
C.SI .EQ 15 C.SI .EQ 15
C.XON .EQ 17 C.XON .EQ 17
C.XOFF .EQ 19 C.XOFF .EQ 19
C.FS .EQ 21
C.ESC .EQ 27 C.ESC .EQ 27
C.SPACE .EQ 32 C.SPACE .EQ 32
C.DEL .EQ 127 C.DEL .EQ 127

View File

@ -180,22 +180,23 @@ S.SOCKET.TCP.S.TIMEWT .EQ 11
S.SOCKET.TCP.O .EQ S.SOCKET+1 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.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.INACKNUM .EQ S.SOCKET+6
S.SOCKET.TCP.OUTSENTSEQ .EQ S.SOCKET+10 Send:SEQ sent not yet ACKed (retransmit) 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.INTAIL .EQ S.SOCKET+18
S.SOCKET.TCP.INHEAD .EQ S.SOCKET+16 S.SOCKET.TCP.INHEAD .EQ S.SOCKET+20
S.SOCKET.TCP.INFREE .EQ S.SOCKET+18 S.SOCKET.TCP.INFREE .EQ S.SOCKET+22
S.SOCKET.TCP.INUSED .EQ S.SOCKET+20 S.SOCKET.TCP.INUSED .EQ S.SOCKET+24
* *
S.SOCKET.TCP.OUTTAIL .EQ S.SOCKET+22 S.SOCKET.TCP.OUTTAIL .EQ S.SOCKET+26
S.SOCKET.TCP.OUTTAILSENT .EQ S.SOCKET+24 S.SOCKET.TCP.OUTTAILSENT .EQ S.SOCKET+28
S.SOCKET.TCP.OUTHEAD .EQ S.SOCKET+26 S.SOCKET.TCP.OUTHEAD .EQ S.SOCKET+30
S.SOCKET.TCP.OUTFREE .EQ S.SOCKET+28 S.SOCKET.TCP.OUTFREE .EQ S.SOCKET+32
S.SOCKET.TCP.OUTTOSEND .EQ S.SOCKET+30 S.SOCKET.TCP.OUTTOSEND .EQ S.SOCKET+34
S.SOCKET.TCP.OUTUSED .EQ S.SOCKET+32 S.SOCKET.TCP.OUTUSED .EQ S.SOCKET+36
* *
S.SOCKET.TCP .EQ S.SOCKET+34 S.SOCKET.TCP .EQ S.SOCKET+38
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE inc/libtcpip.i SAVE inc/libtcpip.i

View File

@ -333,16 +333,16 @@ SKT.shutdown pha
ldy #S.SOCKET.TCP.S ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.S.CLOSING cmp #S.SOCKET.TCP.S.CLWAIT
bne .10 bne .10
inc S.SOCKET.TCP.S.TIMEWT lda #S.SOCKET.TCP.S.TIMEWT
sta (ZPPtrSKT),y sta (ZPPtrSKT),y
pla pla
clc clc
rts rts
*--------------------------------------
.10 pla .10 pla
jsr SKT.GetTCB jsr SKT.GetTCB
ldy #S.SOCKET.TCP.S ldy #S.SOCKET.TCP.S
@ -350,15 +350,15 @@ SKT.shutdown pha
cmp #S.SOCKET.TCP.S.ESTBLSH cmp #S.SOCKET.TCP.S.ESTBLSH
bne .1 bne .1
jsr SKT.SendOptFIN jsr SKT.OUT.SendFINACK
lda #S.SOCKET.TCP.S.FINWT1 lda #S.SOCKET.TCP.S.FINWT1
jmp SKT.StoreTCB.S jmp SKT.StoreTCB.S
.1 cmp #S.SOCKET.TCP.S.CLWAIT .1 cmp #S.SOCKET.TCP.S.FINWT2
bne .2 bne .2
jsr SKT.SendOptFIN jsr SKT.OUT.SendFINACK
lda #S.SOCKET.TCP.S.LASTACK lda #S.SOCKET.TCP.S.LASTACK
jmp SKT.StoreTCB.S jmp SKT.StoreTCB.S
@ -390,19 +390,6 @@ SKT.shutdown.HQ jsr SKT.GetFromQueue
>SYSCALL2 freemem >SYSCALL2 freemem
* clc * clc
rts 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) * # Read (STREAM)
* ## C * ## C
@ -419,12 +406,14 @@ SKT.SendOptFIN lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
*\-------------------------------------- *\--------------------------------------
SKT.Read jsr SKT.PullhFDDataInPtrLen SKT.Read jsr SKT.PullhFDDataInPtrLen
jsr SKT.GetTCB
ldy #S.SOCKET.TCP.INUSED ldy #S.SOCKET.TCP.INUSED
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
tax tax
iny iny
ora (ZPPtrSKT),y 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 cpx ZPDataInLen XA = Data in pipe
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
@ -436,13 +425,6 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen
sta ZPDataInLen+1 sta ZPDataInLen+1
bra SKT.GetDataFromSktIn 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 .8 jsr SKT.CheckStream
bcs .99 I/O error bcs .99 I/O error
@ -457,7 +439,6 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen
* Y,A = bytes read * Y,A = bytes read
*-------------------------------------- *--------------------------------------
SKT.GetDataFromSktIn SKT.GetDataFromSktIn
jsr SKT.GetTCB
ldy #S.SOCKET.SQ.hInMem ldy #S.SOCKET.SQ.hInMem
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
.DO AUXPIPE=1 .DO AUXPIPE=1
@ -473,6 +454,7 @@ SKT.GetDataFromSktIn
jsr SKT.GetNotDataInLen jsr SKT.GetNotDataInLen
pha pha
.DO AUXPIPE=1 .DO AUXPIPE=1
jsr SKT.SetupZPCode jsr SKT.SetupZPCode
.FIN .FIN
@ -525,11 +507,15 @@ SKT.GetDataFromSktIn
ldx #S.SOCKET.TCP.INUSED ldx #S.SOCKET.TCP.INUSED
jsr SKT.SubDataInLenAtSktX jsr SKT.SubDataInLenAtSktX
jsr SKT.StoreTCB lda ZPDataInLen
jsr TCP.SetSocketTCPO.ACK ACK=1 -> send WSIZE ldy ZPDataInLen+1
ldx #S.SOCKET.TCP.INACKNUM
jsr TCP.AddAYToSktCacheAtX
* lda #S.TCP.OPTIONS.ACK jsr SKT.StoreTCB
* jsr TCP.OUT.SendOptA
lda #S.TCP.OPTIONS.ACK
jsr TCP.SetSocketTCPO
>LDYA ZPDataInLen >LDYA ZPDataInLen
clc clc
@ -576,6 +562,7 @@ SKT.AddDataToSktIn
.2 inx .2 inx
bne .3 bne .3
pla pla
inc inc
beq .8 beq .8
@ -586,10 +573,12 @@ SKT.AddDataToSktIn
sta (ZPTmpPtr1),y sta (ZPTmpPtr1),y
inc ZPDataInPtr inc ZPDataInPtr
bne .4 bne .4
inc ZPDataInPtr+1 inc ZPDataInPtr+1
.4 iny .4 iny
bne .2 bne .2
.DO AUXPIPE=1 .DO AUXPIPE=1
sta CLRWRITEAUX sta CLRWRITEAUX
.FIN .FIN
@ -676,6 +665,7 @@ SKT.AddDataToSktOut
jsr SKT.GetNotDataInLen jsr SKT.GetNotDataInLen
pha pha
.1 .DO AUXPIPE=1 .1 .DO AUXPIPE=1
sta SETWRITEAUX sta SETWRITEAUX
.FIN .FIN
@ -694,6 +684,7 @@ SKT.AddDataToSktOut
inc ZPDataInPtr inc ZPDataInPtr
bne .4 bne .4
inc ZPDataInPtr+1 inc ZPDataInPtr+1
.4 iny .4 iny
@ -816,6 +807,7 @@ SKT.GetDataFromSktOut
.3 iny .3 iny
bne .1 bne .1
inc ZPTmpPtr1+1 inc ZPTmpPtr1+1
inc SKT.Cache+S.SOCKET.TCP.OUTTAILSENT+1 inc SKT.Cache+S.SOCKET.TCP.OUTTAILSENT+1
lda SKT.Cache+S.SOCKET.TCP.OUTTAILSENT+1 lda SKT.Cache+S.SOCKET.TCP.OUTTAILSENT+1
@ -837,7 +829,7 @@ SKT.GetDataFromSktOut
clc clc
rts rts
*/-------------------------------------- */--------------------------------------
* # RecvFrom (RAW,DGRAM,SEQPKT) * # RecvFrom (RAW,DGRAM)
* ## C * ## C
* `hMem recvfrom(hFD fd, struct sockaddr *addr);` * `hMem recvfrom(hFD fd, struct sockaddr *addr);`
* ## ASM * ## ASM
@ -874,12 +866,36 @@ SKT.Recv clc
cmp #S.SOCKET.T.SEQPKT cmp #S.SOCKET.T.SEQPKT
bcc .10 RAW,DGRAM bcc .10 RAW,DGRAM
bne .99 STREAM bne .98 STREAM
jsr SKT.GetFromQueue SEQPKT 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 bcs .91
.90 lda #E.NODATA .90 lda #E.NODATA
@ -887,10 +903,15 @@ SKT.Recv clc
sec sec
rts rts
.98 plp
.99 lda #ERR.SKT.BAD
sec
rts
*--------------------------------------
.10 jsr SKT.GetFromQueue .10 jsr SKT.GetFromQueue
bcs .90 bcs .90
.1 plp if CS, RecvFrom plp if CS, RecvFrom
bcc .9 CC, Recv : Exit with CC and A=hFrame bcc .9 CC, Recv : Exit with CC and A=hFrame
pha pha
@ -937,11 +958,6 @@ SKT.Recv clc
pla pla
clc clc
.9 rts .9 rts
.99 lda #ERR.SKT.BAD
plp
sec
rts
*/-------------------------------------- */--------------------------------------
* # SendTo (RAW,DGRAM,SEQPKT) * # SendTo (RAW,DGRAM,SEQPKT)
* ## C * ## C
@ -976,6 +992,8 @@ SKT.Send jsr SKT.PullhFDDataInPtrLen
ldy #S.SOCKET.T ldy #S.SOCKET.T
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
cmp #S.SOCKET.T.STREAM
bcs *
tax tax
jmp (J.SKT.send,x) jmp (J.SKT.send,x)
*-------------------------------------- *--------------------------------------
@ -985,12 +1003,14 @@ SKT.Send.RAW ldy #S.SOCKET.PROTO
>LDYA ZPDataInLen >LDYA ZPDataInLen
jsr FRM.NewIP jsr FRM.NewIP
bcc SKT.Send.8 bcc SKT.Send.8
rts rts
*-------------------------------------- *--------------------------------------
SKT.Send.DGRAM ldx #S.IP.PROTOCOL.UDP SKT.Send.DGRAM ldx #S.IP.PROTOCOL.UDP
>LDYA ZPDataInLen >LDYA ZPDataInLen
jsr FRM.NewIP jsr FRM.NewIP
bcs SKT.Send.9 bcs SKT.Send.9
jsr SKT.SetFrameOutTCPUDPPorts jsr SKT.SetFrameOutTCPUDPPorts
SKT.Send.8 jsr SKT.SetFrameOutDstIP SKT.Send.8 jsr SKT.SetFrameOutDstIP
@ -1478,6 +1498,7 @@ SKT.CopyDataInToOut
sta (ZPDataOutPtr),y sta (ZPDataOutPtr),y
iny iny
bne .1 bne .1
inc ZPDataInPtr+1 inc ZPDataInPtr+1
inc ZPDataOutPtr+1 inc ZPDataOutPtr+1
bne .1 bne .1

View File

@ -97,7 +97,7 @@ TCP.IN.JMP.SYNSENT
.9 lda #S.TCP.OPTIONS.RST .9 lda #S.TCP.OPTIONS.RST
jsr TCP.OUT.SendOptA Send RST jsr TCP.OUT.SendOptA Send RST
jmp TCP.IN.RST jmp TCP.IN.RST
*-------------------------------------- *--------------------------------------
TCP.IN.JMP.SYNRCVD TCP.IN.JMP.SYNRCVD
@ -137,7 +137,9 @@ TCP.IN.JMP.ESTBLSH
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
and #S.TCP.OPTIONS.ACK Remote side ACKed data ? and #S.TCP.OPTIONS.ACK Remote side ACKed data ?
beq .4 beq .4
*--------------------------------------
* Ack sent data * Ack sent data
*--------------------------------------
ldy #S.TCP.ACKNUM+3 Get new ACK number from FrameIn... ldy #S.TCP.ACKNUM+3 Get new ACK number from FrameIn...
ldx #3 Substract old ACK from socket ldx #3 Substract old ACK from socket
@ -153,7 +155,7 @@ TCP.IN.JMP.ESTBLSH
dex dex
bpl .1 bpl .1
bcc .70 ACK > SENT SEQ ???? bcc .7 ACK > SENT SEQ ????
lda TmpDWord+3 lda TmpDWord+3
ldx TmpDWord+2 ldx TmpDWord+2
@ -189,7 +191,9 @@ TCP.IN.JMP.ESTBLSH
sta SKT.Cache+S.SOCKET.TCP.OUTUSED+1 sta SKT.Cache+S.SOCKET.TCP.OUTUSED+1
jsr SKT.StoreTCB jsr SKT.StoreTCB
*--------------------------------------
* Store incoming data * Store incoming data
*--------------------------------------
.4 jsr TCP.IN.SetDataInPtrAndLen .4 jsr TCP.IN.SetDataInPtrAndLen
lda ZPDataInLen Incoming Data in this frame ? lda ZPDataInLen Incoming Data in this frame ?
ora ZPDataInLen+1 ora ZPDataInLen+1
@ -228,9 +232,6 @@ TCP.IN.JMP.ESTBLSH
jsr TCP.AddAYToSktCacheAtX jsr TCP.AddAYToSktCacheAtX
jsr SKT.StoreTCB update socket jsr SKT.StoreTCB update socket
* bra .7
.70 jsr TCP.SetSocketTCPO.ACK ...and ack data
.7 ldy #S.TCP.OPTIONS .7 ldy #S.TCP.OPTIONS
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
@ -238,8 +239,10 @@ TCP.IN.JMP.ESTBLSH
beq .8 beq .8
jsr TCP.IN.ACKTheFIN jsr TCP.IN.ACKTheFIN
lda #S.SOCKET.TCP.S.CLWAIT jsr SKT.OUT.SendFINACK
lda #S.SOCKET.TCP.S.LASTACK
jmp SKT.StoreTCB.S jmp SKT.StoreTCB.S
.8 ldy #S.SOCKET.TCP.O .8 ldy #S.SOCKET.TCP.O
@ -267,16 +270,14 @@ TCP.IN.JMP.LASTACK
ldy #S.TCP.OPTIONS only accept ACK packet ldy #S.TCP.OPTIONS only accept ACK packet
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
bit #S.TCP.OPTIONS.ACK bit #S.TCP.OPTIONS.ACK
beq .8 beq TCP.IN.JMP.CLWAIT
jsr SKT.GetTCB
* jsr TCP.OUT.SendACK * jsr TCP.OUT.SendACK
ldy #S.SOCKET.TCP.S lda #S.SOCKET.TCP.S.CLWAIT
lda #S.SOCKET.TCP.S.TIMEWT jmp SKT.StoreTCB.S
sta (ZPPtrSKT),y
.8 clc
rts
*-------------------------------------- *--------------------------------------
TCP.IN.JMP.FINWT1 TCP.IN.JMP.FINWT1
ldy #S.TCP.OPTIONS FIN sent, accept ACK or FIN/ACK packet 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... .3 lda (ZPFrameInPtr),y Set OUTACK=SEQ+1 for new socket...
adc #0 adc #0
sta SKT.Cache+S.SOCKET.TCP.INSEQNUM,x sta SKT.Cache+S.SOCKET.TCP.INSEQNUM,x
sta SKT.Cache+S.SOCKET.TCP.INACKNUM,x
dey dey
dex dex
bpl .3 bpl .3
@ -332,24 +334,13 @@ TCP.IN.ACKTheSYN
TCP.IN.ACKTheFIN TCP.IN.ACKTheFIN
ldx #3 ldx #3
.1 inc SKT.Cache+S.SOCKET.TCP.INSEQNUM,x .1 inc SKT.Cache+S.SOCKET.TCP.INACKNUM,x
bne .2 bne .2
dex dex
bpl .1 bpl .1
.2 rts .2 rts
* ldx #3
*.3 inc SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x
* bne .4
* dex
* bpl .3
*.4 rts
*-------------------------------------- *--------------------------------------
TCP.IN.SetDataInPtrAndLen TCP.IN.SetDataInPtrAndLen
ldy #S.IP.TOTAL.LENGTH+1 ldy #S.IP.TOTAL.LENGTH+1
@ -421,16 +412,24 @@ TCP.SENDCLOSE ldx #0
beq .4 beq .4
cmp #S.SOCKET.TCP.S.ESTBLSH cmp #S.SOCKET.TCP.S.ESTBLSH
bne .2 bne .3
cpx #S.SOCKET.T.SEQPKT cpx #S.SOCKET.T.SEQPKT
beq .8 beq .2
jsr SKT.GetTCB
jsr TCP.OUT jsr TCP.OUT
bra .8 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 bne .8
jsr SKT.GetTCB jsr SKT.GetTCB
@ -484,17 +483,20 @@ TCP.SENDCLOSE.PIPE
.FIN .FIN
.8 rts .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 ldy SKT.Cache+S.SOCKET.TCP.OUTTOSEND
bne .1 bne .1
tax tax
bne .1 bne .1
* Y,A=0 : no data to send * Y,A=0 : no data to send
ldy #S.SOCKET.TCP.O ldy #S.SOCKET.TCP.O
lda (ZPPtrSKT),y 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 clc No data, no flag....exit
.9 rts .9 rts
@ -529,12 +531,27 @@ TCP.OUT.SEQSEND ldy #S.TCP.WINDOW
jmp SKT.StoreTCB exits with CC 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.SendACK lda #S.TCP.OPTIONS.ACK
TCP.OUT.SendOptA TCP.OUT.SendOptA
jsr TCP.SetSocketTCPO jsr TCP.SetSocketTCPO
>LDYAI 0 TCP.OUT.SendOpt >LDYAI 0
jsr TCP.NewFrame jsr TCP.NewFrame
bcs TCP.OUT.Send.RTS bcs TCP.OUT.Send.RTS
@ -552,15 +569,22 @@ TCP.OUT.SendOptA
ldy #S.SOCKET.TCP.O ldy #S.SOCKET.TCP.O
lda (ZPPtrSKT),y 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 sta (ZPFrameOutPtr),y
bit #S.TCP.OPTIONS.ACK * bit #S.TCP.OPTIONS.ACK
beq .2 * beq .2
ldx #3 ldx #3
ldy #S.TCP.ACKNUM+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 sta (ZPFrameOutPtr),y
dey dey
dex dex
@ -575,11 +599,11 @@ TCP.OUT.Send ldy #S.TCP.OPTIONS
dex dex
bpl .3 bpl .3
clc plp Get back Queue status
* sec DONT Queue if fail
jsr FRM.SendIP jsr FRM.SendIP
bcs TCP.OUT.Send.RTS bcs TCP.OUT.Send.RTS
ldy #S.SOCKET.TCP.O ldy #S.SOCKET.TCP.O
lda #0 lda #0
sta (ZPPtrSKT),y sta (ZPPtrSKT),y
@ -588,8 +612,6 @@ TCP.OUT.Send ldy #S.TCP.OPTIONS
TCP.OUT.Send.RTS TCP.OUT.Send.RTS
rts rts
*-------------------------------------- *--------------------------------------
TCP.SetSocketTCPO.ACK
lda #S.TCP.OPTIONS.ACK
TCP.SetSocketTCPO TCP.SetSocketTCPO
ldy #S.SOCKET.TCP.O ldy #S.SOCKET.TCP.O
ora (ZPPtrSKT),y ora (ZPPtrSKT),y

View File

@ -34,9 +34,7 @@ CTX.Init >LDYA L.SEQ.INIT
jsr IO.GetC.Reset jsr IO.GetC.Reset
.1 >SLEEP .1 jsr IO.GetC
jsr IO.GetC
bcs .98 bcs .98
.2 ldy #S.CTX.W .2 ldy #S.CTX.W
@ -50,7 +48,6 @@ CTX.Init >LDYA L.SEQ.INIT
bne .1 bne .1
lda #80 lda #80
ldy #S.CTX.W ldy #S.CTX.W
sta (ZPCtxPtr),y sta (ZPCtxPtr),y

View File

@ -2,26 +2,7 @@ NEW
AUTO 3,1 AUTO 3,1
.LIST OFF .LIST OFF
*-------------------------------------- *--------------------------------------
IO.GetC ldx ZPCtxPtr IO.GetC jsr IO.GetChar
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
bcs .9 bcs .9
tax tax
@ -241,7 +222,16 @@ IO.GetC.ToBuf ldy #S.CTX.InBufPtr
.9 rts .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 bcs .9
cmp #C.CR cmp #C.CR
@ -261,7 +251,16 @@ IO.GetChar >SYSCALL GetChar
.8 lda #C.CR .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 IO.fputs ldx ZPCtxPtr
phx phx

View File

@ -185,9 +185,7 @@ OBJ.Exec >PUSHA hOBJ
jsr LIB.GetCTX jsr LIB.GetCTX
.1 >SLEEP .1 jsr IO.GetC
jsr IO.GetC
bcs .9 bcs .9
cmp #EV.RESIZE cmp #EV.RESIZE
@ -764,7 +762,7 @@ OBJ.CurUpdPos ldy #S.OBJ.F
OBJ.CurOn ldy #S.OBJ.F OBJ.CurOn ldy #S.OBJ.F
lda (ZPObjPtr),y lda (ZPObjPtr),y
and #S.OBJ.F.bEdit and #S.OBJ.F.bEdit
* beq .8 beq .8
ldy #S.OBJ.S ldy #S.OBJ.S
lda (ZPObjPtr),y S.OBJ.S.bActive lda (ZPObjPtr),y S.OBJ.S.bActive
@ -805,7 +803,7 @@ OBJ.CurOn ldy #S.OBJ.F
OBJ.CurOff ldy #S.OBJ.F OBJ.CurOff ldy #S.OBJ.F
lda (ZPObjPtr),y lda (ZPObjPtr),y
and #S.OBJ.F.bEdit and #S.OBJ.F.bEdit
* beq .8 beq .8
ldy #S.OBJ.S ldy #S.OBJ.S
lda (ZPObjPtr),y S.OBJ.S.bActive lda (ZPObjPtr),y S.OBJ.S.bActive

View File

@ -54,7 +54,7 @@ TLINE.Run ldy #S.OBJ.S
cmp #C.BS cmp #C.BS
beq TLINE.RUN.BS beq TLINE.RUN.BS
cmp #C.FS cmp #21 Forward Space
beq TLINE.RUN.FS beq TLINE.RUN.FS
.9 lda #0 .9 lda #0

View File

@ -266,7 +266,7 @@ LIB.Destroy ldx ZPObjPtr
jsr OBJ.Destroy jsr OBJ.Destroy
pla pla
>SYSCALL FreeMem >SYSCALL2 FreeMem
ply ply
.2 iny .2 iny
@ -280,7 +280,7 @@ LIB.Destroy ldx ZPObjPtr
.3 jsr .7 .3 jsr .7
pla pla
>SYSCALL FreeMem >SYSCALL2 FreeMem
plx plx
stx ZPObjPtr+1 stx ZPObjPtr+1
@ -336,7 +336,7 @@ hLineBuf .BS 1
LineBuf .BS 2 LineBuf .BS 2
*-------------------------------------- *--------------------------------------
ESC.In .AS "DABC" 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" FMT.ESCCSI.R .AZ "%d;%d"
*-------------------------------------- *--------------------------------------

View File

@ -673,7 +673,7 @@ LDR.BlkDevScan bit RROMBNK2 write protect lc ram.
stz LDR.SlotDevType-1,x stz LDR.SlotDevType-1,x
jsr LDR.CheckDiskID jsr LDR.CheckDiskID
bcs .8 if no ProDOS device in this slot. bcs .4 if no ProDOS device in this slot.
ldy #$ff ldy #$ff
lda (idxl),y check last byte of $Cn rom (y = $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 sta LDR.driveradr+1
sec 2 devices sec 2 devices
jsr LDR.AddBlkDevs jsr LDR.AddBlkDevs
bra .7 bra .4
.2 cmp #$FF if = $FF then 13 sector disk II. .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. ldy #$07 check for a smartport device.
lda (idxl),y lda (idxl),y
bne .3 no smartport bne .3 no smartport
jsr LDR.AddSPDevs jsr LDR.AddSPDevs
bra .7 bra .4
.3 ldy #$FE BLK device... .3 ldy #$FE BLK device...
lda (idxl),y get attributes. lda (idxl),y get attributes.
and #$03 verify it provides read and status calls. and #$03 verify it provides read and status calls.
cmp #$03 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 jsr LDR.SetDevID
lsr
lsr
lsr
lsr
sta devid ->DEV LIST NIBBLE
and #$3 Device count minus 1 and #$3 Device count minus 1
inc inc
ldx LDR.SlotIdx ldx LDR.SlotIdx
sta LDR.SlotDevCnt-1,x sta LDR.SlotDevCnt-1,x
dec LDR.SlotDevType-1,x set as BlockDeb
tax tax
iny $CnFF iny $CnFF
@ -726,13 +722,10 @@ LDR.BlkDevScan bit RROMBNK2 write protect lc ram.
cpx #2 CS if 2 devs or more cpx #2 CS if 2 devs or more
jsr LDR.AddBlkDevs install 1 or 2 devices from this slot. jsr LDR.AddBlkDevs install 1 or 2 devices from this slot.
.7 .4 dec idxl+1 next lower slot.
.8 dec idxl+1 next lower slot.
dec LDR.SlotIdx have all slots been checked ? dec LDR.SlotIdx have all slots been checked ?
bne .1 bne .1
*-------------------------------------- *--------------------------------------
LDR.AddExtraDevs
* stz idxl * stz idxl
lda #$C7 lda #$C7
sta idxl+1 sta idxl+1
@ -740,7 +733,7 @@ LDR.AddExtraDevs
lda #7 lda #7
sta LDR.SlotIdx sta LDR.SlotIdx
.1 ldx LDR.SlotIdx .5 ldx LDR.SlotIdx
lda LDR.SlotDevType-1,x lda LDR.SlotDevType-1,x
beq .8 beq .8
@ -748,11 +741,17 @@ LDR.AddExtraDevs
cmp #3 cmp #3
bcc .8 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 .8 dec idxl+1
dec LDR.SlotIdx dec LDR.SlotIdx
bne .1 bne .5
LDR.AddExtraDevs.RTS LDR.AddExtraDevs.RTS
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 jsr LDR.SPStatusCall status of Cocoon : A = device = 2 for SCSI
.2 lda #0 set unit# = 0 lda #0 set unit# = 0
jsr LDR.SPStatusCall
.2 jsr LDR.SPStatusCall
lda LDR.SPStatusBuf Device count lda LDR.SPStatusBuf Device count
beq LDR.AddExtraDevs.RTS no devices, so done. 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. lda LDR.driveradr get high address of device driver.
sta DEVPTRS,y device driver table 1. sta DEVPTRS,y device driver table 1.
bcc .2 branch if single drive. bcc .2 branch if single drive.
sta DEVPTRS+16,y device driver table 2. sta DEVPTRS+16,y device driver table 2.
.2 lda LDR.driveradr+1 .2 lda LDR.driveradr+1
sta DEVPTRS+1,y sta DEVPTRS+1,y
bcc .3 bcc .3
sta DEVPTRS+17,y sta DEVPTRS+17,y
.3 .3
LDR.AddBlkDevs.RTS LDR.AddBlkDevs.RTS
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 LDR.AddExtraSPDevs
ldy #$FF get smartport address. jsr LDR.SetDevID set up device attributes
iny ldy #$fe from SetDevID
* ldy #$FF
lda (idxl),y lda (idxl),y
clc clc
adc #$03 add 3 for smartport call adc #$03 add 3 for smartport call
@ -876,8 +941,6 @@ LDR.AddExtraSPDevs
lda idxl+1 lda idxl+1
sta LDR.SPVect+2 sta LDR.SPVect+2
jsr LDR.SetDevID set up device attributes
lda #0 lda #0
jsr LDR.SPStatusCall do a status call on smartport itself jsr LDR.SPStatusCall do a status call on smartport itself
@ -898,34 +961,10 @@ LDR.AddExtraSPDevs
lda LDR.SPStatusBuf is this a block device? lda LDR.SPStatusBuf is this a block device?
bpl .2 bpl .2
jsr LDR.MountSPDevs jsr LDR.FindFreeDevPtr
bcs .8 bcs .8
.2 inc LDR.SPStatus.U jsr LDR.LCBNK1
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
tya divide index by 2 tya divide index by 2
lsr lsr
@ -942,23 +981,19 @@ LDR.MountSPDevs ldx #LDR.DEVPTRS.CNT-1
bit RROMBNK2 write protect lc ram. bit RROMBNK2 write protect lc ram.
inc DEVCNT jsr LDR.AddY2DEVLST
ldx DEVCNT
tya
asl convert to DSSS0000
asl
asl
ora devid include device attributes
sta DEVLST,x in the active device list.
lda #XDOS.SPREMAP lda #XDOS.SPREMAP
sta DEVPTRS,y device driver table 1 sta DEVPTRS,y
lda /XDOS.SPREMAP lda /XDOS.SPREMAP
sta DEVPTRS+1,y sta DEVPTRS+1,y
clc
rts .2 inc LDR.SPStatus.U
dec LDR.DevCnt
bne .1
.8 rts
*-------------------------------------- *--------------------------------------
LDR.SPStatusCall LDR.SPStatusCall
sta LDR.SPStatus.U sta LDR.SPStatus.U
@ -1008,6 +1043,28 @@ LDR.CheckDiskID ldy #5
bra .8 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. LDR.SetDevID ldy #$FE check attributes byte.
lda (idxl),y lda (idxl),y
@ -1018,6 +1075,19 @@ LDR.SetDevID ldy #$FE check attributes byte.
sta devid sta devid
rts 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 LDR.Scr80Init phx Save LDR.MSG
jsr LDR.IsIIc 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.CNT .EQ 14
LDR.DEVPTRS.IDX .DA #$16 S3D2 LDR.DEVPTRS.IDX .DA #$16 S3D2 /RAM
.DA #$06 S3D1
.DA #$12 S1D2 .DA #$12 S1D2
.DA #$02 S1D1 .DA #$02 S1D1
.DA #$14 S2D2 .DA #$14 S2D2
.DA #$04 S2D1 .DA #$04 S2D1
.DA #$18 S4D2 .DA #$18 S4D2
.DA #$08 S4D1 .DA #$08 S4D1
.DA #$06 S3D1
.DA #$1A S5D2 .DA #$1A S5D2
.DA #$0A S5D1 .DA #$0A S5D1
.DA #$1C S6D2 .DA #$1C S6D2

View File

@ -68,7 +68,7 @@ CS.INIT >LDYA L.LIBTUI
CS.INIT.RTS rts CS.INIT.RTS rts
*-------------------------------------- *--------------------------------------
CS.RUN >LIBCALL hLIBTUI,LIBTUI.Init CS.RUN >LIBCALL hLIBTUI,LIBTUI.Init
bcs CS.RUN.RTS bcs CS.RUN.RTS
sta hCTX sta hCTX
@ -100,9 +100,14 @@ CS.RUN >LIBCALL hLIBTUI,LIBTUI.Init
*-------------------------------------- *--------------------------------------
CS.RUN.LOOP lda hSCRN CS.RUN.LOOP lda hSCRN
>LIBCALL hLIBTUI,LIBTUI.Exec >LIBCALL hLIBTUI,LIBTUI.Exec
bcs .9 bcc .10
tay
beq CS.RUN.LOOP
rts
cmp #EV.RESIZE .10 cmp #EV.RESIZE
bne .1 bne .1
jsr CS.SCRN.Draw jsr CS.SCRN.Draw

View File

@ -206,8 +206,8 @@ S.DCB.TTY.bCURON .EQ 9
S.DCB.TTY.bTITLE .EQ 10 S.DCB.TTY.bTITLE .EQ 10
S.DCB.TTY.bNORMAL .EQ 11 S.DCB.TTY.bNORMAL .EQ 11
S.DCB.TTY.bLINEWRAP .EQ 12 S.DCB.TTY.bDECAWM .EQ 12
S.DCB.TTY.bCRLF .EQ 13 S.DCB.TTY.bLNM .EQ 13
S.DCB.TTY.bG0G1 .EQ 14 S.DCB.TTY.bG0G1 .EQ 14
S.DCB.TTY.bG0G1ALT .EQ 15 S.DCB.TTY.bG0G1ALT .EQ 15

View File

@ -133,10 +133,10 @@ K.MKDev jsr SHARED.PullP2P1 ptr2=name,ptr1=fd
lda (pFD),y lda (pFD),y
bne .5 bne .5
lda /DRV.SmartPort lda /DRV.SP
sta (pFD),y sta (pFD),y
dey dey
lda #DRV.SmartPort lda #DRV.SP
sta (pFD),y sta (pFD),y
.5 jsr DEV.GetPDrv .5 jsr DEV.GetPDrv

View File

@ -7,7 +7,8 @@ NEW
*-------------------------------------- *--------------------------------------
DRV.DiskII cld DRV.DiskII cld
cpx #IOCTL.FORMAT cpx #IOCTL.FORMAT
bcs DRV.RamDrive.9 bcs DRV.BadCall
>STYA pIOCTL >STYA pIOCTL
jmp (.1,x) 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 #0
.DA K.VER .DA K.VER
*-------------------------------------- *--------------------------------------
* DRV.RamDrive * DRV.RAM
* X = IOCTL * X = IOCTL
* Y,A = PTR to S.IOCTL * Y,A = PTR to S.IOCTL
*-------------------------------------- *--------------------------------------
DRV.RamDrive cld DRV.RAM cld
cpx #IOCTL.CONTROL cpx #IOCTL.CONTROL
bcs DRV.RamDrive.9 bcs DRV.BadCall
>STYA pIOCTL >STYA pIOCTL
jmp (.1,x) jmp (.1,x)
.1 .DA DRV.RamDrive.S
.1 .DA DRV.RAM.S
.DA DRV.BLK READ .DA DRV.BLK READ
.DA DRV.BLK WRITE .DA DRV.BLK WRITE
.DA DRV.BLK FORMAT .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 bcs .9
stx DRV.RamDrive.DIB+S.DIB.SIZE stx DRV.RAM.DIB+S.DIB.SIZE
sty DRV.RamDrive.DIB+S.DIB.SIZE+1 sty DRV.RAM.DIB+S.DIB.SIZE+1
>LDYAI DRV.RamDrive.DIB >LDYAI DRV.RAM.DIB
jmp DRV.STATUS.YA jmp DRV.STATUS.YA
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
DRV.RamDrive.DIB DRV.RAM.DIB .DA #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ
.DA #S.DIB.S.BLOCK+S.DIB.S.WRITE+S.DIB.S.READ
.BS 3 .BS 3
.PS "ProDOS /RAM Disk" .PS "ProDOS /RAM Disk"
.DA #S.DIB.T.RAM .DA #S.DIB.T.RAM
@ -66,14 +69,28 @@ DRV.RamDrive.DIB
*-------------------------------------- *--------------------------------------
DRV.BlkDev cld DRV.BlkDev cld
cpx #IOCTL.CONTROL cpx #IOCTL.CONTROL
bcs DRV.RamDrive.9 bcs DRV.BadCall
>STYA pIOCTL >STYA pIOCTL
jmp (.1,x) jmp (.1,x)
.1 .DA DRV.BlkDev.S .1 .DA DRV.BlkDev.S
.DA DRV.BLK READ .DA DRV.BLK READ
.DA DRV.BLK WRITE .DA DRV.BLK WRITE
.DA DRV.BLK FORMAT .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 DRV.BlkDev.S jsr DRV.Blk
bcs .9 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 #0
.DA K.VER .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 * IOCTL to BLK protocol converter
* in : pIOCTL * in : pIOCTL
*-------------------------------------- *--------------------------------------
DRV.BLK txa DRV.BLK txa
lsr lsr
sta DRV.BLK.P CMD sta DRV.BLK.P CMD
ldy #S.FD.DEV.DEVID Drive 1, or 2 ldy #S.FD.DEV.DEVID Drive 1, or 2
lda (pFD),y lda (pFD),y
dec O or 1 dec O or 1
@ -147,7 +183,7 @@ DRV.BLK.P .BS 6
*-------------------------------------- *--------------------------------------
* Smartport Driver * Smartport Driver
*-------------------------------------- *--------------------------------------
DRV.SmartPort cld DRV.SP cld
>STYA pIOCTL >STYA pIOCTL
>STYA .3 smartport Params >STYA .3 smartport Params
@ -155,7 +191,7 @@ DRV.SmartPort cld
lsr lsr
sta .2 sta .2
tax tax
lda DRV.SmartPort.Cnt,x lda DRV.SP.Cnt,x
sta (pIOCTL) S.IOCTL.CNT sta (pIOCTL) S.IOCTL.CNT
ldy #S.FD.DEV.DEVID ldy #S.FD.DEV.DEVID
@ -179,8 +215,7 @@ DRV.SmartPort cld
jsr GO.A2osX jsr GO.A2osX
rts rts
DRV.SmartPort.Cnt DRV.SP.Cnt .HS 03030301030101010404
.HS 03030301030101010404
*-------------------------------------- *--------------------------------------
* NULL DEVICE * NULL DEVICE
* - OPEN,WRITE,CLOSE always succeed. * - OPEN,WRITE,CLOSE always succeed.

View File

@ -268,7 +268,7 @@ KConfigLoad >LDYAI MSG.KCREAD
lda A2osX.FSID lda A2osX.FSID
beq .99 beq .99
>LDYAI MSG.PRODOSFX >LDYAI MSG.FX
jsr PrintFYA jsr PrintFYA
.99 rts .99 rts
@ -716,7 +716,7 @@ DevMgrInit >LDYAI MSG.DEV
lda #A2osX.S.DII lda #A2osX.S.DII
bra .7 Go mark slot as USED 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 cmp #$C0
bcs .4 $C0 .. $CF, in slot ROM bcs .4 $C0 .. $CF, in slot ROM
@ -755,6 +755,7 @@ DevMgrInit >LDYAI MSG.DEV
bmi .80 bmi .80
jmp .1 jmp .1
.80 clc .80 clc
rts rts
*-------------------------------------- *--------------------------------------
@ -768,6 +769,9 @@ DevMgr.USR ldx #4
.HS 2C BIT ABS .HS 2C BIT ABS
*-------------------------------------- *--------------------------------------
DevMgr.BLK ldx #6 DevMgr.BLK ldx #6
.HS 2C BIT ABS
*--------------------------------------
DevMgr.RSP ldx #10
bra DevMgr.AddBDev bra DevMgr.AddBDev
*-------------------------------------- *--------------------------------------
DevMgr.SP ldy #$ff DevMgr.SP ldy #$ff
@ -777,9 +781,6 @@ DevMgr.SP ldy #$ff
sta FD.BDEV+S.FD.DEV.BUSPTR sta FD.BDEV+S.FD.DEV.BUSPTR
ldx #8 ldx #8
.HS 2C BIT ABS
DevMgr.RSP ldx #10
*-------------------------------------- *--------------------------------------
DevMgr.AddBDev >LDYA DRV.BLKDEVX,x DevMgr.AddBDev >LDYA DRV.BLKDEVX,x
>STYA FD.BDEV+S.FD.DEV.DRVPTR >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.OK .CZ "OK\r"
MSG.KCREAD.KO .CZ "\rError While Reading Kernel Config File, Using Default.\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.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.Init2.OK .CZ "A2osX[Stage2]:Complete."
*-------------------------------------- *--------------------------------------
MSG.Init3 .CZ "A2osX[Stage3]:Init *** Press Ctrl-R for entering ROOT Mode ***\r\n" 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.DII .AZ "Disk ]["
MSG.BLKDEV.USR .AZ "User" MSG.BLKDEV.USR .AZ "User"
MSG.BLKDEV.BLK .AZ "Generic Block" MSG.BLKDEV.BLK .AZ "Generic Block"
MSG.BLKDEV.SP .AZ "Smart Port" MSG.BLKDEV.SP .AZ "SmartPort"
MSG.BLKDEV.RSP .AZ "Remapped SP" MSG.BLKDEV.RSP .AZ "SmartPort (Remapped)"
DRV.BLKDEVX .DA DRV.RamDrive DRV.BLKDEVX .DA DRV.RAM
.DA DRV.DiskII .DA DRV.DiskII
.DA DRV.BlkDev .DA DRV.BlkDev
.DA DRV.BlkDev .DA DRV.BlkDev
.DA DRV.SmartPort .DA DRV.SP
.DA DRV.BlkDev .DA DRV.RSP
*-------------------------------------- *--------------------------------------
MSG.IRQ .AZ "Interrupt Manager..." MSG.IRQ .AZ "Interrupt Manager..."
MSG.IRQGS .AZ " Apple IIgs VBL IRQ Activated." MSG.IRQGS .AZ " Apple IIgs VBL IRQ Activated."

View File

@ -23,7 +23,7 @@ TERM.STATUS jsr TERM.GetIOCTLBufCntDCB
bra TERM.TOAUX bra TERM.TOAUX
*-------------------------------------- *--------------------------------------
TERM.OPEN TERM.OPEN
* sta ZPhFD hFD in A for OPEN * hFD in A for OPEN
TERM.CONTROL TERM.CONTROL
TERM.CLOSE jsr TERM.GetDCB TERM.CLOSE jsr TERM.GetDCB

File diff suppressed because it is too large Load Diff