mirror of
https://github.com/A2osX/A2osX.git
synced 2025-04-08 01:37:13 +00:00
**LOT of mods*** TESTING REQUESTED around....everything :-)
This commit is contained in:
parent
82f1cb8630
commit
9aea9939ee
172
.Docs/TERM.md
172
.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.
|
||||
|
Binary file not shown.
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -57,7 +57,7 @@ IO.GetCh.1 tax
|
||||
rts
|
||||
*--------------------------------------
|
||||
.11 lda (pData) #EscBufferPtr
|
||||
cmp #15
|
||||
cmp #21
|
||||
bcc .10
|
||||
|
||||
.19 >STZ.G bEscMode
|
||||
|
@ -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
|
||||
*--------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
210
BIN/SH.S.CL.txt
210
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
|
||||
|
@ -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
|
||||
|
25
BIN/SH.S.txt
25
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 ".."
|
||||
*--------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
*--------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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."
|
||||
|
@ -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
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user