LIBTCPIP:shutdown() fix

LIBTUI:bugfix & improvments (hyperlinks....)
KERNEL:bugfix in fwrite() to socket
CIFSD:NT_CREATE now set proper rights, better ERR codes
GOPHER:Hyperlinks (wip)
This commit is contained in:
burniouf 2023-03-26 19:42:38 +02:00
parent e0d317e793
commit 05ee4ce936
24 changed files with 1475 additions and 920 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -709,22 +709,22 @@ MSG.DONE .CZ "All Done!!!"
*-------------------------------------- *--------------------------------------
* LOWRES Patette : https://comp.sys.apple2.narkive.com/lTSrj2ZI/apple-ii-colour-rgb * LOWRES Patette : https://comp.sys.apple2.narkive.com/lTSrj2ZI/apple-ii-colour-rgb
*-------------------------------------- *--------------------------------------
*PALETTE.RGB .HS 00000000 BLACK *PALETTE.RGB .HS 00000000 BLACK
* .HS ffffff00 WHITE
* .HS 7e7e7e00 DARK.GRAY
* .HS 9c9c9c00 DARK.GRAY
* .HS 604ebd00 DARK.BLUE * .HS 604ebd00 DARK.BLUE
* .HS 14cffd00 BLUE
* .HS d0c3ff00 LIGHT.BLUE
* .HS 00a36000 DARK.GREEN * .HS 00a36000 DARK.GREEN
* .HS 14cffd00 BLUE
* .HS 60720300 BROWN
* .HS 7e7e7e00 DARK.GRAY
* .HS 14f53c00 LIGHT.GREEN * .HS 14f53c00 LIGHT.GREEN
* .HS 72ffd000 AQUA * .HS 72ffd000 AQUA
* .HS e31e6000 RED * .HS e31e6000 RED
* .HS ff44fd00 PURPLE * .HS ff44fd00 PURPLE
* .HS ffa0d000 PINK * .HS 9c9c9c00 LIGHT.GRAY
* .HS 60720300 BROWN * .HS d0c3ff00 LIGHT.BLUE
* .HS ff6a3c00 ORANGE * .HS ff6a3c00 ORANGE
* .HS ffa0d000 PINK
* .HS d0dd8d00 YELLOW * .HS d0dd8d00 YELLOW
* .HS ffffff00 WHITE
*-------------------------------------- *--------------------------------------
*PALETTE.RGB .DA #0,#0,#0,#0 0 Black *PALETTE.RGB .DA #0,#0,#0,#0 0 Black
* .DA #255,#255,#255,#0 15 White * .DA #255,#255,#255,#0 15 White

View File

@ -60,7 +60,7 @@ CS.START cld
*-------------------------------------- *--------------------------------------
.1 .DA CS.INIT .1 .DA CS.INIT
.DA CS.RUN .DA CS.RUN
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.SEQ.INIT .DA SEQ.INIT L.SEQ.INIT .DA SEQ.INIT
L.SEQ.SCROLLRGN .DA SEQ.SCROLLRGN L.SEQ.SCROLLRGN .DA SEQ.SCROLLRGN
@ -152,13 +152,13 @@ CS.RUN >PUSHW L.MSG.TERMCAP
.1 jsr GetCh .1 jsr GetCh
bcs CS.INIT.RTS bcs CS.INIT.RTS
beq .1 * beq .11
>SYSCALL PutChar * >SYSCALL PutChar
bcs CS.INIT.RTS * bcs CS.INIT.RTS
>LDA.G ScreenW Wait for Response from terminal for W & H .11 >LDA.G ScreenW Wait for Response from terminal for W & H
beq .1 beq .1
jsr SCRN.Init jsr SCRN.Init
@ -170,7 +170,7 @@ CS.RUN >PUSHW L.MSG.TERMCAP
>STYA.G LineBufBase >STYA.G LineBufBase
txa txa
>STA.G hLineBuf >STA.G hLineBuf
lda #1 lda #1
>SYSCALL ArgV >SYSCALL ArgV
bcs .2 No arg, new file.... bcs .2 No arg, new file....
@ -186,12 +186,12 @@ CS.RUN >PUSHW L.MSG.TERMCAP
.3 jsr SCRN.Repaint .3 jsr SCRN.Repaint
bcs CS.RUN.RTS bcs CS.RUN.RTS
jsr CS.RUN.GetBuf64 jsr CS.RUN.GetBuf64
bcs CS.RUN.RTS bcs CS.RUN.RTS
>STA.G hFind >STA.G hFind
jsr CS.RUN.GetBuf64 jsr CS.RUN.GetBuf64
bcs CS.RUN.RTS bcs CS.RUN.RTS
@ -201,13 +201,13 @@ CS.RUN.LOOP jsr GetCh
bcs CS.RUN.RTS I/O error bcs CS.RUN.RTS I/O error
beq .8 beq .8
jsr CS.RUN.LOOP.CharIn jsr CS.RUN.LOOP.CharIn
bcs .9 bcs .9
.8 >LDA.G bExit .8 >LDA.G bExit
bpl CS.RUN.LOOP bpl CS.RUN.LOOP
lda #0 lda #0
.9 pha .9 pha
@ -221,7 +221,7 @@ CS.RUN.RTS rts
CS.RUN.LOOP.CharIn CS.RUN.LOOP.CharIn
cmp #C.DEL cmp #C.DEL
bne .1 bne .1
jmp Ctrl.DEL jmp Ctrl.DEL
.1 cmp #C.SPACE .1 cmp #C.SPACE
@ -238,8 +238,8 @@ CS.RUN.LOOP.CharIn
.2 asl .2 asl
tax tax
jmp (J.CTRL,x) jmp (J.CTRL,x)
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.GetBuf64 >LDYAI 64 CS.RUN.GetBuf64 >LDYAI 64
>SYSCALL GetMem >SYSCALL GetMem
@ -296,92 +296,88 @@ CS.QUIT ldy #hLineBuf
*-------------------------------------- *--------------------------------------
GetCh >SYSCALL GetChar GetCh >SYSCALL GetChar
bcs .9 bcs .9
cmp #C.CR cmp #C.CR
bne GetChTranslate bne GetCh.1
ldy #S.PS.hStdIn Check for any extra LF ldy #S.PS.hStdIn Check for any extra LF
lda (pPS),y lda (pPS),y
>SYSCALL FEOF >SYSCALL FEOF
bcs .9 bcs .9
tay tay
bne .8 bne .8
>SYSCALL GetChar >SYSCALL GetChar
bcs .9 bcs .9
.8 lda #C.CR .8 lda #C.CR
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
GetChTranslate tax GetCh.1 tax
>LDA.G bEscMode >LDA.G bEscMode
bpl .1 Not in ESC mode bmi .1
cpx #'[' \e[ ? cpx #C.ESC
bne .11
lda (pData) #EscBufferPtr
bne .19 buffer not empty...bad SEQ
clc
rts
.11 lda (pData) #EscBufferPtr
cmp #16
bne .10
.19 >STZ.G bEscMode
clc
rts
.10 inc
sta (pData)
tay
txa
sta (pData),y
cmp #64
bcc .7 not a letter...SEQ is incomplete
jsr GetCh.Esc
bcs .8 Not translated, exit
.HS B0 BCS
*--------------------------------------
.1 txa
cmp #C.ESC
bne .8 bne .8
lda #$ff lda #$ff
>STA.G bEscMode >STA.G bEscMode
inc inc
clc
rts
.1 >LDA.G bCSIMode
bmi .11
cpx #'[' \e[ ?
bne GetCh.Esc
lda #$ff
>STA.G bCSIMode
inc
sta (pData) #EscBufferPtr sta (pData) #EscBufferPtr
.7 lda #0 clc
rts
*--------------------------------------
.11 lda (pData) #EscBufferPtr
cmp #15
bcc .10
.8 clc .19 >STZ.G bEscMode
.9 rts >STA.G bCSIMode
clc
rts
.10 inc
sta (pData)
tay
txa
sta (pData),y
cmp #64
bcs GetCh.CSI
ldx #0
.8 txa
clc
rts
*-------------------------------------- *--------------------------------------
GetCh.Esc >STZ.G bEscMode GetCh.Esc >STZ.G bEscMode
lda (pData) #EscBufferPtr GetCh.Esc1 txa
tay
lda #0
sta (pData)
lda (pData),y
cpy #1
bne .10
ldx #EscChars.Cnt-1 ldx #EscChars.Cnt-1
.1 cmp EscChars,x .1 cmp EscChars,x
@ -389,22 +385,31 @@ GetCh.Esc >STZ.G bEscMode
dex dex
bpl .1 bpl .1
sec
rts
.10 cmp #'R' Response to cursor position query? lda #0
beq .3 clc
sec
rts rts
.2 lda EscAscii,x .2 lda EscAscii,x
clc clc
rts rts
*-------------------------------------- *--------------------------------------
* \e[xxx;yyyR * \e[A UP
* \e[B DOWN
* \e[C FOWARD
* \e[D BACK
* \e[xxx;yyyR DSR ("\e[I6n" reply)
*-------------------------------------- *--------------------------------------
GetCh.CSI >STZ.G bEscMode
>STA.G bCSIMode
cpx #'R' Response to cursor position query?
beq .3
>DEBUG
bra GetCh.Esc1
.3 stz TmpByte .3 stz TmpByte
ldy #0 ldy #0
@ -436,7 +441,7 @@ GetCh.Esc >STZ.G bEscMode
stz TmpByte stz TmpByte
.6 iny .6 iny
lda (pData),y lda (pData),y
cmp #'R' cmp #'R'
beq .7 beq .7
@ -447,7 +452,8 @@ GetCh.Esc >STZ.G bEscMode
.7 lda TmpByte .7 lda TmpByte
>STA.G ScreenW >STA.G ScreenW
sec .8 lda #0
clc
rts rts
*-------------------------------------- *--------------------------------------
GetCh.TmpByte10pA GetCh.TmpByte10pA
@ -502,7 +508,7 @@ SEQ.SCROLLUP .CZ "\eD"
SEQ.SCROLLCURDN .CS "\e[?7l\e[%d;%dr" SEQ.SCROLLCURDN .CS "\e[?7l\e[%d;%dr"
SEQ.SCROLLDN .CZ "\eM" SEQ.SCROLLDN .CZ "\eM"
*-------------------------------------- *--------------------------------------
MSG.TERMCAP .CZ "\e[999;999H\e[6n" MSG.TERMCAP .CZ "\r\n\e[999;999H\e[6n"
MSG.TOPBAR .CZ "A2osX Edit %d.%d:%s (%s)" MSG.TOPBAR .CZ "A2osX Edit %d.%d:%s (%s)"
MSG.TXTCR .CZ "TXT/CR" MSG.TXTCR .CZ "TXT/CR"
MSG.TXTCRLF .CZ "TXT/CRLF" MSG.TXTCRLF .CZ "TXT/CRLF"
@ -582,10 +588,10 @@ DLG.SAVE.1 .DA #S.DLG.Ctrl.LBL,#2,#2
DLG.SAVE.2 .DA #S.DLG.Ctrl.TB,#2,#3 DLG.SAVE.2 .DA #S.DLG.Ctrl.TB,#2,#3
.DA #0,#64,#hFileName CURPOS,MAXCHAR,hMem .DA #0,#64,#hFileName CURPOS,MAXCHAR,hMem
DLG.SAVE.3 .DA #S.DLG.Ctrl.LBL,#2,#5 DLG.SAVE.3 .DA #S.DLG.Ctrl.LBL,#2,#5
.AZ "Filetype :" .AZ "Filetype :"
DLG.SAVE.4 .DA #S.DLG.Ctrl.OL,#2,#6 DLG.SAVE.4 .DA #S.DLG.Ctrl.OL,#2,#6
.DA #18 Ctrl-R .DA #18 Ctrl-R
.DA #FileType .DA #FileType
@ -603,15 +609,15 @@ DLG.SAVE.6 .DA #S.DLG.Ctrl.OL,#26,#6
.DA #FileType .DA #FileType
.DA #2 .DA #2
.AZ "ASM" .AZ "ASM"
DLG.SAVE.7 .DA #S.DLG.Ctrl.BUT,#40,#8 DLG.SAVE.7 .DA #S.DLG.Ctrl.BUT,#40,#8
.DA #C.CR .DA #C.CR
.AZ " Save " .AZ " Save "
DLG.SAVE.8 .DA #S.DLG.Ctrl.BUT,#52,#8 DLG.SAVE.8 .DA #S.DLG.Ctrl.BUT,#52,#8
.DA #3 Ctrl-C .DA #3 Ctrl-C
.AZ " Cancel " .AZ " Cancel "
DLG.SAVE.T .AZ "Save As..." Title DLG.SAVE.T .AZ "Save As..." Title
DLG.SAVE.S .AZ "CR:Save, Ctrl-R/L/A:Change Type, Ctrl-C:Cancel" DLG.SAVE.S .AZ "CR:Save, Ctrl-R/L/A:Change Type, Ctrl-C:Cancel"
DLG.SAVE.LEN .EQ *-DLG.SAVE DLG.SAVE.LEN .EQ *-DLG.SAVE
@ -638,21 +644,21 @@ DLG.FIND.1 .DA #S.DLG.Ctrl.LBL,#2,#2
DLG.FIND.2 .DA #S.DLG.Ctrl.TB,#2,#3 DLG.FIND.2 .DA #S.DLG.Ctrl.TB,#2,#3
.DA #0,#63,#hFind .DA #0,#63,#hFind
DLG.FIND.3 .DA #S.DLG.Ctrl.LBL,#2,#5 DLG.FIND.3 .DA #S.DLG.Ctrl.LBL,#2,#5
.AZ "Replace :" .AZ "Replace :"
DLG.FIND.4 .DA #S.DLG.Ctrl.TB,#2,#6 DLG.FIND.4 .DA #S.DLG.Ctrl.TB,#2,#6
.DA #0,#63,#hReplace .DA #0,#63,#hReplace
DLG.FIND.5 .DA #S.DLG.Ctrl.BUT,#40,#8 DLG.FIND.5 .DA #S.DLG.Ctrl.BUT,#40,#8
.DA #C.CR .DA #C.CR
.AZ " Find " .AZ " Find "
DLG.FIND.6 .DA #S.DLG.Ctrl.BUT,#52,#8 DLG.FIND.6 .DA #S.DLG.Ctrl.BUT,#52,#8
.DA #3 Ctrl-C .DA #3 Ctrl-C
.AZ " Cancel " .AZ " Cancel "
DLG.FIND.T .AZ "Find/Replace..." Title DLG.FIND.T .AZ "Find/Replace..." Title
DLG.FIND.S .AZ "CR:Find, Ctrl-C:Cancel" DLG.FIND.S .AZ "CR:Find, Ctrl-C:Cancel"
DLG.FIND.LEN .EQ *-DLG.FIND DLG.FIND.LEN .EQ *-DLG.FIND
@ -663,6 +669,7 @@ DS.START
EscBuffer .BS 16 EscBuffer .BS 16
bEscMode .BS 1 bEscMode .BS 1
bCSIMode .BS 1
bExit .BS 1 bExit .BS 1
bUnSaved .BS 1 bUnSaved .BS 1
bUpdateTop .BS 1 bUpdateTop .BS 1

View File

@ -15,7 +15,7 @@ NEW
.INB inc/libtcpip.i .INB inc/libtcpip.i
.INB inc/libtui.i .INB inc/libtui.i
*-------------------------------------- *--------------------------------------
TIMEOUT.MAX .EQ 200 20 sec. TIMEOUT.MAX .EQ 250 25 sec.
BUFSIZE .EQ 4096 BUFSIZE .EQ 4096
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
@ -25,6 +25,7 @@ ZPIPCfgPtr .BS 2
ZPBufPtr .BS 2 ZPBufPtr .BS 2
ZPLinePtr .BS 2 ZPLinePtr .BS 2
ZPFramePtr .BS 2 ZPFramePtr .BS 2
ZPnFrameLen .BS 2 ZPnFrameLen .BS 2
hBuf .BS 1 hBuf .BS 1
@ -41,6 +42,7 @@ hTBOX .BS 1
TargetHost .BS 2 TargetHost .BS 2
TargetPort .BS 2 TargetPort .BS 2
TargetSelector .BS 2 TargetSelector .BS 2
ZPPtr1 .BS 2
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -63,23 +65,30 @@ CS.START cld
.DA CS.QUIT .DA CS.QUIT
L.LIBTCPIP .DA LIBTCPIP L.LIBTCPIP .DA LIBTCPIP
L.LIBTUI .DA LIBTUI L.LIBTUI .DA LIBTUI
L.SA.LOCAL .DA SA.LOCAL
L.MSG.ScrTitle0 .DA MSG.ScrTitle0
L.MSG.ScrTitle .DA MSG.ScrTitle L.MSG.ScrTitle .DA MSG.ScrTitle
L.MSG.IPKO .DA MSG.IPKO L.MSG.IPKO .DA MSG.IPKO
L.MSG.USAGE .DA MSG.USAGE L.MSG.USAGE .DA MSG.USAGE
L.MSG.IOERR .DA MSG.IOERR
L.MSG.CRLF .DA MSG.CRLF L.MSG.CRLF .DA MSG.CRLF
L.MSG.NULL .DA MSG.NULL
L.MSG.CONNECTING .DA MSG.CONNECTING L.MSG.CONNECT .DA MSG.CONNECT
L.MSG.UNKNOWN .DA MSG.UNKNOWN L.MSG.GETTING .DA MSG.GETTING
L.MSG.OK .DA MSG.OK
L.MSG.ERROR .DA MSG.ERROR L.MSG.ERROR .DA MSG.ERROR
L.MSG.CONNECTED .DA MSG.CONNECTED L.MSG.GOTO .DA MSG.GOTO
J.ITEMTYPES .DA CS.Net.File J.items2Buf .DA CS.Net.File2Buf
.DA CS.Net.Dir .DA CS.Net.Dir2Buf
.DA CS.Net.Search .DA CS.Net.Search2Buf
.DA CS.Net.Info .DA CS.Net.Info2Buf
J.items2HL .DA CS.Net.File2HL
.DA CS.Net.Dir2HL
.DA CS.Net.Search2HL
.DA CS.Net.Info2HL
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBTCPIP CS.INIT >LDYA L.LIBTCPIP
@ -87,7 +96,7 @@ CS.INIT >LDYA L.LIBTCPIP
bcs .9 bcs .9
sta hLIBTCPIP sta hLIBTCPIP
>LDYA L.LIBTUI >LDYA L.LIBTUI
>SYSCALL LoadLib >SYSCALL LoadLib
bcs .9 bcs .9
@ -97,50 +106,93 @@ CS.INIT >LDYA L.LIBTCPIP
.9 .9
CS.INIT.RTS rts CS.INIT.RTS rts
*-------------------------------------- *--------------------------------------
CS.RUN.USAGE >LDYA L.MSG.USAGE
>SYSCALL PutS
lda #E.SYN
sec
rts
*--------------------------------------
CS.RUN jsr CS.Net.Init CS.RUN jsr CS.Net.Init
bcs CS.INIT.RTS bcs CS.INIT.RTS
jsr CS.Scr.Init lda #1
bcs CS.INIT.RTS >SYSCALL ArgV
bcs CS.RUN.USAGE
phy
pha
>PUSHEA.G NET.HyperLink+1
pla
>PUSHA
pla
>PUSHA
>SYSCALL strcpy
>LDYAI BUFSIZE >LDYAI BUFSIZE
>SYSCALL GetMem >SYSCALL GetMem
bcs CS.INIT.RTS bcs CS.INIT.RTS
stx hBuf stx hBuf
>LDYAI 256 >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem
bcs CS.INIT.RTS bcs CS.INIT.RTS
>STYA ZPLinePtr >STYA ZPLinePtr
stx hLine stx hLine
jsr CS.Net.Connect jsr CS.Scr.Init
bcs CS.INIT.RTS
>LDYA L.MSG.CRLF
jsr CS.Net.Get
bcs CS.INIT.RTS bcs CS.INIT.RTS
*-------------------------------------- *--------------------------------------
CS.RUN.LOOP0 jsr CS.Scr.SetStatusConn
bcs CS.RUN.LOOP.9
jsr CS.Net.ParseHL
jsr CS.Scr.SetStatusOkErr
bcs CS.RUN.LOOP
jsr CS.Net.Connect
jsr CS.Scr.SetStatusOkErr
bcs CS.RUN.LOOP
jsr CS.Net.Get
jsr CS.Scr.SetStatusOkErr
bcs CS.RUN.LOOP
jsr CS.Scr.SetTitle
jsr CS.Scr.SetBuf jsr CS.Scr.SetBuf
jsr CS.Scr.SetStatusOkErr
*-------------------------------------- *--------------------------------------
CS.RUN.LOOP lda hSCR CS.RUN.LOOP lda hSCR
>LIBCALL hLIBTUI,LIBTUI.Exec >LIBCALL hLIBTUI,LIBTUI.Exec
bcs .99 Error bcs CS.RUN.LOOP.9
tay tay
beq CS.RUN.LOOP No Event beq CS.RUN.LOOP No Event
cmp #3 cmp #3
beq .99 beq CS.RUN.LOOP.9
cmp #EV.HL.SELECTED
bne .1
jsr CS.Scr.SetStatusGoto
bcc CS.RUN.LOOP
rts
bra CS.RUN.LOOP .1 cmp #EV.HL.PRESSED
bne CS.RUN.LOOP
jsr CS.Net.GetHL
bcc CS.RUN.LOOP0
.99 rts tay
beq CS.RUN.LOOP
CS.RUN.LOOP.9 rts
*-------------------------------------- *--------------------------------------
CS.DOEVENT lda (pEvent) CS.DOEVENT lda (pEvent)
bpl .9 is it a TIMER event? bpl .9 is it a TIMER event?
@ -155,14 +207,14 @@ CS.DOEVENT lda (pEvent)
*-------------------------------------- *--------------------------------------
CS.QUIT lda hCTX CS.QUIT lda hCTX
beq .10 beq .10
>LIBCALL hLIBTUI,LIBTUI.Close >LIBCALL hLIBTUI,LIBTUI.Close
.10 lda hLIBTUI .10 lda hLIBTUI
beq .1 beq .1
>SYSCALL UnloadLib >SYSCALL UnloadLib
.1 lda hSocket .1 lda hSocket
beq .2 beq .2
@ -192,80 +244,142 @@ CS.Net.Init >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
bpl .97 bpl .97
ldy #S.IPCFG.IP+3 ldy #S.IPCFG.IP+3
ldx #3 ldx #4
.1 lda (ZPIPCfgPtr),y .1 lda (ZPIPCfgPtr),y
sta SA.LOCAL+S.SOCKADDR.ADDR,x pha
dey dey
dex dex
bpl .1 bne .1
lda #1 ldy #SA.LOCAL+S.SOCKADDR.ADDR
>SYSCALL ArgV ldx #4
bcs .96
>STYA TargetHost
lda #2 .2 pla
>SYSCALL ArgV sta (pData),y
bcs .7 iny
dex
>SYSCALL AToI bne .2
bra .8
.7 >LDYAI 70
.8 >STYA TargetPort
lda #AF.INET lda #AF.INET
>STA.G SA.LOCAL+S.SOCKADDR.AF
>STA.G SA.REMOTE+S.SOCKADDR.AF >STA.G SA.REMOTE+S.SOCKADDR.AF
clc clc
rts rts
.96 >LDYA L.MSG.USAGE
bra .98
.97 >LDYA L.MSG.IPKO
.98 >SYSCALL PutS .97 >LDYA L.MSG.IPKO
>SYSCALL PutS
lda #E.SYN lda #E.SYN
sec sec
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
CS.Net.Connect >PUSHEA.G SCR.StatusBuf CS.Net.ParseHL >LEA.G NET.HyperLink+1
>PUSHW L.MSG.CONNECTING >STYA ZPPtr1
>PUSHW TargetHost >STYA TargetHost
>PUSHW TargetPort
>PUSHBI 4 lda (ZPPtr1)
>SYSCALL SPrintF beq .9
jsr CS.Scr.SetStatus
cmp #'/'
lda #TIMEOUT.MAX beq .50
ldy #$ff
.1 iny
lda (ZPPtr1),y
bne .2
jsr CS.Net.Resolve host\0
bcs .99
>LDYAI 70
>STYA TargetPort
bra .7
.9 lda #E.SYN
sec
.99 rts
.2 eor #':'
beq .3
eor #'/'
bne .1
lda #70
sta TargetPort Default PORT
lda /70
sta TargetPort+1
bra .5
.3 lda #0 host:Port, stop HOST here
sta (ZPPtr1),y
jsr CS.Net.AddYp1Ptr1
jsr CS.Net.Resolve
bcs .99
>LDYA ZPPtr1
>SYSCALL AToI
>STYA TargetPort
ldy #$ff
.4 iny
lda (ZPPtr1),y
beq .7
eor #'/'
bne .4
.5 jsr CS.Net.AddYp1Ptr1
bra .6
.50 >LDYA L.MSG.NULL
>STYA TargetHost
.6 >LDYA ZPPtr1
>STYA TargetSelector
clc
rts
.7 >LDYA L.MSG.NULL
>STYA TargetSelector
.8 clc
rts
*--------------------------------------
CS.Net.AddYp1Ptr1
tya
sec skip :
adc ZPPtr1
sta ZPPtr1
tay
lda ZPPtr1+1
clc
adc #0
sta ZPPtr1+1
rts
*--------------------------------------
CS.Net.Resolve lda #TIMEOUT.MAX
sta TimeOut sta TimeOut
.1 >SLEEP .1 >SLEEP
>PUSHEA.G SA.REMOTE+S.SOCKADDR.ADDR >PUSHEA.G SA.REMOTE+S.SOCKADDR.ADDR
>PUSHW TargetHost >PUSHEA.G NET.HyperLink+1
>LIBCALL hLIBTCPIP,LIBTCPIP.HST.GetByName >LIBCALL hLIBTCPIP,LIBTCPIP.HST.GetByName
bcc CS.Net.Connect1 bcc .9
lda TimeOut ldx TimeOut
bne .1 bne .1
>PUSHEA.G SCR.StatusBuf .9 rts
>PUSHW L.MSG.UNKNOWN *--------------------------------------
>PUSHW TargetHost CS.Net.Connect >PUSHBI S.SOCKET.T.SEQPKT
>PUSHBI 2
>SYSCALL SPrintF
jsr CS.Scr.SetStatus
sec
rts
CS.Net.Connect1 >PUSHBI S.SOCKET.T.SEQPKT
>PUSHBI 0 >PUSHBI 0
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket >LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs .9 bcs .9
@ -273,7 +387,7 @@ CS.Net.Connect1 >PUSHBI S.SOCKET.T.SEQPKT
sta hSocket sta hSocket
>PUSHA >PUSHA
>PUSHW L.SA.LOCAL >PUSHEA.G SA.LOCAL
>LIBCALL hLIBTCPIP,LIBTCPIP.Bind >LIBCALL hLIBTCPIP,LIBTCPIP.Bind
bcs .9 bcs .9
@ -288,76 +402,70 @@ CS.Net.Connect1 >PUSHBI S.SOCKET.T.SEQPKT
>PUSHB hSocket >PUSHB hSocket
>PUSHEA.G SA.REMOTE >PUSHEA.G SA.REMOTE
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect >LIBCALL hLIBTCPIP,LIBTCPIP.Connect
bcc .8 bcc .9
cmp #ERR.SKT.NOCONN ldx TimeOut
sec
bne .9
lda TimeOut
bne .1 bne .1
lda #ERR.SKT.NOCONN
sec
.9 rts .9 rts
*--------------------------------------
.8 >PUSHEA.G SCR.StatusBuf CS.Net.Get >PUSHEA.G SCR.StatusBuf
>PUSHW L.MSG.CONNECTED >PUSHW L.MSG.GETTING
>PUSHW TargetSelector
ldy #SA.REMOTE+S.SOCKADDR.ADDR >PUSHBI 2
.80 >PUSHB (pData),y
iny
cpy #SA.REMOTE+S.SOCKADDR.PORT
bcc .80
iny
>PUSHB (pData),y
dey
>PUSHB (pData),y
>PUSHBI 6
>SYSCALL SPrintF >SYSCALL SPrintF
jsr CS.Scr.SetStatus jsr CS.Scr.SetStatus
clc
rts
*--------------------------------------
CS.Net.Get >STYA TargetSelector
lda hBuf lda hBuf
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPBufPtr >STYA ZPBufPtr
lda #0 lda #0 Reset Buffer
sta (ZPBufPtr) sta (ZPBufPtr)
sta (ZPLinePtr)
>PUSHB hSocket >PUSHB hSocket
>PUSHW TargetSelector >PUSHW ZPLinePtr
ldy #$ff ldy #$ff
.1 iny .1 iny
lda (TargetSelector),y lda (TargetSelector),y
sta (ZPLinePtr),y
bne .1 bne .1
lda #C.CR
sta (ZPLinePtr),y
iny
lda #C.LF
sta (ZPLinePtr),y
iny
lda #0
sta (ZPLinePtr),y
iny
>PUSHYA >PUSHYA
>LIBCALL hLIBTCPIP,LIBTCPIP.Send >LIBCALL hLIBTCPIP,LIBTCPIP.Send
bcs .9 bcs .9
lda #0
sta (ZPLinePtr)
.2 >SLEEP .2 >SLEEP
lda hSocket lda hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv >LIBCALL hLIBTCPIP,LIBTCPIP.Recv
bcc .3 bcc .3
cmp #E.NODATA cmp #E.NODATA
beq .2 beq .2
lda hSocket
* lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
* >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
stz hSocket
clc clc
rts rts
@ -369,15 +477,15 @@ CS.Net.Get >STYA TargetSelector
lda hFrame lda hFrame
>SYSCALL FreeMem >SYSCALL FreeMem
bra .2 bra .2
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.Net.GetFrame sta hFrame CS.Net.GetFrame sta hFrame
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPFramePtr >STYA ZPFramePtr
ldy #S.IP.TOTAL.LENGTH+1 ldy #S.IP.TOTAL.LENGTH+1
lda (ZPFramePtr),y lda (ZPFramePtr),y
sec sec
@ -410,43 +518,45 @@ CS.Net.GetLines ldy #$ff
.2 jsr CS.Net.GetChar .2 jsr CS.Net.GetChar
bcs .8 bcs .8
cmp #C.LF cmp #C.LF
beq .3 beq .3
sta (ZPLinePtr),y sta (ZPLinePtr),y
iny iny
bra .2 bra .2
.3 lda #0 .3 lda #0
sta (ZPLinePtr),y sta (ZPLinePtr),y
jsr CS.Net.Line2Buf jsr CS.Net.Line2Buf
lda #0 lda #0
sta (ZPLinePtr) sta (ZPLinePtr)
tay tay
bra .2 bra .2
.8 clc .8 lda #0
sta (ZPLinePtr),y
clc
rts rts
*-------------------------------------- *--------------------------------------
CS.Net.Line2Buf lda (ZPLinePtr) CS.Net.Line2Buf lda (ZPLinePtr)
ldx #ITEMTYPES.L-1 ldx #ITEMTYPES.L
.1 cmp ITEMTYPES,x .1 cmp ITEMTYPES-1,x
beq .2 beq .2
dex dex
bpl .1 bne .1
bra .6 bra .6
.2 txa .2 txa
asl asl
tax tax
jmp (J.ITEMTYPES,x) jmp (J.items2Buf-2,x)
.6 ldy #$ff .6 ldy #$ff
@ -454,7 +564,7 @@ CS.Net.Line2Buf lda (ZPLinePtr)
lda (ZPLinePtr),y lda (ZPLinePtr),y
sta (ZPBufPtr),y sta (ZPBufPtr),y
bne .7 bne .7
tya tya
clc clc
adc ZPBufPtr adc ZPBufPtr
@ -465,11 +575,11 @@ CS.Net.Line2Buf lda (ZPLinePtr)
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
* hyperlinks: [[text to show|targetUrl]] * hyperlinks: [[text to show]targetUrl]
*-------------------------------------- *--------------------------------------
CS.Net.File CS.Net.File2Buf
CS.Net.Dir CS.Net.Dir2Buf
CS.Net.Search CS.Net.Search2Buf
lda #'[' lda #'['
jsr CS.Net.Char2Buf jsr CS.Net.Char2Buf
jsr CS.Net.Char2Buf jsr CS.Net.Char2Buf
@ -478,46 +588,48 @@ CS.Net.Search
jsr CS.Net.Token2Buf jsr CS.Net.Token2Buf
lda #'|' lda #']'
jsr CS.Net.Char2Buf jsr CS.Net.Char2Buf
phy save Selector pos phy save Selector pos
txa
jsr CS.Net.Char2Buf Type
jsr CS.Net.SkipToken jsr CS.Net.SkipToken
jsr CS.Net.Token2Buf address jsr CS.Net.Token2Buf address
lda #':' lda #':'
jsr CS.Net.Char2Buf jsr CS.Net.Char2Buf
jsr CS.Net.Token2Buf port jsr CS.Net.Token2Buf port
ply ply
jsr CS.Net.Token2Buf selector jsr CS.Net.Token2Buf selector
lda #']' lda #']'
jsr CS.Net.Char2Buf jsr CS.Net.Char2Buf
lda #C.CR
jsr CS.Net.Char2Buf jsr CS.Net.Char2Buf
.8 lda #C.CR
jsr CS.Net.Char2Buf
lda #0 lda #0
sta (ZPBufPtr) sta (ZPBufPtr)
rts rts
*-------------------------------------- *--------------------------------------
CS.Net.Info ldy #0 CS.Net.Info2Buf ldy #0
jsr CS.Net.Token2Buf jsr CS.Net.Token2Buf
lda #C.CR lda #C.CR
jsr CS.Net.Char2Buf jsr CS.Net.Char2Buf
lda #0 lda #0
sta (ZPBufPtr) sta (ZPBufPtr)
rts rts
*-------------------------------------- *--------------------------------------
CS.Net.Token2Buf CS.Net.Token2Buf
@ -525,68 +637,81 @@ CS.Net.Token2Buf
lda (ZPLinePtr),y lda (ZPLinePtr),y
cmp #C.TAB cmp #C.TAB
beq .8 beq .8
cmp #C.CR cmp #C.CR
beq .8 beq .8
jsr CS.Net.Char2Buf jsr CS.Net.Char2Buf
bra CS.Net.Token2Buf bra CS.Net.Token2Buf
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
CS.Net.SkipToken CS.Net.SkipToken
iny iny
lda (ZPLinePtr),y lda (ZPLinePtr),y
cmp #C.TAB cmp #C.TAB
beq .8 beq .8
cmp #C.CR cmp #C.CR
beq .8 beq .8
bra CS.Net.SkipToken bra CS.Net.SkipToken
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
CS.Net.Char2Buf sta (ZPBufPtr) CS.Net.Char2Buf sta (ZPBufPtr)
inc ZPBufPtr inc ZPBufPtr
bne .8 bne .8
inc ZPBufPtr+1 inc ZPBufPtr+1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
CS.Net.GetChar inc ZPnFrameLen CS.Net.GetChar inc ZPnFrameLen
bne .1 bne .1
inc ZPnFrameLen+1 inc ZPnFrameLen+1
beq .9 beq .9
.1 lda (ZPFramePtr) .1 lda (ZPFramePtr)
inc ZPFramePtr inc ZPFramePtr
bne .8 bne .8
inc ZPFramePtr+1 inc ZPFramePtr+1
.8 clc .8 clc
rts rts
.9 sec .9 sec
rts rts
*-------------------------------------- *--------------------------------------
CS.Net.GetHL >LDA.G NET.HyperLink
tax
jmp (J.items2HL-2,x)
*--------------------------------------
CS.Net.Search2HL
*--------------------------------------
CS.Net.File2HL
CS.Net.Dir2HL
CS.Net.Info2HL clc
rts
*--------------------------------------
CS.Scr.Init >LIBCALL hLIBTUI,LIBTUI.Init CS.Scr.Init >LIBCALL hLIBTUI,LIBTUI.Init
bcs .9 bcs .99
sta hCTX sta hCTX
>PUSHA hCTX >PUSHA hCTX
>PUSHBI S.OBJ.F.bTitle+S.OBJ.F.bStatus >PUSHBI S.OBJ.F.bTitle+S.OBJ.F.bStatus
>LIBCALL hLIBTUI,LIBTUI.NewScrn >LIBCALL hLIBTUI,LIBTUI.NewScrn
bcs .9 bcs .99
sta hSCR sta hSCR
jsr CS.Scr.SetTitle
jsr CS.Scr.SetTitle0
jsr CS.Scr.SetStatus jsr CS.Scr.SetStatus
>PUSHB hSCR >PUSHB hSCR
@ -600,18 +725,31 @@ CS.Scr.Init >LIBCALL hLIBTUI,LIBTUI.Init
>PUSHYA >PUSHYA
>PUSHWI BUFSIZE >PUSHWI BUFSIZE
>LIBCALL hLIBTUI,LIBTUI.NewTBox >LIBCALL hLIBTUI,LIBTUI.NewTBox
bcs .9 .99 bcs .9
sta hTBOX sta hTBOX
>LIBCALL hLIBTUI,LIBTUI.Activate >LIBCALL hLIBTUI,LIBTUI.Activate
bcs .9
.9 rts
>PUSHB hTBOX
>PUSHBI S.OBJ.pVar
>PUSHEA.G NET.HyperLink
>LIBCALL hLIBTUI,LIBTUI.SetProp
.9 rts
*--------------------------------------
CS.Scr.SetTitle0
>PUSHB hSCR
>PUSHBI S.OBJ.pTITLE
>PUSHW L.MSG.ScrTitle0
>LIBCALL hLIBTUI,LIBTUI.SetProp
rts
*-------------------------------------- *--------------------------------------
CS.Scr.SetTitle >PUSHEA.G SCR.TitleBuf CS.Scr.SetTitle >PUSHEA.G SCR.TitleBuf
>PUSHW L.MSG.ScrTitle >PUSHW L.MSG.ScrTitle
>PUSHW TargetHost >PUSHW TargetHost
>PUSHW TargetPort >PUSHW TargetPort
>PUSHW TargetSelector >PUSHW TargetSelector
>PUSHBI 6 >PUSHBI 6
>SYSCALL SPrintF >SYSCALL SPrintF
@ -630,6 +768,43 @@ CS.Scr.SetBuf >PUSHB hTBOX
>LIBCALL hLIBTUI,LIBTUI.SetProp >LIBCALL hLIBTUI,LIBTUI.SetProp
rts rts
*-------------------------------------- *--------------------------------------
CS.Scr.SetStatusConn
>PUSHEA.G SCR.StatusBuf
>PUSHW L.MSG.CONNECT
>PUSHEA.G NET.HyperLink+1
>PUSHBI 2
>SYSCALL SPrintF
jmp CS.Scr.SetStatus
*--------------------------------------
CS.Scr.SetStatusGoto
>PUSHEA.G SCR.StatusBuf skip type
>PUSHW L.MSG.GOTO
>PUSHEA.G NET.HyperLink+1
>PUSHBI 2
>SYSCALL SPrintF
bra CS.Scr.SetStatus
*--------------------------------------
CS.Scr.SetStatusOkErr
bcc .1
pha
>PUSHEA.G SCR.StatusBuf
>PUSHW L.MSG.ERROR
pla
pha
>PUSHA
>PUSHBI 1
>SYSCALL SPrintF
jsr CS.Scr.SetStatus
pla
sec
rts
.1 >PUSHEA.G SCR.StatusBuf
>PUSHW L.MSG.OK
>PUSHBI 0
>SYSCALL SPrintF
*--------------------------------------
CS.Scr.SetStatus CS.Scr.SetStatus
>PUSHB hSCR >PUSHB hSCR
>PUSHBI S.OBJ.pSTATUS >PUSHBI S.OBJ.pSTATUS
@ -643,34 +818,32 @@ hLIBTCPIP .BS 1
LIBTUI .AZ "libtui" LIBTUI .AZ "libtui"
hLIBTUI .BS 1 hLIBTUI .BS 1
*-------------------------------------- *--------------------------------------
MSG.ScrTitle .CZ "A2osX-GOPHER %s:%D/%s <Ctrl-Q> : Quit" MSG.ScrTitle0 .CZ "A2osX-GOPHER - <Ctrl-Q>uit"
MSG.ScrTitle .CZ "A2osX-GOPHER %s:%D/%s - <Ctrl-Q>uit"
*-------------------------------------- *--------------------------------------
MSG.IPKO .CZ "TCP/IP Not Loaded/Configured.\r\n" MSG.IPKO .CZ "TCP/IP Not Loaded/Configured.\r\n"
MSG.USAGE .CZ "Usage : GOPHER <ip|host> [port]\r\n" MSG.USAGE .CS "Usage : GOPHER <ip|host[:port][/selector]"
MSG.IOERR .CS "I/O Error."
MSG.CRLF .CS "\r\n" MSG.CRLF .CS "\r\n"
MSG.NULL .HS 00 MSG.NULL .HS 00
*-------------------------------------- MSG.CONNECT .CZ "Connect: %s..."
MSG.CONNECTING .CZ "Connecting to %s:%D..." MSG.GETTING .CZ "Getting: /%s..."
MSG.UNKNOWN .CZ "%s: Unknown host" MSG.OK .CZ "Ok"
MSG.ERROR .CZ "Error : $%h" MSG.ERROR .CZ "Error: $%h"
MSG.CONNECTED .CZ "Connected to %d.%d.%d.%d:%D." MSG.GOTO .CZ "Goto: %s"
*-------------------------------------- *--------------------------------------
ITEMTYPES .AS "017i" ITEMTYPES .AS "017i"
ITEMTYPES.L .EQ *-ITEMTYPES ITEMTYPES.L .EQ *-ITEMTYPES
*--------------------------------------
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
.BS 1
.BS 4 S.SOCKADDR.ADDR
.BS 2 S.SOCKADDR.PORT
*-------------------------------------- *--------------------------------------
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START
SA.LOCAL .BS S.SOCKADDR
SA.REMOTE .BS S.SOCKADDR SA.REMOTE .BS S.SOCKADDR
SCR.TitleBuf .BS 80 SCR.TitleBuf .BS 80
SCR.StatusBuf .BS 80 SCR.StatusBuf .BS 80
NET.HyperLink .BS 80
DS.END .ED DS.END .ED
*-------------------------------------- *--------------------------------------
MAN MAN

View File

@ -4,6 +4,8 @@ NEW
.OP 65C02 .OP 65C02
.OR $2000 .OR $2000
.TF bin/pak .TF bin/pak
*--------------------------------------
X.RESETSRCDIR .EQ 0 single pass
*-------------------------------------- *--------------------------------------
.INB inc/macros.i .INB inc/macros.i
.INB inc/a2osx.i .INB inc/a2osx.i
@ -76,6 +78,7 @@ CS.INIT >LDYA L.LIBPAK
CS.RUN >INC.G ArgIndex CS.RUN >INC.G ArgIndex
>SYSCALL ArgV >SYSCALL ArgV
bcs .8 bcs .8
>STYA ZPPtr1 >STYA ZPPtr1
lda (ZPPtr1) lda (ZPPtr1)
@ -115,7 +118,7 @@ CS.RUN >INC.G ArgIndex
bne .9 bne .9
>LDYA ZPPtr1 >LDYA ZPPtr1
jsr InitSrcDirYA jsr X.InitSrcDirYA
bcc CS.RUN bcc CS.RUN
rts rts
@ -128,6 +131,7 @@ CS.RUN >INC.G ArgIndex
>LDYAI 256 >LDYAI 256
>SYSCALL GetMem >SYSCALL GetMem
bcs .99 bcs .99
>STYA ZPFullPath >STYA ZPFullPath
txa txa
>STA.G hSrcFullPath >STA.G hSrcFullPath
@ -156,6 +160,7 @@ CS.RUN >INC.G ArgIndex
>LDYAI CHNK.SIZE >LDYAI CHNK.SIZE
>SYSCALL GetMem >SYSCALL GetMem
bcs .98 bcs .98
>STYA ZPSrcBufPtr >STYA ZPSrcBufPtr
txa txa
>STA.G hSrcBuf >STA.G hSrcBuf
@ -163,6 +168,7 @@ CS.RUN >INC.G ArgIndex
>LDYAI CHNK.SIZE >LDYAI CHNK.SIZE
>SYSCALL GetMem >SYSCALL GetMem
bcs .98 bcs .98
>STYA ZPDstBufPtr >STYA ZPDstBufPtr
txa txa
>STA.G hDstBuf >STA.G hDstBuf
@ -192,13 +198,13 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
.1 lda bPause .1 lda bPause
bne CS.RUN.LOOP Pause... bne CS.RUN.LOOP Pause...
*-------------------------------------- *--------------------------------------
jsr GetEntry jsr X.GetEntry
bcs .9 bcs .9
jsr FilterMatch jsr X.IncludeMatch
bcs .8 no match, skip.... bcs .8 no match, skip....
jsr ExcludeMatch jsr X.IgnoreMatch
bcc .8 match, skip bcc .8 match, skip
ldy #S.STAT.MODE+1 ldy #S.STAT.MODE+1
@ -211,18 +217,20 @@ CS.RUN.LOOP ldy #S.PS.hStdIn
jsr CS.RUN.DIR jsr CS.RUN.DIR
bcs .99 bcs .99
bra .8 bra .8
.6 jsr CS.RUN.FILE .6 jsr CS.RUN.FILE
bcs .99 bcs .99
bra .8 bra .8
.9 jsr LeaveSubDir .9 jsr X.LeaveSubDir
bcs .90 bcs .90
jsr BasePath.. jsr X.BasePath..
.8 jsr GetNextEntry .8 jsr X.GetNextEntry
jmp CS.RUN.LOOP jmp CS.RUN.LOOP
.90 lda #0 .90 lda #0
@ -264,7 +272,7 @@ CS.RUN.DIR lda bRecurse
bcs .9 bcs .9
>LDYA ZPFileName >LDYA ZPFileName
jsr EnterSubDirYA jsr X.EnterSubDirYA
.9 jmp CS.RUN.CheckErr .9 jmp CS.RUN.CheckErr
@ -386,6 +394,7 @@ CS.RUN.CloseFile
bcs .9 bcs .9
>STZ.G hFile >STZ.G hFile
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.Pak >PUSHEA.G PAKSTAT CS.RUN.Pak >PUSHEA.G PAKSTAT
@ -394,7 +403,9 @@ CS.RUN.Pak >PUSHEA.G PAKSTAT
>PUSHW ZPSrcBufPtr >PUSHW ZPSrcBufPtr
>LIBCALL hLIB,LIBPAK.Pak >LIBCALL hLIB,LIBPAK.Pak
bcs .9 bcs .9
>STYA.G Shunk.DstSize >STYA.G Shunk.DstSize
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.RUN.OpenArc >LDA.G ArcName CS.RUN.OpenArc >LDA.G ArcName
@ -428,8 +439,6 @@ CS.RUN.AppendArc
>SYSCALL FOpen >SYSCALL FOpen
bcs CS.RUN.OpenArc.RTS bcs CS.RUN.OpenArc.RTS
>STA.G hArcFile >STA.G hArcFile
rts
>PUSHB.G hArcFile >PUSHB.G hArcFile
>PUSHLZ >PUSHLZ
@ -451,6 +460,7 @@ CS.RUN.AppendArc
.2 lda ARC.Header,y .2 lda ARC.Header,y
cmp (ZPSrcBufPtr),y cmp (ZPSrcBufPtr),y
bne .99 bne .99
dey dey
bpl .2 bpl .2
@ -458,10 +468,6 @@ CS.RUN.AppendArc
>PUSHLZ >PUSHLZ
>PUSHBI SEEK.END >PUSHBI SEEK.END
>SYSCALL FSeek >SYSCALL FSeek
* bcc .9
* cmp #MLI.E.EOF
* bne .99
* clc
.9 rts .9 rts
.99 >LDYA L.MSG.E.IARC .99 >LDYA L.MSG.E.IARC
@ -583,22 +589,27 @@ CS.RUN.WriteArcByteA
CS.DOEVENT sec CS.DOEVENT sec
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT jsr LeaveSubDir CS.QUIT jsr X.LeaveSubDir
bcc CS.QUIT bcc CS.QUIT
ldy #hExclude ldy #hExclude
jsr .7 jsr .7
ldy #hFilter
ldy #hInclude
jsr .7 jsr .7
ldy #hSrcFullPath ldy #hSrcFullPath
jsr .7 jsr .7
ldy #hDstBuf ldy #hDstBuf
jsr .7 jsr .7
ldy #hSrcBuf ldy #hSrcBuf
jsr .7 jsr .7
>LDA.G hArcFile >LDA.G hArcFile
beq .1 beq .1
>SYSCALL FClose >SYSCALL FClose
.1 lda hLIB .1 lda hLIB
@ -611,7 +622,9 @@ CS.QUIT jsr LeaveSubDir
.7 lda (pData),y .7 lda (pData),y
beq .8 beq .8
>SYSCALL FreeMem >SYSCALL FreeMem
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
CS.RUN.CheckOpt ldy #1 CS.RUN.CheckOpt ldy #1
@ -621,6 +634,7 @@ CS.RUN.CheckOpt ldy #1
.1 cmp OptionList,x .1 cmp OptionList,x
beq .2 beq .2
dex dex
bpl .1 bpl .1

View File

@ -80,7 +80,7 @@ S.OBJ.pMenu .EQ 18
S.OBJ.pStatus .EQ 20 S.OBJ.pStatus .EQ 20
S.OBJ.pBuf .EQ 22 S.OBJ.pBuf .EQ 22
S.OBJ.BufSize .EQ 24 S.OBJ.BufSize .EQ 24
* S.OBJ.pVar .EQ 26
*-------------------------------------- *--------------------------------------
S.OBJ.Childs .EQ 32 S.OBJ.Childs .EQ 32
* *
@ -98,31 +98,29 @@ S.TLINE.Ptr .EQ S.OBJ
S.TLINE.Len .EQ S.OBJ+1 S.TLINE.Len .EQ S.OBJ+1
S.TLINE.HScroll .EQ S.OBJ+2 S.TLINE.HScroll .EQ S.OBJ+2
* *
S.TLINE .EQ S.OBJ+3 S.TLINE .EQ S.OBJ+4
*-------------------------------------- *--------------------------------------
S.TBOX.DocX .EQ S.OBJ S.TBOX.DocX .EQ S.OBJ
S.TBOX.DocY .EQ S.OBJ+2 S.TBOX.DocY .EQ S.OBJ+2
S.TBOX.HScroll .EQ S.OBJ+4 S.TBOX.HScroll .EQ S.OBJ+4
S.TBOX.VScroll .EQ S.OBJ+6 S.TBOX.VScroll .EQ S.OBJ+6
S.TBOX.BufPtr .EQ S.OBJ+8 S.TBOX.SelBegin .EQ S.OBJ+8
S.TBOX.BufCnt .EQ S.OBJ+10 S.TBOX.SelEnd .EQ S.OBJ+10
S.TBOX.SelBegin .EQ S.OBJ+12 S.TBOX.BufPtr .EQ S.OBJ+12
S.TBOX.SelEnd .EQ S.OBJ+14 S.TBOX.BufCnt .EQ S.OBJ+14
* *
S.TBOX .EQ S.OBJ+16 S.TBOX .EQ S.OBJ+16
*-------------------------------------- *--------------------------------------
S.LBOX.Idx .EQ S.OBJ+0 S.LBOX.Idx .EQ S.OBJ+0
S.LBOX.VScroll .EQ S.OBJ+1 S.LBOX.VScroll .EQ S.OBJ+2
S.LBOX.pVar .EQ S.OBJ+2
* *
S.LBOX .EQ S.OBJ+6 S.LBOX .EQ S.OBJ+4
*-------------------------------------- *--------------------------------------
S.CBOX.HotKey .EQ S.OBJ+0 S.CBOX.HotKey .EQ S.OBJ+0
S.CBOX.EV .EQ S.OBJ+1 S.CBOX.EV .EQ S.OBJ+1
S.CBOX.pLabel .EQ S.OBJ+2 S.CBOX.pLabel .EQ S.OBJ+2
S.CBOX.pVar .EQ S.OBJ+4
* *
S.CBOX .EQ S.OBJ+6 S.CBOX .EQ S.OBJ+4
*-------------------------------------- *--------------------------------------
S.BUT.HotKey .EQ S.OBJ+0 S.BUT.HotKey .EQ S.OBJ+0
S.BUT.EV .EQ S.OBJ+1 S.BUT.EV .EQ S.OBJ+1
@ -132,13 +130,14 @@ S.BUT .EQ S.OBJ+4
*-------------------------------------- *--------------------------------------
S.RADIO.HotKey .EQ S.OBJ+0 S.RADIO.HotKey .EQ S.OBJ+0
S.RADIO.EV .EQ S.OBJ+1 S.RADIO.EV .EQ S.OBJ+1
S.RADIO.pVar .EQ S.OBJ+2 S.RADIO.Idx .EQ S.OBJ+2
S.RADIO.Idx .EQ S.OBJ+4
* *
S.RADIO .EQ S.OBJ+6 S.RADIO .EQ S.OBJ+4
*-------------------------------------- *--------------------------------------
EV.RESIZE .EQ $80 EV.RESIZE .EQ $80
EV.QUIT .EQ $81 EV.QUIT .EQ $81
EV.HL.SELECTED .EQ $82
EV.HL.PRESSED .EQ $83
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE inc/libtui.i SAVE inc/libtui.i

View File

@ -335,9 +335,9 @@ SKT.shutdown pha
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.S.CLOSING cmp #S.SOCKET.TCP.S.CLOSING
bne .10 bne .10
inc S.SOCKET.TCP.S.TIMEWT inc S.SOCKET.TCP.S.TIMEWT
sta (ZPPtrSKT),y sta (ZPPtrSKT),y
pla pla
clc clc
@ -349,15 +349,19 @@ SKT.shutdown pha
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.S.ESTBLSH cmp #S.SOCKET.TCP.S.ESTBLSH
bne .1 bne .1
lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK jsr SKT.SendOptFIN
jsr TCP.OUT.SendOptA Send FIN/ACK
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.CLWAIT
beq .3 bne .2
jsr SKT.SendOptFIN
lda #S.SOCKET.TCP.S.LASTACK
jmp SKT.StoreTCB.S
.2 lda #S.TCP.OPTIONS.RST .2 lda #S.TCP.OPTIONS.RST
jsr TCP.OUT.SendOptA Send RST jsr TCP.OUT.SendOptA Send RST
@ -386,6 +390,19 @@ 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
@ -423,7 +440,7 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
and #S.TCP.OPTIONS.ACK and #S.TCP.OPTIONS.ACK
beq .8 beq .8
jmp TCP.OUT.SendOptA jmp TCP.OUT.SendOptA
.8 jsr SKT.CheckStream .8 jsr SKT.CheckStream
@ -463,6 +480,7 @@ SKT.GetDataFromSktIn
.1 inx Check if room left in dest buffer .1 inx Check if room left in dest buffer
bne .2 bne .2
pla pla
inc inc
beq .8 beq .8
@ -477,10 +495,12 @@ SKT.GetDataFromSktIn
sta (ZPDataInPtr) sta (ZPDataInPtr)
inc ZPDataInPtr inc ZPDataInPtr
bne .3 bne .3
inc ZPDataInPtr+1 inc ZPDataInPtr+1
.3 iny .3 iny
bne .1 bne .1
inc ZPTmpPtr1+1 inc ZPTmpPtr1+1
inc SKT.Cache+S.SOCKET.TCP.INTAIL+1 inc SKT.Cache+S.SOCKET.TCP.INTAIL+1

View File

@ -237,12 +237,9 @@ TCP.IN.JMP.ESTBLSH
and #S.TCP.OPTIONS.FIN and #S.TCP.OPTIONS.FIN
beq .8 beq .8
jsr SKT.StoreTCB update socket jsr TCP.IN.ACKTheFIN
lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK lda #S.SOCKET.TCP.S.CLWAIT
jsr TCP.OUT.SendOptA FIN received, Send FIN.ACK
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
@ -262,6 +259,10 @@ TCP.IN.JMP.ESTBLSH
lda #S.TCP.OPTIONS.ACK lda #S.TCP.OPTIONS.ACK
.91 jmp TCP.OUT.SendOptA .91 jmp TCP.OUT.SendOptA
*-------------------------------------- *--------------------------------------
TCP.IN.JMP.CLWAIT
clc Wait for SKT.shutdown
rts
*--------------------------------------
TCP.IN.JMP.LASTACK 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
@ -273,10 +274,8 @@ TCP.IN.JMP.LASTACK
ldy #S.SOCKET.TCP.S ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.TIMEWT lda #S.SOCKET.TCP.S.TIMEWT
sta (ZPPtrSKT),y sta (ZPPtrSKT),y
.8
*-------------------------------------- .8 clc
TCP.IN.JMP.CLWAIT
clc Wait for SKT.shutdown
rts rts
*-------------------------------------- *--------------------------------------
TCP.IN.JMP.FINWT1 TCP.IN.JMP.FINWT1
@ -298,23 +297,9 @@ TCP.IN.JMP.FINWT2
TCP.IN.2TIMEWT jsr SKT.GetTCB TCP.IN.2TIMEWT jsr SKT.GetTCB
ldx #3 jsr TCP.IN.ACKTheFIN
.1 inc SKT.Cache+S.SOCKET.TCP.INSEQNUM,x jsr TCP.OUT.SendACK FIN received, Send ACK
bne .2
dex
bpl .1
.2 ldx #3
.3 inc SKT.Cache+S.SOCKET.TCP.OUTNEXTSEQ,x
bne .4
dex
bpl .3
.4 jsr TCP.OUT.SendACK FIN received, Send ACK
bcs TCP.IN.JMP.TIMEWT.RTS bcs TCP.IN.JMP.TIMEWT.RTS
lda #S.SOCKET.TCP.S.TIMEWT lda #S.SOCKET.TCP.S.TIMEWT
@ -344,6 +329,28 @@ TCP.IN.ACKTheSYN
rts rts
*-------------------------------------- *--------------------------------------
TCP.IN.ACKTheFIN
ldx #3
.1 inc SKT.Cache+S.SOCKET.TCP.INSEQNUM,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 TCP.IN.SetDataInPtrAndLen
ldy #S.IP.TOTAL.LENGTH+1 ldy #S.IP.TOTAL.LENGTH+1
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y

View File

@ -8,7 +8,7 @@ CBOX.New lda #S.OBJ.T.CBOX
jsr OBJ.Create jsr OBJ.Create
bcs .9 bcs .9
ldy #S.CBOX.pVar ldy #S.OBJ.pVar
jsr OBJ.PullWordY jsr OBJ.PullWordY
ldy #S.CBOX.pLabel ldy #S.CBOX.pLabel
@ -69,7 +69,7 @@ CBOX.Run ldy #S.BUT.HotKey
cmp #C.SPACE cmp #C.SPACE
bne .9 bne .9
.8 ldy #S.CBOX.pVar .8 ldy #S.OBJ.pVar
lda (ZPObjPtr),y lda (ZPObjPtr),y
sta ZPPtr1 sta ZPPtr1
iny iny
@ -104,7 +104,7 @@ CBOX.Draw ldx #'('
.10 txa .10 txa
jsr LB.COut jsr LB.COut
ldy #S.CBOX.pVar ldy #S.OBJ.pVar
lda (ZPObjPtr),y lda (ZPObjPtr),y
sta ZPPtr1 sta ZPPtr1
iny iny

View File

@ -12,7 +12,7 @@ NEW
* CC = success, A = hCTX * CC = success, A = hCTX
*\-------------------------------------- *\--------------------------------------
CTX.Init >LDYA L.SEQ.INIT CTX.Init >LDYA L.SEQ.INIT
jsr CTX.fputs jsr IO.fputs
bcs .99 bcs .99
>LDYAI S.CTX >LDYAI S.CTX
@ -32,23 +32,19 @@ CTX.Init >LDYA L.SEQ.INIT
dey dey
bpl .10 bpl .10
jsr CTX.GetC.Reset jsr IO.GetC.Reset
.1 >SLEEP .1 >SLEEP
jsr CTX.GetC jsr IO.GetC
bcs .98
beq .2
jsr CTX.PutC
bcs .98 bcs .98
.2 ldy #S.CTX.W .2 ldy #S.CTX.W
lda (ZPCtxPtr),y lda (ZPCtxPtr),y
bne .8 bne .8
lda (pStack) .3 lda (pStack)
dec dec
sta (pStack) sta (pStack)
bne .1 bne .1
@ -63,6 +59,7 @@ CTX.Init >LDYA L.SEQ.INIT
sta (ZPCtxPtr),y sta (ZPCtxPtr),y
.8 inc pStack Discard counter .8 inc pStack Discard counter
>PULLA hCTX >PULLA hCTX
clc clc
.99 rts .99 rts
@ -90,291 +87,21 @@ CTX.Close pha
>SYSCALL2 GetMemPtr >SYSCALL2 GetMemPtr
>STYA ZPCtxPtr >STYA ZPCtxPtr
lda (ZPCtxPtr) S.CTX.hSCRN lda (ZPCtxPtr) S.CTX.hSCRN
beq .1 beq .1
>DEBUG
jsr LIB.Destroy jsr LIB.Destroy
.1 pla .1 pla
>SYSCALL2 FreeMem >SYSCALL2 FreeMem
>LDYA L.SEQ.CLOSE >LDYA L.SEQ.CLOSE
jsr CTX.fputs jsr IO.fputs
clc clc
CTX.Close.RTS rts CTX.Close.RTS rts
*-------------------------------------- *--------------------------------------
CTX.GetC ldx ZPCtxPtr
phx
ldx ZPCtxPtr+1
phx
ldx ZPObjPtr
phx
ldx ZPObjPtr+1
phx
>SYSCALL GetChar
plx
stx ZPObjPtr+1
plx
stx ZPObjPtr
plx
stx ZPCtxPtr+1
plx
stx ZPCtxPtr
bcs CTX.Close.RTS
tax
ldy #S.CTX.bEscMode
lda (ZPCtxPtr),y
beq .20
bmi .40 IAC mode
iny S.CTX.InBufPtr
lda (ZPCtxPtr),y
cpx #'[' CSI ?
bne .12
cmp #S.CTX.InBufPtr
bne .49 buffer not empty...bad SEQ
.12 jsr CTX.GetC.ToBuf
bcs .49 Buffer Full
cpx #'['
beq .18
cpx #64
bcs CTX.GetC.ESCSEQ if CC, not a letter...SEQ is incomplete
.18 lda #0
clc
rts
*--------------------------------------
.20 cpx #C.ESC
bne .30
inc A = $01
bra .31
*--------------------------------------
.30 cpx #IAC
bne .38
dec A = $FF
.31 jsr CTX.GetC.SetMode
lda #0
clc
rts
*--------------------------------------
.38 txa
clc
.39 rts
*--------------------------------------
.40 jsr CTX.GetC.ToBuf
bcs .49 Buffer Full
cpy #S.CTX.InBuf First char...
beq .48
ldy #S.CTX.InBuf
lda (ZPCtxPtr),y
cmp #SB First char is SB ?
bne CTX.GetC.IACSEQ no ...
cpx #SE is SE after SB ..... ?
bne .48
bra CTX.GetC.IACSEQ yes, we have IAC SB .....SE
.49 jsr CTX.GetC.Reset
.48 lda #0
clc
rts
*--------------------------------------
CTX.GetC.ESCSEQ cmp #S.CTX.InBuf+2
bcs .2
ldy #ESC.Out-ESC.In-1
txa
.1 cmp ESC.In,y
beq .7
dey
bpl .1
bra .6
*--------------------------------------
* \e[xxx;yyyR
*--------------------------------------
.2 cpx #'R' Response to cursor position query?
bne .6
lda #S.CTX.InBuf+1 skip ESC [
jsr CTX.GetC.GetCtxEA
>PUSHYA
>PUSHW L.FMT.ESCCSI.R
lda #S.CTX.H
jsr CTX.GetC.GetCtxEA
>PUSHYA
lda #S.CTX.W
jsr CTX.GetC.GetCtxEA
>PUSHYA
>PUSHBI 4 2 pointers
>SYSCALL2 sscanf
.6 ldx #0
bra .8
.7 ldx ESC.Out,y
.8 jsr CTX.GetC.Reset
txa
clc
rts
*--------------------------------------
* IAC SB TN.O.NAWS ww ww hh hh IAC SE
*--------------------------------------
CTX.GetC.IACSEQ ldy #S.CTX.InBuf
lda (ZPCtxPtr),y
cmp #SB
bne .8
iny
lda (ZPCtxPtr),y
cmp #TN.O.NAWS
bne .8
iny
lda (ZPCtxPtr),y
bne .8
iny
lda (ZPCtxPtr),y
cmp #80
bcs .1
lda #80
.1 tax
iny
lda (ZPCtxPtr),y
bne .8
iny
lda (ZPCtxPtr),y
cmp #24
bcs .2
lda #24
.2 ldy #S.CTX.H
sta (ZPCtxPtr),y
dey S.CTX.W
txa
sta (ZPCtxPtr),y
jsr CTX.GetC.Reset
lda #EV.RESIZE
clc
rts
.8 jsr CTX.GetC.Reset
lda #0
clc
rts
*--------------------------------------
CTX.GetC.Reset lda #0
CTX.GetC.SetMode
ldy #S.CTX.bEscMode
sta (ZPCtxPtr),y
iny Y = S.CTX.InBufPtr
tya
sta (ZPCtxPtr),y
rts
*--------------------------------------
CTX.GetC.GetCtxEA
clc
adc ZPCtxPtr
tay
lda ZPCtxPtr+1
adc #0
.9 rts
*--------------------------------------
CTX.GetC.ToBuf ldy #S.CTX.InBufPtr
lda (ZPCtxPtr),y
cmp #S.CTX.EndBuf buffer full
bcs .9
phy
inc
tay
txa
sta (ZPCtxPtr),y
tya
ply
sta (ZPCtxPtr),y
* clc
.9 rts
*--------------------------------------
CTX.PutC ldx ZPCtxPtr
phx
ldx ZPCtxPtr+1
phx
ldx ZPObjPtr
phx
ldx ZPObjPtr+1
phx
>SYSCALL PutChar
plx
stx ZPObjPtr+1
plx
stx ZPObjPtr
plx
stx ZPCtxPtr+1
plx
stx ZPCtxPtr
rts
*--------------------------------------
CTX.fputs dec pStack
>PUSHYA
ldy #S.PS.hStdOut
lda (pPS),y
ldy #2
sta (pStack),y
>SYSCALL fputs
rts
*--------------------------------------
MAN MAN
SAVE usr/src/lib/libtui.s.ctx SAVE usr/src/lib/libtui.s.ctx
LOAD usr/src/lib/libtui.s LOAD usr/src/lib/libtui.s

View File

@ -43,11 +43,11 @@ DLG.New lda #S.OBJ.T.DLG
sta (ZPObjPtr),y sta (ZPObjPtr),y
jsr OBJ.SetX2Y2 jsr OBJ.SetX2Y2
lda hObj lda hObj
* clc * clc
rts rts
.9 >POP 5 .9 >POP 5
rts rts
*-------------------------------------- *--------------------------------------

324
LIB/LIBTUI.S.IO.txt Normal file
View File

@ -0,0 +1,324 @@
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
bcs .9
tax
ldy #S.CTX.bEscMode
lda (ZPCtxPtr),y
beq .20
bmi .40 IAC mode
iny S.CTX.InBufPtr
lda (ZPCtxPtr),y
cpx #'[' CSI ?
bne .12
cmp #S.CTX.InBufPtr
bne .49 buffer not empty...bad SEQ
.12 jsr IO.GetC.ToBuf
bcs .49 Buffer Full
cpx #'['
beq .18
cpx #64
bcs IO.GetC.ESCSEQ if CC, not a letter...SEQ is incomplete
.18 lda #0
clc
.9 rts
*--------------------------------------
.20 cpx #C.ESC
bne .30
inc A = $01
bra .31
*--------------------------------------
.30 cpx #IAC
bne .38
dec A = $FF
.31 jsr IO.GetC.SetMode
lda #0
clc
rts
*--------------------------------------
.38 txa
clc
.39 rts
*--------------------------------------
.40 jsr IO.GetC.ToBuf
bcs .49 Buffer Full
cpy #S.CTX.InBuf First char...
beq .48
ldy #S.CTX.InBuf
lda (ZPCtxPtr),y
cmp #SB First char is SB ?
bne IO.GetC.IACSEQ no ...
cpx #SE is SE after SB ..... ?
bne .48
bra IO.GetC.IACSEQ yes, we have IAC SB .....SE
.49 jsr IO.GetC.Reset
.48 lda #0
clc
rts
*--------------------------------------
IO.GetC.ESCSEQ cmp #S.CTX.InBuf+2
bcs .2
ldy #ESC.Out-ESC.In-1
txa
.1 cmp ESC.In,y
beq .7
dey
bpl .1
bra .6
*--------------------------------------
* \e[xxx;yyyR
*--------------------------------------
.2 cpx #'R' Response to cursor position query?
bne .6
lda #S.CTX.InBuf+1 skip ESC [
jsr IO.GetC.GetCtxEA
>PUSHYA
>PUSHW L.FMT.ESCCSI.R
lda #S.CTX.H
jsr IO.GetC.GetCtxEA
>PUSHYA
lda #S.CTX.W
jsr IO.GetC.GetCtxEA
>PUSHYA
>PUSHBI 4 2 pointers
>SYSCALL2 sscanf
.6 ldx #0
bra .8
.7 ldx ESC.Out,y
.8 jsr IO.GetC.Reset
txa
clc
rts
*--------------------------------------
* IAC SB TN.O.NAWS ww ww hh hh IAC SE
*--------------------------------------
IO.GetC.IACSEQ ldy #S.CTX.InBuf
lda (ZPCtxPtr),y
cmp #SB
bne .8
iny
lda (ZPCtxPtr),y
cmp #TN.O.NAWS
bne .8
iny
lda (ZPCtxPtr),y
bne .8
iny
lda (ZPCtxPtr),y
cmp #80
bcs .1
lda #80
.1 tax
iny
lda (ZPCtxPtr),y
bne .8
iny
lda (ZPCtxPtr),y
cmp #24
bcs .2
lda #24
.2 ldy #S.CTX.H
sta (ZPCtxPtr),y
dey S.CTX.W
txa
sta (ZPCtxPtr),y
jsr IO.GetC.Reset
lda #EV.RESIZE
clc
rts
.8 jsr IO.GetC.Reset
lda #0
clc
rts
*--------------------------------------
IO.GetC.Reset lda #0
IO.GetC.SetMode
ldy #S.CTX.bEscMode
sta (ZPCtxPtr),y
iny Y = S.CTX.InBufPtr
tya
sta (ZPCtxPtr),y
rts
*--------------------------------------
IO.GetC.GetCtxEA
clc
adc ZPCtxPtr
tay
lda ZPCtxPtr+1
adc #0
.9 rts
*--------------------------------------
IO.GetC.ToBuf ldy #S.CTX.InBufPtr
lda (ZPCtxPtr),y
cmp #S.CTX.EndBuf buffer full
bcs .9
phy
inc
tay
txa
sta (ZPCtxPtr),y
tya
ply
sta (ZPCtxPtr),y
* clc
.9 rts
*--------------------------------------
IO.GetChar >SYSCALL GetChar
bcs .9
cmp #C.CR
clc
bne .9
ldy #S.PS.hStdIn Check for any extra LF
lda (pPS),y
>SYSCALL FEOF
bcs .9
tay
bne .8
>SYSCALL GetChar
bcs .9
.8 lda #C.CR
.9 rts
*--------------------------------------
IO.fputs ldx ZPCtxPtr
phx
ldx ZPCtxPtr+1
phx
ldx ZPObjPtr
phx
ldx ZPObjPtr+1
phx
dec pStack
>PUSHYA
ldy #S.PS.hStdOut
lda (pPS),y
ldy #2
sta (pStack),y
>SYSCALL fputs
plx
stx ZPObjPtr+1
plx
stx ZPObjPtr
plx
stx ZPCtxPtr+1
plx
stx ZPCtxPtr
rts
*--------------------------------------
IO.LBWrite ldx ZPCtxPtr
phx
ldx ZPCtxPtr+1
phx
ldx ZPObjPtr
phx
ldx ZPObjPtr+1
phx
ldy #S.PS.hStdOut
lda (pPS),y
>PUSHA
>PUSHW LineBuf
>PUSHW ZPLineBufCnt
>SYSCALL fwrite
plx
stx ZPObjPtr+1
plx
stx ZPObjPtr
plx
stx ZPCtxPtr+1
plx
stx ZPCtxPtr
rts
*--------------------------------------
MAN
SAVE usr/src/lib/libtui.s.io
LOAD usr/src/lib/libtui.s
ASM

View File

@ -92,22 +92,6 @@ LB.PrintF >SYSCALL2 SPrintF
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
LB.HexOut pha
lsr
lsr
lsr
lsr
jsr .1
pla
and #$0F
.1 ora #$30
cmp #'9'+1
bcc LB.COut
adc #6
*--------------------------------------
LB.COut sta (ZPLineBufPtr) LB.COut sta (ZPLineBufPtr)
inc ZPLineBufPtr inc ZPLineBufPtr
bne .1 bne .1
@ -121,33 +105,6 @@ LB.COut sta (ZPLineBufPtr)
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
LB.Out ldx ZPCtxPtr
phx
ldx ZPCtxPtr+1
phx
ldx ZPObjPtr
phx
ldx ZPObjPtr+1
phx
ldy #S.PS.hStdOut
lda (pPS),y
>PUSHA
>PUSHW LineBuf
>PUSHW ZPLineBufCnt
>SYSCALL fwrite
plx
stx ZPObjPtr+1
plx
stx ZPObjPtr
plx
stx ZPCtxPtr+1
plx
stx ZPCtxPtr
rts
*--------------------------------------
MAN MAN
SAVE usr/src/lib/libtui.s.lb SAVE usr/src/lib/libtui.s.lb
LOAD usr/src/lib/libtui.s LOAD usr/src/lib/libtui.s

View File

@ -8,7 +8,7 @@ LBOX.New lda #S.OBJ.T.LBOX
jsr OBJ.Create jsr OBJ.Create
bcs .9 bcs .9
ldy #S.LBOX.pVar ldy #S.OBJ.pVar
jsr OBJ.PullWordY jsr OBJ.PullWordY
ldy #S.OBJ.pBuf ldy #S.OBJ.pBuf

View File

@ -11,7 +11,7 @@ OBJ.Create pha Type
bcs .9 bcs .9
>STYA ZPObjPtr >STYA ZPObjPtr
stx hObj stx hObj
pla pla
@ -19,15 +19,15 @@ OBJ.Create pha Type
tax tax
ldy OBJ.SIZES,x ldy OBJ.SIZES,x
lda #0 lda #0
dey dey
.1 sta (ZPObjPtr),y .1 sta (ZPObjPtr),y
dey dey
bne .1 bne .1
* clc * clc
rts rts
@ -182,26 +182,28 @@ OBJ.SetX2Y2 ldy #S.OBJ.X1
*-------------------------------------- *--------------------------------------
OBJ.Exec >PUSHA hOBJ OBJ.Exec >PUSHA hOBJ
jsr LIB.GetOBJ jsr LIB.GetOBJ
jsr LIB.GetCTX jsr LIB.GetCTX
.1 jsr CTX.GetC .1 >SLEEP
jsr IO.GetC
bcs .9 bcs .9
cmp #EV.RESIZE cmp #EV.RESIZE
clc clc
beq .99 beq .99
tay tay
beq .1 beq .1
>PUSHA >PUSHA
jsr OBJ.Run jsr OBJ.Run
inc pStack inc pStack
tay tay
beq .1 no event, no error beq .1 no event, no error
.9 inc pStack .9 inc pStack
.99 rts .99 rts
@ -213,11 +215,11 @@ OBJ.Run ldx ZPObjPtr
phx phx
ldx ZPObjPtr+1 ldx ZPObjPtr+1
phx phx
ldy #1 ldy #1
lda (pStack),y lda (pStack),y
jsr LIB.GetOBJ jsr LIB.GetOBJ
ldy #S.OBJ.S ldy #S.OBJ.S
lda (ZPObjPtr),y lda (ZPObjPtr),y
and #S.OBJ.S.bDisabled and #S.OBJ.S.bDisabled
@ -235,11 +237,11 @@ OBJ.Run ldx ZPObjPtr
tax tax
bne .8 error / event bne .8 error / event
bcc .8 bcc .8
ldy #S.OBJ.Childs ldy #S.OBJ.Childs
.1 lda (ZPObjPtr),y .1 lda (ZPObjPtr),y
beq .5 beq .5
@ -272,12 +274,12 @@ OBJ.Run ldx ZPObjPtr
stx ZPObjPtr+1 stx ZPObjPtr+1
plx plx
stx ZPObjPtr stx ZPObjPtr
rts rts
.80 lda (ZPObjPtr) S.OBJ.T .80 lda (ZPObjPtr) S.OBJ.T
tax tax
jmp (J.ObjRun,x) jmp (J.ObjRun,x)
*-------------------------------------- *--------------------------------------
OBJ.Draw >PUSHA hObj OBJ.Draw >PUSHA hObj
@ -419,11 +421,11 @@ OBJ.Draw.Top.I jsr LB.Init
ldx #SEQ.BORDERTR-SEQS ldx #SEQ.BORDERTR-SEQS
jsr LB.SeqOut jsr LB.SeqOut
.7 jmp LB.Out .7 jmp IO.LBWrite
*-------------------------------------- *--------------------------------------
OBJ.Draw.Body lda (pStack) OBJ.Draw.Body lda (pStack)
jsr LIB.GetOBJ jsr LIB.GetOBJ
OBJ.Draw.Body.I ldy #S.OBJ.InnerY OBJ.Draw.Body.I ldy #S.OBJ.InnerY
lda (ZPObjPtr),y lda (ZPObjPtr),y
>PUSHA Start >PUSHA Start
@ -462,7 +464,7 @@ OBJ.Draw.Lines jsr OBJ.CurOff
ldx #SEQ.NORMAL-SEQS ldx #SEQ.NORMAL-SEQS
jsr LB.SeqOut jsr LB.SeqOut
plp plp
beq .4 beq .4
@ -480,7 +482,7 @@ OBJ.Draw.Lines jsr OBJ.CurOff
ldx #SEQ.BORDERV-SEQS ldx #SEQ.BORDERV-SEQS
jsr LB.SeqOut jsr LB.SeqOut
.4 jsr LB.Out .4 jsr IO.LBWrite
bcs .9 bcs .9
lda (pStack) Relative Y lda (pStack) Relative Y
@ -607,7 +609,7 @@ OBJ.Draw.Bottom.I
ldx #SEQ.BORDERBR-SEQS ldx #SEQ.BORDERBR-SEQS
jsr LB.SeqOut jsr LB.SeqOut
.7 jmp LB.Out .7 jmp IO.LBWrite
*-------------------------------------- *--------------------------------------
OBJ.GetProp ldy #1 hObj OBJ.GetProp ldy #1 hObj
lda (pStack),y lda (pStack),y
@ -626,37 +628,19 @@ OBJ.GetProp ldy #1 hObj
* clc * clc
rts rts
*-------------------------------------- *--------------------------------------
OBJ.SetProp ldy #3 hObj OBJ.SetProp cpy #S.OBJ.pTitle
lda (pStack),y
jsr LIB.GetOBJ
ldy #2
lda (pStack),y
tay prop
>PULLA Value
sta (ZPObjPtr),y
iny
>PULLA
sta (ZPObjPtr),y
>PULLA prop
inc pStack hObj
cmp #S.OBJ.pTitle
bne .1 bne .1
jmp OBJ.Draw.Top.I
.1 cmp #S.OBJ.pBuf
bne .2
jmp OBJ.Draw.Body.I jsr OBJ.Draw.Top.I
ldy #0
.2 cmp #S.OBJ.pStatus rts
.1 cpy #S.OBJ.pStatus
bne .8 bne .8
jmp OBJ.Draw.Bottom.I jsr OBJ.Draw.Bottom.I
ldy #0
rts
.8 clc .8 clc
rts rts
@ -712,11 +696,11 @@ OBJ.FindActive ldx ZPObjPtr
jsr LIB.GetOBJ jsr LIB.GetOBJ
ldy #S.OBJ.Childs ldy #S.OBJ.Childs
.1 phy .1 phy
lda (ZPObjPtr),y lda (ZPObjPtr),y
beq .7 beq .7
pha pha
>SYSCALL2 GetMemPtr >SYSCALL2 GetMemPtr
@ -724,39 +708,39 @@ OBJ.FindActive ldx ZPObjPtr
ldy #S.OBJ.S ldy #S.OBJ.S
lda (ZPPtr1),y S.OBJ.S.bActive lda (ZPPtr1),y S.OBJ.S.bActive
bmi .8 bmi .8
pla pla
.7 ply .7 ply
iny iny
cpy #S.OBJ cpy #S.OBJ
bne .1 bne .1
* sec * sec
bra .80 bra .80
.8 pla .8 pla
ply ply
clc clc
.80 plx .80 plx
stx ZPObjPtr+1 stx ZPObjPtr+1
plx plx
stx ZPObjPtr stx ZPObjPtr
rts rts
*-------------------------------------- *--------------------------------------
OBJ.CurUpdPos ldy #S.OBJ.F OBJ.CurUpdPos 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
bpl .8 bpl .8
jsr LB.Init jsr LB.Init
ldy #S.OBJ.InnerX ldy #S.OBJ.InnerX
lda (ZPObjPtr),y lda (ZPObjPtr),y
clc clc
@ -772,19 +756,19 @@ OBJ.CurUpdPos ldy #S.OBJ.F
tay tay
jsr LB.GotoXY jsr LB.GotoXY
jsr LB.Out jsr IO.LBWrite
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
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
bpl .8 bpl .8
bit #S.OBJ.S.bCurOn bit #S.OBJ.S.bCurOn
bne .8 bne .8
@ -793,7 +777,7 @@ OBJ.CurOn ldy #S.OBJ.F
sta (ZPObjPtr),y sta (ZPObjPtr),y
jsr LB.Init jsr LB.Init
ldy #S.OBJ.InnerX ldy #S.OBJ.InnerX
lda (ZPObjPtr),y lda (ZPObjPtr),y
clc clc
@ -811,9 +795,9 @@ OBJ.CurOn ldy #S.OBJ.F
ldx #SEQ.CURON-SEQS ldx #SEQ.CURON-SEQS
jsr LB.SeqOut jsr LB.SeqOut
jsr LB.Out jsr IO.LBWrite
.8 lda #0 .8 lda #0
clc clc
rts rts
@ -821,31 +805,31 @@ 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
bpl .8 bpl .8
bit #S.OBJ.S.bCurOn bit #S.OBJ.S.bCurOn
beq .8 beq .8
eor #S.OBJ.S.bCurOn eor #S.OBJ.S.bCurOn
sta (ZPObjPtr),y sta (ZPObjPtr),y
jsr LB.Init jsr LB.Init
ldx #SEQ.CUROFF-SEQS ldx #SEQ.CUROFF-SEQS
jsr LB.SeqOut jsr LB.SeqOut
jmp LB.Out jmp IO.LBWrite
.8 lda #0 .8 lda #0
clc clc
rts rts
*-------------------------------------- *--------------------------------------
OBJ.ZeroWordAtY lda #0 OBJ.ZeroWordAtY lda #0
lda (ZPObjPtr),y sta (ZPObjPtr),y
iny iny
sta (ZPObjPtr),y sta (ZPObjPtr),y
rts rts
@ -854,9 +838,9 @@ OBJ.IncWordAtY lda (ZPObjPtr),y
inc inc
sta (ZPObjPtr),y sta (ZPObjPtr),y
bne .8 bne .8
iny iny
lda (ZPObjPtr),y lda (ZPObjPtr),y
inc inc
sta (ZPObjPtr),y sta (ZPObjPtr),y
@ -869,7 +853,7 @@ OBJ.DecWordAtY clc
sta (ZPObjPtr),y sta (ZPObjPtr),y
iny iny
lda (ZPObjPtr),y lda (ZPObjPtr),y
sbc #0 sbc #0
sta (ZPObjPtr),y sta (ZPObjPtr),y
@ -888,9 +872,9 @@ OBJ.GetLineXAtY lda (ZPObjPtr),y
iny iny
lda (ZPObjPtr),y lda (ZPObjPtr),y
sta ZPPtr1+1 sta ZPPtr1+1
stz TempI stz TempI
.1 lda (ZPPtr1) .1 lda (ZPPtr1)
beq .9 beq .9
@ -905,7 +889,7 @@ OBJ.GetLineXAtY lda (ZPObjPtr),y
lda (ZPPtr1),y lda (ZPPtr1),y
clc clc
beq .5 beq .5
cmp #C.CR cmp #C.CR
bne .4 bne .4
@ -915,13 +899,13 @@ OBJ.GetLineXAtY lda (ZPObjPtr),y
adc ZPPtr1 adc ZPPtr1
sta ZPPtr1 sta ZPPtr1
bcc .1 bcc .1
inc ZPPtr1+1 inc ZPPtr1+1
bra .1 bra .1
.8 clc .8 clc
rts rts
.9 sec .9 sec
rts rts
*-------------------------------------- *--------------------------------------

View File

@ -8,7 +8,7 @@ RADIO.New lda #S.OBJ.T.RADIO
jsr OBJ.Create jsr OBJ.Create
bcs .9 bcs .9
ldy #S.RADIO.pVar ldy #S.OBJ.pVar
jsr OBJ.PullWordY jsr OBJ.PullWordY
ldy #S.OBJ.pBuf ldy #S.OBJ.pBuf
@ -87,7 +87,7 @@ RADIO.Run ldy #S.OBJ.S
cmp #C.SPACE cmp #C.SPACE
bne .2 bne .2
ldy #S.RADIO.pVar ldy #S.OBJ.pVar
lda (ZPObjPtr),y lda (ZPObjPtr),y
sta ZPPtr1 sta ZPPtr1
iny iny
@ -154,7 +154,7 @@ RADIO.Draw lda (pStack) Relative Y
jsr OBJ.GetLineXAtY jsr OBJ.GetLineXAtY
bcs .8 bcs .8
ldy #S.RADIO.pVar ldy #S.OBJ.pVar
lda (ZPObjPtr),y lda (ZPObjPtr),y
sta ZPPtr2 sta ZPPtr2
iny iny

View File

@ -33,37 +33,53 @@ TBOX.Run ldy #S.OBJ.S
lda (ZPObjPtr),y lda (ZPObjPtr),y
bpl TBOX.RUN.Ignore bpl TBOX.RUN.Ignore
ldy #S.OBJ.F
lda (ZPObjPtr),y
and #S.OBJ.F.bEdit
bne TBOX.Run.RW
lda (pStack) Event lda (pStack) Event
cmp #C.SPACE
beq .1
cmp #27
bcs TBOX.RUN.Ignore
asl
tax
jmp (J.TBOX.RUN.RO,x)
.1 jmp TBOX.RUN.GetLink
*--------------------------------------
TBOX.Run.RW lda (pStack) Event
cmp #C.SPACE cmp #C.SPACE
bcs .1 bcs .1
cmp #27
bcs TBOX.RUN.Ignore
asl asl
tax tax
jmp (J.TBOX.RUN,x) jmp (J.TBOX.RUN.RW,x)
.1 cmp #C.DEL .1 cmp #C.DEL
beq .3 beq .2
jsr TBOX.GetBuf jsr TBOX.GetBuf
jsr TBOX.ToBuf1 jsr TBOX.ToBuf1
bcs .8 Buffer full bcs TBOX.RUN.Ignore Buffer full
jsr TBOX.RUN.FS1 jsr TBOX.RUN.FS1
bit bRepaintAll bra .3
bmi .2
jsr OBJ.CurUpdPos .2 jsr TBOX.GetBuf
jmp TBOX.DrawCurLine
.2 jmp TBOX.DrawAllLines
.3 jsr TBOX.GetBuf
jsr TBOX.Delete1 jsr TBOX.Delete1
bcs .8 Buffer Empty bcs TBOX.RUN.Ignore Buffer Empty
bit bRepaintAll .3 bit bRepaintAll
bmi .4 bmi .4
jsr OBJ.CurUpdPos jsr OBJ.CurUpdPos
@ -71,13 +87,185 @@ TBOX.Run ldy #S.OBJ.S
jmp TBOX.DrawCurLine jmp TBOX.DrawCurLine
.4 jmp TBOX.DrawAllLines .4 jmp TBOX.DrawAllLines
.8
*-------------------------------------- *--------------------------------------
TBOX.RUN.Ignore lda #0 TBOX.RUN.Ignore lda #0
sec sec
rts rts
*-------------------------------------- *--------------------------------------
TBOX.RUN.PrevLink
TBOX.RUN.PrevLink.9
lda #0
sec
rts
*--------------------------------------
TBOX.RUN.NextLink
jsr TBOX.GetDocYInAX
jsr TBOX.GetLineAX will do GetBuf
bcs TBOX.RUN.PrevLink.9
jsr TBOX.SetLineAtDocX
.1 ldx #$ff
.2 inx
jsr TBOX.GetChar
beq .9
cmp #C.CR
beq .7
cmp #'['
bne .2
cmp (ZPPtr1) "[["
bne .2
jsr TBOX.RUN.SelectLink
.3 jsr TBOX.GetChar
beq .9
cmp #C.CR
beq .7
cmp #']'
bne .3
jsr TBOX.RUN.Link2pVar
jsr TBOX.SetViewPort
bit bRepaintAll
bmi .6
jsr OBJ.CurUpdPos
jsr TBOX.DrawCurLine
bra .60
.6 jsr TBOX.DrawAllLines
.60 lda #EV.HL.SELECTED
clc
rts
.7 ldy #S.TBOX.DocX
jsr OBJ.ZeroWordAtY
ldy #S.TBOX.DocY
jsr OBJ.IncWordAtY
bra .1
.9 lda #0
sec
rts
*--------------------------------------
TBOX.RUN.SelectLink
txa
sec skip first [
ldy #S.TBOX.DocX
adc (ZPObjPtr),y
sta (ZPObjPtr),y
iny
lda #0
adc (ZPObjPtr),y
sta (ZPObjPtr),y
ldy #S.TBOX.BufPtr
jsr TBOX.SetTempCAtY
ldy #S.TBOX.SelBegin
jmp TBOX.SetTempCAtY
*--------------------------------------
TBOX.RUN.Link2pVar
ldy #S.TBOX.SelEnd
jsr TBOX.SetTempCAtY
ldy #S.OBJ.pVar
lda (ZPObjPtr),y
sta ZPPtr2
iny
lda (ZPObjPtr),y
sta ZPPtr2+1
ldy #0
.1 jsr TBOX.GetChar
beq .8
cmp #C.CR
beq .8
cmp #']'
beq .8
sta (ZPPtr2),y
iny
bra .1
.8 lda #0
sta (ZPPtr2),y
rts
*--------------------------------------
TBOX.RUN.GetLink
lda #EV.HL.PRESSED
clc
rts
lda #0
sec
rts
*--------------------------------------
TBOX.RUN.ScrollUp
jsr TBOX.GetBuf
ldy #S.TBOX.VScroll
lda (ZPObjPtr),y
clc
ldy #S.OBJ.InnerH
adc (ZPObjPtr),y
pha
ldy #S.TBOX.VScroll+1
lda (ZPObjPtr),y
ldy #S.OBJ.InnerH+1
adc (ZPObjPtr),y
plx
jsr TBOX.GetLineAX
bcs .8
ldy #S.TBOX.VScroll
jsr OBJ.IncWordAtY
jmp TBOX.DrawAllLines
.8 clc
rts
*--------------------------------------
TBOX.RUN.ScrollDown
jsr TBOX.GetBuf
ldy #S.TBOX.VScroll+1
lda (ZPObjPtr),y
dey
ora (ZPObjPtr),y
beq .8
jsr OBJ.DecWordAtY
ldy #S.TBOX.DocY
jsr OBJ.DecWordAtY
jmp TBOX.DrawAllLines
.8 clc
rts
*--------------------------------------
TBOX.RUN.SelBegin TBOX.RUN.SelBegin
ldy #S.TBOX.BufPtr ldy #S.TBOX.BufPtr
lda (ZPObjPtr),y lda (ZPObjPtr),y
@ -91,7 +279,7 @@ TBOX.RUN.SelBegin
dey dey
sta (ZPObjPtr),y sta (ZPObjPtr),y
rts jmp TBOX.DrawAllLines
*-------------------------------------- *--------------------------------------
TBOX.RUN.SelEnd ldy #S.TBOX.BufPtr TBOX.RUN.SelEnd ldy #S.TBOX.BufPtr
lda (ZPObjPtr),y lda (ZPObjPtr),y
@ -105,7 +293,7 @@ TBOX.RUN.SelEnd ldy #S.TBOX.BufPtr
dey dey
sta (ZPObjPtr),y sta (ZPObjPtr),y
rts jmp TBOX.DrawAllLines
*-------------------------------------- *--------------------------------------
TBOX.RUN.BS ldy #S.TBOX.BufPtr+1 TBOX.RUN.BS ldy #S.TBOX.BufPtr+1
lda (ZPObjPtr),y lda (ZPObjPtr),y
@ -135,7 +323,7 @@ TBOX.RUN.BS ldy #S.TBOX.BufPtr+1
*-------------------------------------- *--------------------------------------
TBOX.RUN.LF jsr TBOX.GetBuf TBOX.RUN.LF jsr TBOX.GetBuf
TBOX.RUN.LF1 jsr TBOX.GetCurlineInAX TBOX.RUN.LF1 jsr TBOX.GetDocYInAX
inx inx
bne .1 bne .1
@ -158,7 +346,7 @@ TBOX.RUN.VT jsr TBOX.GetBuf
jsr OBJ.DecWordAtY jsr OBJ.DecWordAtY
TBOX.RUN.VT1 jsr TBOX.GetCurlineInAX TBOX.RUN.VT1 jsr TBOX.GetDocYInAX
jsr TBOX.GetLineAX jsr TBOX.GetLineAX
jsr TBOX.GetLineLenInAXC jsr TBOX.GetLineLenInAXC
@ -210,17 +398,11 @@ TBOX.RUN.FS1 lda (ZPPtr2)
ldy #S.TBOX.BufPtr ldy #S.TBOX.BufPtr
jsr OBJ.IncWordAtY jsr OBJ.IncWordAtY
ldy #S.TBOX.DocX
cpx #C.CR cpx #C.CR
beq .1 bne .7
ldy #S.TBOX.DocX .1 jsr OBJ.ZeroWordAtY
bra .7
.1 lda #0
ldy #S.TBOX.DocX
sta (ZPObjPtr),y
iny
sta (ZPObjPtr),y
ldy #S.TBOX.DocY ldy #S.TBOX.DocY
@ -231,25 +413,18 @@ TBOX.RUN.FS1 lda (ZPPtr2)
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
TBOX.RUN.SOL lda #0 TBOX.RUN.SOL ldy #S.TBOX.DocX
ldy #S.TBOX.DocX jsr OBJ.ZeroWordAtY
sta (ZPObjPtr),y
iny
sta (ZPObjPtr),y
jsr TBOX.GetCurlineInAX jsr TBOX.GetDocYInAX
jsr TBOX.GetLineAX jsr TBOX.GetLineAX
ldy #S.TBOX.BufPtr ldy #S.TBOX.BufPtr
lda TempC BufPtr at SOL jsr TBOX.SetTempCAtY BufPtr at SOL
sta (ZPObjPtr),y
iny
lda TempC+1
sta (ZPObjPtr),y
jmp TBOX.CheckViewPort jmp TBOX.CheckViewPort
*-------------------------------------- *--------------------------------------
TBOX.RUN.EOL jsr TBOX.GetCurlineInAX TBOX.RUN.EOL jsr TBOX.GetDocYInAX
jsr TBOX.GetLineAX jsr TBOX.GetLineAX
jsr TBOX.GetLineLenInAXC jsr TBOX.GetLineLenInAXC
@ -278,11 +453,8 @@ TBOX.RUN.CR jsr TBOX.GetBuf
jsr TBOX.ToBuf1 jsr TBOX.ToBuf1
bcs .8 Buffer full bcs .8 Buffer full
lda #0
ldy #S.TBOX.DocX ldy #S.TBOX.DocX
sta (ZPObjPtr),y jsr OBJ.ZeroWordAtY
iny
sta (ZPObjPtr),y
jsr TBOX.RUN.LF1 jsr TBOX.RUN.LF1
@ -309,25 +481,18 @@ TBOX.RUN.QUIT lda #3 User Interrupt
rts rts
*-------------------------------------- *--------------------------------------
TBOX.RUN.Home ldy #S.TBOX.DocX TBOX.RUN.Home ldy #S.TBOX.DocX
jsr OBJ.ZeroWordAtY
ldx #4 DocX + DocY ldy #S.TBOX.DocY
jsr OBJ.ZeroWordAtY
lda #0
.1 sta (ZPObjPtr),y
iny
dex
bne .1
ldy #S.TBOX.BufPtr ldy #S.TBOX.BufPtr
sta (ZPObjPtr),y jsr OBJ.ZeroWordAtY
iny
sta (ZPObjPtr),y
jmp TBOX.CheckViewPort jmp TBOX.CheckViewPort
*-------------------------------------- *--------------------------------------
TBOX.RUN.EraseCL TBOX.RUN.EraseCL
jsr TBOX.GetCurlineInAX jsr TBOX.GetDocYInAX
jsr TBOX.GetLineAX jsr TBOX.GetLineAX
jsr TBOX.GetLineLenInAXC jsr TBOX.GetLineLenInAXC
jsr TBOX.DeleteAXC jsr TBOX.DeleteAXC
@ -423,7 +588,7 @@ TBOX.DrawCurLine
jmp OBJ.Draw.Lines jmp OBJ.Draw.Lines
*-------------------------------------- *--------------------------------------
* hyperlinks: [[text to show|targetUrl]] * hyperlinks: [[text to show]targetUrl]
*-------------------------------------- *--------------------------------------
TBOX.Draw ldy #S.TBOX.VScroll TBOX.Draw ldy #S.TBOX.VScroll
lda (ZPObjPtr),y lda (ZPObjPtr),y
@ -457,7 +622,8 @@ TBOX.Draw ldy #S.TBOX.VScroll
lda (ZPObjPtr),y lda (ZPObjPtr),y
tax tax
stz bTemp reset selection stz bTemp1 reset selection
stz bTemp2 reset Hyperlink
.2 jsr TBOX.CheckSel .2 jsr TBOX.CheckSel
@ -497,6 +663,47 @@ TBOX.Activate
TBOX.Deactivate clc TBOX.Deactivate clc
rts rts
*-------------------------------------- *--------------------------------------
TBOX.SetProp jsr OBJ.SetProp
bcs .9
cpy #S.OBJ.pBuf
bne .8
ldy #S.TBOX.DocX
lda #0
.1 sta (ZPObjPtr),y
iny
cpy #S.TBOX.BufPtr+2
bcc .1
jsr OBJ.GetBuf
ldx #0
ldy #0
.2 lda (ZPPtr1),y
beq .3
iny
bne .2
inc ZPPtr1+1
inx
bra .2
.3 tya
ldy #S.TBOX.BufCnt
sta (ZPObjPtr),y
iny
txa
sta (ZPObjPtr),y
jmp OBJ.Draw.Body.I
.8 clc
.9 rts
*--------------------------------------
TBOX.GetBuf jsr OBJ.GetBuf TBOX.GetBuf jsr OBJ.GetBuf
ldy #S.TBOX.BufPtr ldy #S.TBOX.BufPtr
@ -512,7 +719,7 @@ TBOX.GetBuf jsr OBJ.GetBuf
rts rts
*-------------------------------------- *--------------------------------------
TBOX.GetCurlineInAX TBOX.GetDocYInAX
ldy #S.TBOX.DocY ldy #S.TBOX.DocY
lda (ZPObjPtr),y lda (ZPObjPtr),y
tax tax
@ -546,7 +753,8 @@ TBOX.GetLineAX stx TempW
jsr TBOX.GetLineLenInAXC jsr TBOX.GetLineLenInAXC
bcc .9 bcc .9
php * sec
pha pha
adc TempC adc TempC
@ -555,8 +763,9 @@ TBOX.GetLineAX stx TempW
adc TempC+1 adc TempC+1
sta TempC+1 sta TempC+1
sec
pla pla
plp
adc ZPPtr1 adc ZPPtr1
sta ZPPtr1 sta ZPPtr1
@ -576,43 +785,52 @@ TBOX.GetLineAX stx TempW
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
* TempC charPos TBOX.SetLineAtDocX
*-------------------------------------- ldy #S.TBOX.DocX
TBOX.CheckSel bit bTemp
bmi .1
ldy #S.TBOX.SelBegin
lda (ZPObjPtr),y lda (ZPObjPtr),y
cmp TempC clc
adc ZPPtr1
sta ZPPtr1
iny iny
lda (ZPObjPtr),y lda (ZPObjPtr),y
sbc TempC+1 adc ZPPtr1+1
bcc .8 sta ZPPtr1+1
* clc
dey #S.TBOX.DocX
lda (ZPObjPtr),y
adc TempC
sta TempC
iny
lda (ZPObjPtr),y
adc TempC+1
sta TempC+1
rts
*--------------------------------------
* TempC charPos
*--------------------------------------
TBOX.CheckSel ldy #S.TBOX.SelBegin
jsr TBOX.CmpTempCAtY
bcc TBOX.ResetSel
iny #S.TBOX.SelEnd
jsr TBOX.CmpTempCAtY
bcs TBOX.ResetSel
*--------------------------------------
TBOX.SetSel bit bTemp1
bmi .8
phx phx
ldx #SEQ.INVERSE-SEQS ldx #SEQ.INVERSE-SEQS
jsr LB.SeqOut jsr LB.SeqOut
plx plx
rts
.1 ldy #S.TBOX.SelEnd dec bTemp1
lda (ZPObjPtr),y
cmp TempC
iny
lda (ZPObjPtr),y
sbc TempC+1
bcc .8
phx
ldx #SEQ.NORMAL-SEQS
jsr LB.SeqOut
plx
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
TBOX.ResetSel bit bTemp TBOX.ResetSel bit bTemp1
bpl .8 bpl .8
phx phx
@ -620,24 +838,83 @@ TBOX.ResetSel bit bTemp
jsr LB.SeqOut jsr LB.SeqOut
plx plx
stz bTemp1
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
TBOX.GetLineChar TBOX.GetLineChar
lda (ZPPtr1) ldy #S.OBJ.F
lda (ZPObjPtr),y
and #S.OBJ.F.bEdit
bne TBOX.GetChar
bit bTemp2
bmi .1
jsr TBOX.GetChar
beq .8
cmp #'['
bne .8 NZ
cmp (ZPPtr1) "[["
bne .8 NZ
dec bTemp2
rts NZ
.1 jsr TBOX.GetChar
beq .8
cmp #'['
beq .1 skip 2nd [
cmp #']' "[[display]"
bne .8 NZ
stz bTemp2
.2 jsr TBOX.GetChar skip "link]"
beq .8
cmp #']'
bne .2
lda #']' NZ
.8 rts
*--------------------------------------
TBOX.GetChar lda (ZPPtr1)
beq .8 beq .8
inc ZPPtr1 inc ZPPtr1
bne .7 bne .1
inc ZPPtr1+1 inc ZPPtr1+1
.7 inc TempC .1 inc TempC
bne .8 bne .8
inc TempC+1 inc TempC+1 NZ
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
TBOX.CmpTempCAtY
lda TempC
cmp (ZPObjPtr),y
lda TempC+1
iny
sbc (ZPObjPtr),y
rts
*--------------------------------------
TBOX.SetTempCAtY
lda TempC
sta (ZPObjPtr),y
lda TempC+1
iny
sta (ZPObjPtr),y
rts
*--------------------------------------
TBOX.GetLineLenInAXC TBOX.GetLineLenInAXC
lda ZPPtr1+1 lda ZPPtr1+1
pha pha
@ -944,11 +1221,8 @@ TBOX.SetViewPort
bra .40 bra .40
.32 lda #0 .32 ldy #S.TBOX.VScroll
ldy #S.TBOX.VScroll+1 jsr OBJ.ZeroWordAtY
sta (ZPObjPtr),y
dey
sta (ZPObjPtr),y
ldy #S.TBOX.DocY ldy #S.TBOX.DocY
lda (ZPObjPtr),y lda (ZPObjPtr),y

View File

@ -22,7 +22,8 @@ ZPLineBufCnt .BS 2
ZPPtr1 .BS 2 ZPPtr1 .BS 2
ZPPtr2 .BS 2 ZPPtr2 .BS 2
ZPPtr3 .BS 2 ZPPtr3 .BS 2
bTemp .BS 1 bTemp1 .BS 1
bTemp2 .BS 1
TempW .BS 2 TempW .BS 2
TempC .BS 2 TempC .BS 2
@ -66,7 +67,7 @@ CS.START cld
.DA OBJ.Run .DA OBJ.Run
.DA OBJ.Draw .DA OBJ.Draw
.DA OBJ.GetProp .DA OBJ.GetProp
.DA OBJ.SetProp .DA LIB.SetProp
.DA OBJ.Activate .DA OBJ.Activate
.DA OBJ.Deactivate .DA OBJ.Deactivate
*-------------------------------------- *--------------------------------------
@ -120,7 +121,45 @@ J.ObjDeactivate .DA OBJ.Deactivate
.DA BUT.Deactivate .DA BUT.Deactivate
.DA RADIO.Deactivate .DA RADIO.Deactivate
*-------------------------------------- *--------------------------------------
J.TBOX.RUN .DA TBOX.RUN.Ignore J.ObjSetProp .DA OBJ.SetProp
.DA OBJ.SetProp
.DA OBJ.SetProp
.DA OBJ.SetProp
.DA TBOX.SetProp
.DA OBJ.SetProp
.DA OBJ.SetProp
.DA OBJ.SetProp
.DA OBJ.SetProp
*--------------------------------------
J.TBOX.RUN.RO .DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore Ctrl-A
.DA TBOX.RUN.Ignore Ctrl-B
.DA TBOX.RUN.Ignore Ctrl-C
.DA TBOX.RUN.Ignore Ctrl-D
.DA TBOX.RUN.Ignore Ctrl-E
.DA TBOX.RUN.Ignore Ctrl-F
.DA TBOX.RUN.Ignore Ctrl-G
.DA TBOX.RUN.PrevLink BS
.DA TBOX.RUN.Ignore TAB
.DA TBOX.RUN.ScrollUp LF
.DA TBOX.RUN.ScrollDown VT
.DA TBOX.RUN.EOL Ctrl-L
.DA TBOX.RUN.GetLink CR
.DA TBOX.RUN.Ignore Ctrl-N
.DA TBOX.RUN.PGUP Ctrl-O
.DA TBOX.RUN.PGDN Ctrl-P
.DA TBOX.RUN.QUIT Ctrl-Q
.DA TBOX.RUN.Ignore Ctrl-R
.DA TBOX.RUN.Ignore Ctrl-S
.DA TBOX.RUN.Home Ctrl-T
.DA TBOX.RUN.NextLink FS
.DA TBOX.RUN.Ignore Ctrl-V
.DA TBOX.RUN.Ignore Ctrl-W
.DA TBOX.RUN.Ignore Ctrl-X
.DA TBOX.RUN.EOF Ctrl-Y
.DA TBOX.RUN.Ignore Ctrl-Z
*--------------------------------------
J.TBOX.RUN.RW .DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore .DA TBOX.RUN.Ignore
.DA TBOX.RUN.SelBegin Ctrl-B .DA TBOX.RUN.SelBegin Ctrl-B
.DA TBOX.RUN.Ignore ** Copy .DA TBOX.RUN.Ignore ** Copy
@ -147,11 +186,6 @@ J.TBOX.RUN .DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore ** Cut .DA TBOX.RUN.Ignore ** Cut
.DA TBOX.RUN.EOF Ctrl-Y .DA TBOX.RUN.EOF Ctrl-Y
.DA TBOX.RUN.Ignore ** delete under cusror .DA TBOX.RUN.Ignore ** delete under cusror
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore
*-------------------------------------- *--------------------------------------
L.SEQ.INIT .DA SEQ.INIT L.SEQ.INIT .DA SEQ.INIT
L.SEQ.GOTOXY .DA SEQ.GOTOXY L.SEQ.GOTOXY .DA SEQ.GOTOXY
@ -185,32 +219,56 @@ LIB.UNLOAD dec LibCnt
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
LIB.SetProp ldy #3 hObj
lda (pStack),y
jsr LIB.GetOBJ
ldy #2
lda (pStack),y
tay prop
>PULLA Value
sta (ZPObjPtr),y
iny
>PULLA
sta (ZPObjPtr),y
dey prop
inc pStack prop
inc pStack hObj
lda (ZPObjPtr) S.OBJ.T
tax
jmp (J.ObjSetProp,x)
*--------------------------------------
LIB.Destroy ldx ZPObjPtr LIB.Destroy ldx ZPObjPtr
phx phx
ldx ZPObjPtr+1 ldx ZPObjPtr+1
phx phx
pha pha
jsr LIB.GetOBJ jsr LIB.GetOBJ
ldy #S.OBJ.S ldy #S.OBJ.S
lda (ZPObjPtr),y lda (ZPObjPtr),y
and #S.OBJ.S.bHasChilds and #S.OBJ.S.bHasChilds
beq .3 beq .3
ldy #S.OBJ.Childs ldy #S.OBJ.Childs
.1 lda (ZPObjPtr),y .1 lda (ZPObjPtr),y
beq .2 beq .2
phy phy
pha pha
jsr OBJ.Destroy jsr OBJ.Destroy
pla pla
>SYSCALL FreeMem >SYSCALL FreeMem
ply ply
.2 iny .2 iny
cpy #S.OBJ cpy #S.OBJ
bcc .1 bcc .1
@ -218,7 +276,7 @@ LIB.Destroy ldx ZPObjPtr
pla pla
pha pha
jsr LIB.GetOBJ jsr LIB.GetOBJ
.3 jsr .7 .3 jsr .7
pla pla
@ -235,26 +293,28 @@ LIB.Destroy ldx ZPObjPtr
tax tax
jmp (J.ObjDestroy,x) jmp (J.ObjDestroy,x)
*-------------------------------------- *--------------------------------------
LIB.GetCTX ldy #S.OBJ.hParent LIB.GetCTX >LDYA ZPObjPtr
lda (ZPObjPtr),y
.1 >SYSCALL2 GetMemPtr
>STYA ZPCtxPtr >STYA ZPCtxPtr
lda (ZPCtxPtr) .1 lda (ZPCtxPtr)
* cmp #S.OBJ.T.SCRN * cmp #S.OBJ.T.SCRN
beq .8 beq .8
ldy #S.OBJ.hParent jsr .8
lda (ZPCtxPtr),y
bra .1 bra .1
.8 rts .8 ldy #S.OBJ.hParent
lda (ZPCtxPtr),y
>SYSCALL2 GetMemPtr
>STYA ZPCtxPtr
rts
*-------------------------------------- *--------------------------------------
LIB.GetOBJ >SYSCALL2 GetMemPtr LIB.GetOBJ >SYSCALL2 GetMemPtr
>STYA ZPObjPtr >STYA ZPObjPtr
rts rts
*-------------------------------------- *--------------------------------------
.INB usr/src/lib/libtui.s.io
.INB usr/src/lib/libtui.s.lb .INB usr/src/lib/libtui.s.lb
.INB usr/src/lib/libtui.s.ctx .INB usr/src/lib/libtui.s.ctx
.INB usr/src/lib/libtui.s.cont .INB usr/src/lib/libtui.s.cont
@ -292,7 +352,8 @@ OBJ.COLORS .DA #93,#44 SCRN
.DA #92,#100 BUT .DA #92,#100 BUT
.DA #93,#0 RADIO .DA #93,#0 RADIO
*-------------------------------------- *--------------------------------------
SEQ.INIT .CS "\ec\e[999;999H" Set Cursor Pos to 999,999 SEQ.INIT .CS "\ec" reset
.CS "\e[999;999H" Set Cursor Pos to 999,999
.CS "\e[6n" then query Cursor Pos .CS "\e[6n" then query Cursor Pos
.CS "\e(B" font select .CS "\e(B" font select
.CS "\e)0" font select .CS "\e)0" font select

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

View File

@ -21,7 +21,7 @@ int main(int argc, char *argv[])
char *pBuf = malloc(1024); char *pBuf = malloc(1024);
pBuf[0]=0; pBuf[0]=0;
short int hTBOX = tuiNewTBox(hSCRN, 1, 1, 44, 20, F_bTitle+F_bStatus+F_bHBorder+F_bVBorder, pBuf, 1024); short int hTBOX = tuiNewTBox(hSCRN, 1, 1, 44, 20, F_bTitle+F_bStatus+F_bHBorder+F_bVBorder+F_bEdit, pBuf, 1024);
tuiSetProp(hTBOX, P_pTitle, "Text Box Title"); tuiSetProp(hTBOX, P_pTitle, "Text Box Title");
tuiSetProp(hTBOX, P_pStatus, "Text Box Status"); tuiSetProp(hTBOX, P_pStatus, "Text Box Status");
@ -65,10 +65,13 @@ int main(int argc, char *argv[])
if (e == EV_SAVE) { if (e == EV_SAVE) {
short int hDLGS = tuiNewDlg(hCTX, 70, 11, "Save As..."); short int hDLGS = tuiNewDlg(hCTX, 70, 11, "Save As...");
short int hOKBut = tuiNewBut(hDLGS, 50, 7, 13, EV_OK, " OK "); short int hOKBut = tuiNewBut(hDLGS, 50, 7, 13, EV_OK, " OK ");
tuiNewBut(hDLGS, 57, 7, 3, EV_CANCEL, "Cancel"); short int hCanBut = tuiNewBut(hDLGS, 57, 7, 3, EV_CANCEL, "Cancel");
tuiDraw(hDLGS); tuiDraw(hDLGS);
tuiActivate(hOKBut); tuiActivate(hOKBut);
tuiExec(hDLGS); short int e;
do {
e = tuiExec(hDLGS);
} while (e != EV_CANCEL);
tuiDestroy(hDLGS); tuiDestroy(hDLGS);
tuiDraw(hSCRN); tuiDraw(hSCRN);
} }

View File

@ -451,8 +451,10 @@ PRODOS.FT.TXT .AZ "txt"
.AZ "sys" .AZ "sys"
PRODOS.FT.END .EQ *-PRODOS.FT.TXT PRODOS.FT.END .EQ *-PRODOS.FT.TXT
*-------------------------------------- *--------------------------------------
SMBERR01 .DA #2,#3,#32 SMBERR01 .DA #2,#3,#4,#5,#12
MLIERR01 .DA #MLI.E.FNOTFND,#MLI.E.PNOTFND,#MLI.E.OPEN .DA #32
MLIERR01 .DA #MLI.E.FNOTFND,#MLI.E.PNOTFND,#MLI.E.FCBFULL,#MLI.E.WRTPROT,#MLI.E.WRTPROT
.DA #MLI.E.OPEN
*-------------------------------------- *--------------------------------------
NETBIOS.H .DA #0 DIRECT TCP TRANSPORT NETBIOS.H .DA #0 DIRECT TCP TRANSPORT
.DA #0 24 BITS LENGTH .DA #0 24 BITS LENGTH
@ -538,7 +540,7 @@ SMB.ComCreate.H .DA #24 WORD COUNT
.BS 2 NameLength .BS 2 NameLength
.HS 00000000 Flags .HS 00000000 Flags
.HS 00000000 RootDirectoryFID .HS 00000000 RootDirectoryFID
.HS 00000010 DesiredAccess = GENERIC_ALL .HS 000000C0 DesiredAccess = GENERIC_READ+GENERIC_WRITE
.HS 0000000000000000 AllocationSize .HS 0000000000000000 AllocationSize
.HS 00000000 ExtFileAttributes .HS 00000000 ExtFileAttributes
.HS 00000000 ShareAccess .HS 00000000 ShareAccess

View File

@ -54,7 +54,7 @@ STDIO.Put1 >PUSHWI K.IOBuf buf
inc write 1 byte inc write 1 byte
>PUSHA >PUSHA
STDIO.Write jsr K.FWrite STDIO.Write jsr K.FWrite.PFT
bcc .9 bcc .9
tay tay
@ -480,12 +480,15 @@ K.FRead.RTS rts
* ## RETURN VALUE * ## RETURN VALUE
* Y,A = Bytes Written * Y,A = Bytes Written
*\-------------------------------------- *\--------------------------------------
K.FWrite.PFT ldx #SYS.FWrite Needed by PFT
K.FWrite jsr PFT.CheckNode4 K.FWrite jsr PFT.CheckNode4
bcs K.FWrite.RET5 bcs K.FWrite.RET5
jsr UNISTD.Write jsr UNISTD.Write
bcc K.FRead.RTS bcc K.FRead.RTS
K.FWrite.9 cmp #E.NODATA K.FWrite.9 cmp #E.NODATA
sec sec
bne K.FRead.RTS IO Error bne K.FRead.RTS IO Error
@ -899,8 +902,8 @@ K.PrintF.1 sec format string->ptr2
>PUSHA >PUSHA
>PUSHWI K.IOBuf >PUSHWI K.IOBuf
>PUSHW PrintF.Cnt Writing to File/dev... >PUSHW PrintF.Cnt Writing to File/dev...
ldx #SYS.FWrite Needed by PFT
jsr K.FWrite jsr K.FWrite.PFT
bcc .81 bcc .81
tay tay