From 05ee4ce936598cc348ec3ba115d27c3b3a7cd193 Mon Sep 17 00:00:00 2001 From: burniouf Date: Sun, 26 Mar 2023 19:42:38 +0200 Subject: [PATCH] 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) --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes .Floppies/A2OSX.TEST.po | Bin 819200 -> 819200 bytes .Floppies/ProDOSFX.BOOT.po | Bin 143360 -> 143360 bytes BIN/BMP2PIX.S.txt | 16 +- BIN/EDIT.S.txt | 193 +++++++------ BIN/GOPHER.S.txt | 563 ++++++++++++++++++++++++------------- BIN/PAK.S.txt | 46 +-- INC/LIBTUI.I.txt | 27 +- LIB/LIBTCPIP.S.SKT.txt | 34 ++- LIB/LIBTCPIP.S.TCP.txt | 59 ++-- LIB/LIBTUI.S.CBOX.txt | 6 +- LIB/LIBTUI.S.CTX.txt | 295 +------------------ LIB/LIBTUI.S.DLG.txt | 6 +- LIB/LIBTUI.S.IO.txt | 324 +++++++++++++++++++++ LIB/LIBTUI.S.LB.txt | 43 --- LIB/LIBTUI.S.LBOX.txt | 2 +- LIB/LIBTUI.S.OBJ.txt | 168 +++++------ LIB/LIBTUI.S.RADIO.txt | 6 +- LIB/LIBTUI.S.TBOX.txt | 464 +++++++++++++++++++++++------- LIB/LIBTUI.S.txt | 115 ++++++-- ROOT/asmtest/TESTTUI.S.txt | 2 +- ROOT/ctest/testlib.c.txt | 9 +- SBIN/CIFSD.S.txt | 8 +- SYS/KERNEL.S.STDIO.txt | 9 +- 24 files changed, 1475 insertions(+), 920 deletions(-) create mode 100644 LIB/LIBTUI.S.IO.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index ecd383f880dbaeb1464ce6cf654aefdab2e3c46a..5038543cf4bed44bb876ccb35ec32403bd502b21 100644 GIT binary patch delta 101310 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 delta 105192 zcmb@ucU%+c^EkenvI!s%nuNae4k5G^QA3l!p%gooiwY-pET@Pi0YMQ#LDUrmT{%&M zfWd~|iGmeu7t2{9Dxf0vU^~UacQ&!T-=E*-_xk?vh4a~c+RQvN^UTaM`*5;Py@oRQ zr$}OhhSB~6>>rdh(1)eJ-<>;_#Ww8i?UmJ|ZDGA=i9kmW6_wcQ{8KX3 z@F3KT$=L#tExZh1%xCQ{=FPGyp?IwQy`EH!VVO0u-pkh*d4C_lH+VDl*WOymW!!6n z*)8kt2a@O!*Yo=xa6_bt=JOE|jvxwrAHLR}vTqH35PU26ORxda9gGsEgN+EB2qD6V zSYjx#ny4kt6aNr1`rjoU5g&+h!8SpcpxgPi^KuuN%Pf!eE{5)vE(ctmyLh?|ah19j zxH`EHcFT8jb9ZrH>7L`p@(A(>_n7K&(JjZL+gbDL0*@vA-9yd20=@FRu6gNr>v^Yn zQ{KP(EcB836!}#7RQs6vdXP1?sQvWw_KJJz4;2nLa#V4ha;;OTpW(xVl)ju%p{CnT zBvV$!s=TyfRX$}=tdgS@)97X$yu`Oir$wrc!>9QwqVY_jA{@`OR}7%ci&gYX0L6zF zfbOYg45_Mxr{q#RIZ~|RODxx^cIOwX zT0}*rxWGYSq{wfvQtHWjDPFM(`s4^-q8++VwOfv?Q`M;&QDvVB=AHTd)q3Z6?+Hmu zlA1$E8Z!FxB`LiW(p;x%=?_aOage=9uI#1Uid7*YlslA^N3kk1rPqWWk@R&03~+_D zkYx@iUs~?e*sC_7P&tCnaaQQzGn^`W*R{np34sRBI+Z&!hH07GiL7&~__#m~ zVR(YG!k>bvU(r!cbt)~w$_{?&o7}d_`>Ahp+coHjhi`J#mE8~D=63TX^u$RN4mkBH z-T_Vurv&`^xq9$~Jy#4+x<>^<(aRV6ruN)ETvNvi-JGtcz6=%{=x~H5WhNqF}}4 zcq*6Q7sg&rs5d5^0!h93u348~> zDKQuXtA`RMNb{{{aT}HO+FP|Kft|3GnQ@j0wu4TUABldWfK9|#3X1H+FuT?rwE;c9;Eq~L&FWMdLqzj<)6YT(ra@!)IUx;?7QClM zo75Z)_hpv!YBd}FXPIj_tI;mp)e&Yl(Y&R%U2b^eSo`G!Kogd{r{?vIlBrwNH`=rItsF9~1nVQMyy;4h@*O_NC#M&;2~s3cY~0IN@e6)1h+@{g3#pRhxO?z9We+~imtsLfNR_Iy zmqP2_RqfDBu%{Vl-E&Ua^⁣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�{DB=B*2cK|jo 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 F_kWg~aKZop diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index b159d59ad0b535776ff753e2898b977eddf9f22a..995a3abf925d0cd096f5d2d733dd7696abaedd73 100644 GIT binary patch delta 21965 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 D%xZ;3 delta 21561 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 p&Nu(7Ixu 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 diff --git a/.Floppies/ProDOSFX.BOOT.po b/.Floppies/ProDOSFX.BOOT.po index dd78eb088b62ed406b28f4a58b98e8ddb4bcbba1..1285da6a8c1d8c638c84d29369078aa230989b0e 100644 GIT binary patch delta 18686 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 delta 557 zcmZp8z|ru4V}lHfNw2OcI|IXEbzUw8HUTT$v6?S&*Y|xPOp0 z$QCvq237_qcCfM^2xZzJWnsZCL7ri*Ag8be0!=%`3Rd<3tSk`d4kiYOI#-0cPzFAR zFOo>=z{+&OAWHO{{r%j4#<3(bFf%M*0xPTd|Cj;Hn4HKeoSeoW$8gUQ%$I<8*9>Hh zlVh-_vtEFsx2p@tIsaQ2BpC|yfy&I-4I03n11S>^4si?$2@L=#0f9er7#JC@GlG>d zFg#}D0I6r1EXWqHiA|V|jr~6eY?kDC-ni%y6SKRg*Jehpzl@8Xv9Wmj`uT%7n;GBz zXJ-ls+WfGll5w&ETkE19Y`h_1;SrHh(J`@c@d=4QWuF7t-YhOtGlPSuYbbC dNt35coi=^O%vrO6Dqb)yi(|aB{6jBe2mq-zo__!U diff --git a/BIN/BMP2PIX.S.txt b/BIN/BMP2PIX.S.txt index 643de399..1f811c69 100644 --- a/BIN/BMP2PIX.S.txt +++ b/BIN/BMP2PIX.S.txt @@ -709,22 +709,22 @@ MSG.DONE .CZ "All Done!!!" *-------------------------------------- * LOWRES Patette : https://comp.sys.apple2.narkive.com/lTSrj2ZI/apple-ii-colour-rgb *-------------------------------------- -*PALETTE.RGB .HS 00000000 BLACK -* .HS ffffff00 WHITE -* .HS 7e7e7e00 DARK.GRAY -* .HS 9c9c9c00 DARK.GRAY +*PALETTE.RGB .HS 00000000 BLACK * .HS 604ebd00 DARK.BLUE -* .HS 14cffd00 BLUE -* .HS d0c3ff00 LIGHT.BLUE * .HS 00a36000 DARK.GREEN +* .HS 14cffd00 BLUE +* .HS 60720300 BROWN +* .HS 7e7e7e00 DARK.GRAY * .HS 14f53c00 LIGHT.GREEN * .HS 72ffd000 AQUA * .HS e31e6000 RED * .HS ff44fd00 PURPLE -* .HS ffa0d000 PINK -* .HS 60720300 BROWN +* .HS 9c9c9c00 LIGHT.GRAY +* .HS d0c3ff00 LIGHT.BLUE * .HS ff6a3c00 ORANGE +* .HS ffa0d000 PINK * .HS d0dd8d00 YELLOW +* .HS ffffff00 WHITE *-------------------------------------- *PALETTE.RGB .DA #0,#0,#0,#0 0 Black * .DA #255,#255,#255,#0 15 White diff --git a/BIN/EDIT.S.txt b/BIN/EDIT.S.txt index 4df26276..1a3b54c1 100644 --- a/BIN/EDIT.S.txt +++ b/BIN/EDIT.S.txt @@ -60,7 +60,7 @@ CS.START cld *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN - .DA CS.DOEVENT + .DA CS.DOEVENT .DA CS.QUIT L.SEQ.INIT .DA SEQ.INIT L.SEQ.SCROLLRGN .DA SEQ.SCROLLRGN @@ -152,13 +152,13 @@ CS.RUN >PUSHW L.MSG.TERMCAP .1 jsr GetCh bcs CS.INIT.RTS - - beq .1 - - >SYSCALL PutChar - bcs CS.INIT.RTS - - >LDA.G ScreenW Wait for Response from terminal for W & H + +* beq .11 + +* >SYSCALL PutChar +* bcs CS.INIT.RTS + +.11 >LDA.G ScreenW Wait for Response from terminal for W & H beq .1 jsr SCRN.Init @@ -170,7 +170,7 @@ CS.RUN >PUSHW L.MSG.TERMCAP >STYA.G LineBufBase txa >STA.G hLineBuf - + lda #1 >SYSCALL ArgV bcs .2 No arg, new file.... @@ -186,12 +186,12 @@ CS.RUN >PUSHW L.MSG.TERMCAP .3 jsr SCRN.Repaint bcs CS.RUN.RTS - + jsr CS.RUN.GetBuf64 bcs CS.RUN.RTS >STA.G hFind - + jsr CS.RUN.GetBuf64 bcs CS.RUN.RTS @@ -201,13 +201,13 @@ CS.RUN.LOOP jsr GetCh bcs CS.RUN.RTS I/O error beq .8 - + jsr CS.RUN.LOOP.CharIn bcs .9 .8 >LDA.G bExit bpl CS.RUN.LOOP - + lda #0 .9 pha @@ -221,7 +221,7 @@ CS.RUN.RTS rts CS.RUN.LOOP.CharIn cmp #C.DEL bne .1 - + jmp Ctrl.DEL .1 cmp #C.SPACE @@ -238,8 +238,8 @@ CS.RUN.LOOP.CharIn .2 asl tax jmp (J.CTRL,x) - -.9 rts + +.9 rts *-------------------------------------- CS.RUN.GetBuf64 >LDYAI 64 >SYSCALL GetMem @@ -296,92 +296,88 @@ CS.QUIT ldy #hLineBuf *-------------------------------------- GetCh >SYSCALL GetChar bcs .9 - + cmp #C.CR - bne GetChTranslate - + bne GetCh.1 + 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 * clc .9 rts *-------------------------------------- -GetChTranslate tax +GetCh.1 tax >LDA.G bEscMode - bpl .1 Not in ESC mode + bmi .1 - cpx #'[' \e[ ? - 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 + cpx #C.ESC bne .8 lda #$ff >STA.G bEscMode + inc + clc + rts + +.1 >LDA.G bCSIMode + bmi .11 + + cpx #'[' \e[ ? + bne GetCh.Esc + + lda #$ff + >STA.G bCSIMode + + inc + sta (pData) #EscBufferPtr -.7 lda #0 + clc + rts +*-------------------------------------- +.11 lda (pData) #EscBufferPtr + cmp #15 + bcc .10 -.8 clc -.9 rts +.19 >STZ.G bEscMode + >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 - lda (pData) #EscBufferPtr - tay - - lda #0 - sta (pData) - - lda (pData),y - - cpy #1 - bne .10 - +GetCh.Esc1 txa + ldx #EscChars.Cnt-1 .1 cmp EscChars,x @@ -389,22 +385,31 @@ GetCh.Esc >STZ.G bEscMode dex bpl .1 - - sec - rts -.10 cmp #'R' Response to cursor position query? - beq .3 - - sec + lda #0 + clc rts .2 lda EscAscii,x clc 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 ldy #0 @@ -436,7 +441,7 @@ GetCh.Esc >STZ.G bEscMode stz TmpByte .6 iny - + lda (pData),y cmp #'R' beq .7 @@ -447,7 +452,8 @@ GetCh.Esc >STZ.G bEscMode .7 lda TmpByte >STA.G ScreenW - sec +.8 lda #0 + clc rts *-------------------------------------- GetCh.TmpByte10pA @@ -502,7 +508,7 @@ SEQ.SCROLLUP .CZ "\eD" SEQ.SCROLLCURDN .CS "\e[?7l\e[%d;%dr" 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.TXTCR .CZ "TXT/CR" 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 .DA #0,#64,#hFileName CURPOS,MAXCHAR,hMem - + DLG.SAVE.3 .DA #S.DLG.Ctrl.LBL,#2,#5 .AZ "Filetype :" - + DLG.SAVE.4 .DA #S.DLG.Ctrl.OL,#2,#6 .DA #18 Ctrl-R .DA #FileType @@ -603,15 +609,15 @@ DLG.SAVE.6 .DA #S.DLG.Ctrl.OL,#26,#6 .DA #FileType .DA #2 .AZ "ASM" - + DLG.SAVE.7 .DA #S.DLG.Ctrl.BUT,#40,#8 .DA #C.CR .AZ " Save " DLG.SAVE.8 .DA #S.DLG.Ctrl.BUT,#52,#8 .DA #3 Ctrl-C - .AZ " Cancel " - + .AZ " Cancel " + DLG.SAVE.T .AZ "Save As..." Title DLG.SAVE.S .AZ "CR:Save, Ctrl-R/L/A:Change Type, Ctrl-C:Cancel" 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 .DA #0,#63,#hFind - + DLG.FIND.3 .DA #S.DLG.Ctrl.LBL,#2,#5 .AZ "Replace :" - + DLG.FIND.4 .DA #S.DLG.Ctrl.TB,#2,#6 .DA #0,#63,#hReplace - + DLG.FIND.5 .DA #S.DLG.Ctrl.BUT,#40,#8 .DA #C.CR .AZ " Find " DLG.FIND.6 .DA #S.DLG.Ctrl.BUT,#52,#8 .DA #3 Ctrl-C - .AZ " Cancel " - + .AZ " Cancel " + DLG.FIND.T .AZ "Find/Replace..." Title DLG.FIND.S .AZ "CR:Find, Ctrl-C:Cancel" DLG.FIND.LEN .EQ *-DLG.FIND @@ -663,6 +669,7 @@ DS.START EscBuffer .BS 16 bEscMode .BS 1 +bCSIMode .BS 1 bExit .BS 1 bUnSaved .BS 1 bUpdateTop .BS 1 diff --git a/BIN/GOPHER.S.txt b/BIN/GOPHER.S.txt index f39371ee..c26d2b5b 100644 --- a/BIN/GOPHER.S.txt +++ b/BIN/GOPHER.S.txt @@ -15,7 +15,7 @@ NEW .INB inc/libtcpip.i .INB inc/libtui.i *-------------------------------------- -TIMEOUT.MAX .EQ 200 20 sec. +TIMEOUT.MAX .EQ 250 25 sec. BUFSIZE .EQ 4096 *-------------------------------------- .DUMMY @@ -25,6 +25,7 @@ ZPIPCfgPtr .BS 2 ZPBufPtr .BS 2 ZPLinePtr .BS 2 ZPFramePtr .BS 2 + ZPnFrameLen .BS 2 hBuf .BS 1 @@ -41,6 +42,7 @@ hTBOX .BS 1 TargetHost .BS 2 TargetPort .BS 2 TargetSelector .BS 2 +ZPPtr1 .BS 2 ZS.END .ED *-------------------------------------- * File Header (16 Bytes) @@ -63,23 +65,30 @@ CS.START cld .DA CS.QUIT L.LIBTCPIP .DA LIBTCPIP L.LIBTUI .DA LIBTUI -L.SA.LOCAL .DA SA.LOCAL +L.MSG.ScrTitle0 .DA MSG.ScrTitle0 L.MSG.ScrTitle .DA MSG.ScrTitle + L.MSG.IPKO .DA MSG.IPKO L.MSG.USAGE .DA MSG.USAGE -L.MSG.IOERR .DA MSG.IOERR L.MSG.CRLF .DA MSG.CRLF +L.MSG.NULL .DA MSG.NULL -L.MSG.CONNECTING .DA MSG.CONNECTING -L.MSG.UNKNOWN .DA MSG.UNKNOWN +L.MSG.CONNECT .DA MSG.CONNECT +L.MSG.GETTING .DA MSG.GETTING +L.MSG.OK .DA MSG.OK L.MSG.ERROR .DA MSG.ERROR -L.MSG.CONNECTED .DA MSG.CONNECTED +L.MSG.GOTO .DA MSG.GOTO -J.ITEMTYPES .DA CS.Net.File - .DA CS.Net.Dir - .DA CS.Net.Search - .DA CS.Net.Info +J.items2Buf .DA CS.Net.File2Buf + .DA CS.Net.Dir2Buf + .DA CS.Net.Search2Buf + .DA CS.Net.Info2Buf + +J.items2HL .DA CS.Net.File2HL + .DA CS.Net.Dir2HL + .DA CS.Net.Search2HL + .DA CS.Net.Info2HL .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBTCPIP @@ -87,7 +96,7 @@ CS.INIT >LDYA L.LIBTCPIP bcs .9 sta hLIBTCPIP - + >LDYA L.LIBTUI >SYSCALL LoadLib bcs .9 @@ -97,50 +106,93 @@ CS.INIT >LDYA L.LIBTCPIP .9 CS.INIT.RTS rts *-------------------------------------- +CS.RUN.USAGE >LDYA L.MSG.USAGE + >SYSCALL PutS + lda #E.SYN + sec + rts +*-------------------------------------- CS.RUN jsr CS.Net.Init bcs CS.INIT.RTS - - jsr CS.Scr.Init - bcs CS.INIT.RTS + + lda #1 + >SYSCALL ArgV + bcs CS.RUN.USAGE + + phy + pha + + >PUSHEA.G NET.HyperLink+1 + + pla + >PUSHA + pla + >PUSHA + >SYSCALL strcpy >LDYAI BUFSIZE >SYSCALL GetMem bcs CS.INIT.RTS stx hBuf - + >LDYAI 256 >SYSCALL GetMem bcs CS.INIT.RTS - + >STYA ZPLinePtr stx hLine - - jsr CS.Net.Connect - bcs CS.INIT.RTS - - >LDYA L.MSG.CRLF - jsr CS.Net.Get + + jsr CS.Scr.Init 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.SetStatusOkErr *-------------------------------------- CS.RUN.LOOP lda hSCR >LIBCALL hLIBTUI,LIBTUI.Exec - bcs .99 Error + bcs CS.RUN.LOOP.9 tay beq CS.RUN.LOOP No Event 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) bpl .9 is it a TIMER event? @@ -155,14 +207,14 @@ CS.DOEVENT lda (pEvent) *-------------------------------------- CS.QUIT lda hCTX beq .10 - + >LIBCALL hLIBTUI,LIBTUI.Close .10 lda hLIBTUI beq .1 >SYSCALL UnloadLib - + .1 lda hSocket beq .2 @@ -192,80 +244,142 @@ CS.Net.Init >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? bpl .97 ldy #S.IPCFG.IP+3 - ldx #3 + ldx #4 .1 lda (ZPIPCfgPtr),y - sta SA.LOCAL+S.SOCKADDR.ADDR,x + pha dey dex - bpl .1 + bne .1 - lda #1 - >SYSCALL ArgV - bcs .96 - - >STYA TargetHost + ldy #SA.LOCAL+S.SOCKADDR.ADDR + ldx #4 - lda #2 - >SYSCALL ArgV - bcs .7 - - >SYSCALL AToI - bra .8 - -.7 >LDYAI 70 - -.8 >STYA TargetPort +.2 pla + sta (pData),y + iny + dex + bne .2 lda #AF.INET + >STA.G SA.LOCAL+S.SOCKADDR.AF >STA.G SA.REMOTE+S.SOCKADDR.AF clc 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 sec - .99 rts *-------------------------------------- -CS.Net.Connect >PUSHEA.G SCR.StatusBuf - >PUSHW L.MSG.CONNECTING - >PUSHW TargetHost - >PUSHW TargetPort - >PUSHBI 4 - >SYSCALL SPrintF - jsr CS.Scr.SetStatus - - lda #TIMEOUT.MAX +CS.Net.ParseHL >LEA.G NET.HyperLink+1 + >STYA ZPPtr1 + >STYA TargetHost + + lda (ZPPtr1) + beq .9 + + cmp #'/' + 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 .1 >SLEEP >PUSHEA.G SA.REMOTE+S.SOCKADDR.ADDR - >PUSHW TargetHost + >PUSHEA.G NET.HyperLink+1 >LIBCALL hLIBTCPIP,LIBTCPIP.HST.GetByName - bcc CS.Net.Connect1 + bcc .9 - lda TimeOut + ldx TimeOut bne .1 - >PUSHEA.G SCR.StatusBuf - >PUSHW L.MSG.UNKNOWN - >PUSHW TargetHost - >PUSHBI 2 - >SYSCALL SPrintF - jsr CS.Scr.SetStatus - - sec - rts - -CS.Net.Connect1 >PUSHBI S.SOCKET.T.SEQPKT +.9 rts +*-------------------------------------- +CS.Net.Connect >PUSHBI S.SOCKET.T.SEQPKT >PUSHBI 0 >LIBCALL hLIBTCPIP,LIBTCPIP.Socket bcs .9 @@ -273,7 +387,7 @@ CS.Net.Connect1 >PUSHBI S.SOCKET.T.SEQPKT sta hSocket >PUSHA - >PUSHW L.SA.LOCAL + >PUSHEA.G SA.LOCAL >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcs .9 @@ -288,76 +402,70 @@ CS.Net.Connect1 >PUSHBI S.SOCKET.T.SEQPKT >PUSHB hSocket >PUSHEA.G SA.REMOTE >LIBCALL hLIBTCPIP,LIBTCPIP.Connect - bcc .8 + bcc .9 - cmp #ERR.SKT.NOCONN - sec - bne .9 - - lda TimeOut + ldx TimeOut bne .1 - lda #ERR.SKT.NOCONN - sec .9 rts - -.8 >PUSHEA.G SCR.StatusBuf - >PUSHW L.MSG.CONNECTED - - ldy #SA.REMOTE+S.SOCKADDR.ADDR - -.80 >PUSHB (pData),y - iny - cpy #SA.REMOTE+S.SOCKADDR.PORT - bcc .80 - - iny - >PUSHB (pData),y - dey - >PUSHB (pData),y - - >PUSHBI 6 +*-------------------------------------- +CS.Net.Get >PUSHEA.G SCR.StatusBuf + >PUSHW L.MSG.GETTING + >PUSHW TargetSelector + >PUSHBI 2 >SYSCALL SPrintF jsr CS.Scr.SetStatus - clc - rts -*-------------------------------------- -CS.Net.Get >STYA TargetSelector - + lda hBuf >SYSCALL GetMemPtr >STYA ZPBufPtr - - lda #0 + + lda #0 Reset Buffer sta (ZPBufPtr) - sta (ZPLinePtr) - + >PUSHB hSocket - >PUSHW TargetSelector - + >PUSHW ZPLinePtr + ldy #$ff - + .1 iny lda (TargetSelector),y + sta (ZPLinePtr),y bne .1 - + + lda #C.CR + sta (ZPLinePtr),y + iny + + lda #C.LF + sta (ZPLinePtr),y + iny + + lda #0 + sta (ZPLinePtr),y + iny + >PUSHYA - + >LIBCALL hLIBTCPIP,LIBTCPIP.Send bcs .9 - + + lda #0 + sta (ZPLinePtr) + .2 >SLEEP lda hSocket >LIBCALL hLIBTCPIP,LIBTCPIP.Recv bcc .3 - + cmp #E.NODATA beq .2 - - -* lda hSocket -* >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown + + lda hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown + + stz hSocket clc rts @@ -369,15 +477,15 @@ CS.Net.Get >STYA TargetSelector lda hFrame >SYSCALL FreeMem - + bra .2 - + .9 rts *-------------------------------------- CS.Net.GetFrame sta hFrame >SYSCALL GetMemPtr >STYA ZPFramePtr - + ldy #S.IP.TOTAL.LENGTH+1 lda (ZPFramePtr),y sec @@ -410,43 +518,45 @@ CS.Net.GetLines ldy #$ff .2 jsr CS.Net.GetChar bcs .8 - + cmp #C.LF beq .3 - + sta (ZPLinePtr),y iny bra .2 - + .3 lda #0 sta (ZPLinePtr),y - + jsr CS.Net.Line2Buf - + lda #0 sta (ZPLinePtr) tay bra .2 - -.8 clc + +.8 lda #0 + sta (ZPLinePtr),y + clc rts *-------------------------------------- CS.Net.Line2Buf lda (ZPLinePtr) - ldx #ITEMTYPES.L-1 + ldx #ITEMTYPES.L -.1 cmp ITEMTYPES,x +.1 cmp ITEMTYPES-1,x beq .2 dex - bpl .1 - + bne .1 + bra .6 .2 txa asl tax - jmp (J.ITEMTYPES,x) + jmp (J.items2Buf-2,x) .6 ldy #$ff @@ -454,7 +564,7 @@ CS.Net.Line2Buf lda (ZPLinePtr) lda (ZPLinePtr),y sta (ZPBufPtr),y bne .7 - + tya clc adc ZPBufPtr @@ -465,11 +575,11 @@ CS.Net.Line2Buf lda (ZPLinePtr) .8 rts *-------------------------------------- -* hyperlinks: [[text to show|targetUrl]] +* hyperlinks: [[text to show]targetUrl] *-------------------------------------- -CS.Net.File -CS.Net.Dir -CS.Net.Search +CS.Net.File2Buf +CS.Net.Dir2Buf +CS.Net.Search2Buf lda #'[' jsr CS.Net.Char2Buf jsr CS.Net.Char2Buf @@ -478,46 +588,48 @@ CS.Net.Search jsr CS.Net.Token2Buf - lda #'|' + lda #']' jsr CS.Net.Char2Buf phy save Selector pos - + + txa + jsr CS.Net.Char2Buf Type + jsr CS.Net.SkipToken - + jsr CS.Net.Token2Buf address - + lda #':' jsr CS.Net.Char2Buf jsr CS.Net.Token2Buf port ply - + jsr CS.Net.Token2Buf selector lda #']' jsr CS.Net.Char2Buf + + lda #C.CR jsr CS.Net.Char2Buf -.8 lda #C.CR - jsr CS.Net.Char2Buf - lda #0 sta (ZPBufPtr) - + rts *-------------------------------------- -CS.Net.Info ldy #0 +CS.Net.Info2Buf ldy #0 jsr CS.Net.Token2Buf lda #C.CR jsr CS.Net.Char2Buf - + lda #0 sta (ZPBufPtr) - + rts *-------------------------------------- CS.Net.Token2Buf @@ -525,68 +637,81 @@ CS.Net.Token2Buf lda (ZPLinePtr),y cmp #C.TAB beq .8 - + cmp #C.CR beq .8 - + jsr CS.Net.Char2Buf bra CS.Net.Token2Buf - -.8 rts + +.8 rts *-------------------------------------- CS.Net.SkipToken iny lda (ZPLinePtr),y cmp #C.TAB beq .8 - + cmp #C.CR beq .8 - + bra CS.Net.SkipToken - -.8 rts + +.8 rts *-------------------------------------- CS.Net.Char2Buf sta (ZPBufPtr) inc ZPBufPtr bne .8 - + inc ZPBufPtr+1 - -.8 rts + +.8 rts *-------------------------------------- CS.Net.GetChar inc ZPnFrameLen bne .1 - + inc ZPnFrameLen+1 beq .9 - + .1 lda (ZPFramePtr) inc ZPFramePtr bne .8 - + inc ZPFramePtr+1 - -.8 clc + +.8 clc rts .9 sec 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 - bcs .9 + bcs .99 sta hCTX - + >PUSHA hCTX >PUSHBI S.OBJ.F.bTitle+S.OBJ.F.bStatus >LIBCALL hLIBTUI,LIBTUI.NewScrn - bcs .9 + bcs .99 sta hSCR - jsr CS.Scr.SetTitle + jsr CS.Scr.SetTitle0 jsr CS.Scr.SetStatus >PUSHB hSCR @@ -600,18 +725,31 @@ CS.Scr.Init >LIBCALL hLIBTUI,LIBTUI.Init >PUSHYA >PUSHWI BUFSIZE >LIBCALL hLIBTUI,LIBTUI.NewTBox - bcs .9 - +.99 bcs .9 + sta hTBOX - + >LIBCALL hLIBTUI,LIBTUI.Activate - -.9 rts + bcs .9 + + >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 >PUSHW L.MSG.ScrTitle - >PUSHW TargetHost - >PUSHW TargetPort + >PUSHW TargetHost + >PUSHW TargetPort >PUSHW TargetSelector >PUSHBI 6 >SYSCALL SPrintF @@ -630,6 +768,43 @@ CS.Scr.SetBuf >PUSHB hTBOX >LIBCALL hLIBTUI,LIBTUI.SetProp 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 >PUSHB hSCR >PUSHBI S.OBJ.pSTATUS @@ -643,34 +818,32 @@ hLIBTCPIP .BS 1 LIBTUI .AZ "libtui" hLIBTUI .BS 1 *-------------------------------------- -MSG.ScrTitle .CZ "A2osX-GOPHER %s:%D/%s : Quit" +MSG.ScrTitle0 .CZ "A2osX-GOPHER - uit" +MSG.ScrTitle .CZ "A2osX-GOPHER %s:%D/%s - uit" *-------------------------------------- MSG.IPKO .CZ "TCP/IP Not Loaded/Configured.\r\n" -MSG.USAGE .CZ "Usage : GOPHER [port]\r\n" -MSG.IOERR .CS "I/O Error." +MSG.USAGE .CS "Usage : GOPHER LDYA L.LIBPAK CS.RUN >INC.G ArgIndex >SYSCALL ArgV bcs .8 + >STYA ZPPtr1 lda (ZPPtr1) @@ -115,7 +118,7 @@ CS.RUN >INC.G ArgIndex bne .9 >LDYA ZPPtr1 - jsr InitSrcDirYA + jsr X.InitSrcDirYA bcc CS.RUN rts @@ -128,6 +131,7 @@ CS.RUN >INC.G ArgIndex >LDYAI 256 >SYSCALL GetMem bcs .99 + >STYA ZPFullPath txa >STA.G hSrcFullPath @@ -156,6 +160,7 @@ CS.RUN >INC.G ArgIndex >LDYAI CHNK.SIZE >SYSCALL GetMem bcs .98 + >STYA ZPSrcBufPtr txa >STA.G hSrcBuf @@ -163,6 +168,7 @@ CS.RUN >INC.G ArgIndex >LDYAI CHNK.SIZE >SYSCALL GetMem bcs .98 + >STYA ZPDstBufPtr txa >STA.G hDstBuf @@ -192,13 +198,13 @@ CS.RUN.LOOP ldy #S.PS.hStdIn .1 lda bPause bne CS.RUN.LOOP Pause... *-------------------------------------- - jsr GetEntry + jsr X.GetEntry bcs .9 - jsr FilterMatch + jsr X.IncludeMatch bcs .8 no match, skip.... - jsr ExcludeMatch + jsr X.IgnoreMatch bcc .8 match, skip ldy #S.STAT.MODE+1 @@ -211,18 +217,20 @@ CS.RUN.LOOP ldy #S.PS.hStdIn jsr CS.RUN.DIR bcs .99 + bra .8 .6 jsr CS.RUN.FILE bcs .99 + bra .8 -.9 jsr LeaveSubDir +.9 jsr X.LeaveSubDir bcs .90 - jsr BasePath.. + jsr X.BasePath.. -.8 jsr GetNextEntry +.8 jsr X.GetNextEntry jmp CS.RUN.LOOP .90 lda #0 @@ -264,7 +272,7 @@ CS.RUN.DIR lda bRecurse bcs .9 >LDYA ZPFileName - jsr EnterSubDirYA + jsr X.EnterSubDirYA .9 jmp CS.RUN.CheckErr @@ -386,6 +394,7 @@ CS.RUN.CloseFile bcs .9 >STZ.G hFile + .9 rts *-------------------------------------- CS.RUN.Pak >PUSHEA.G PAKSTAT @@ -394,7 +403,9 @@ CS.RUN.Pak >PUSHEA.G PAKSTAT >PUSHW ZPSrcBufPtr >LIBCALL hLIB,LIBPAK.Pak bcs .9 + >STYA.G Shunk.DstSize + .9 rts *-------------------------------------- CS.RUN.OpenArc >LDA.G ArcName @@ -428,8 +439,6 @@ CS.RUN.AppendArc >SYSCALL FOpen bcs CS.RUN.OpenArc.RTS >STA.G hArcFile - rts - >PUSHB.G hArcFile >PUSHLZ @@ -451,6 +460,7 @@ CS.RUN.AppendArc .2 lda ARC.Header,y cmp (ZPSrcBufPtr),y bne .99 + dey bpl .2 @@ -458,10 +468,6 @@ CS.RUN.AppendArc >PUSHLZ >PUSHBI SEEK.END >SYSCALL FSeek -* bcc .9 -* cmp #MLI.E.EOF -* bne .99 -* clc .9 rts .99 >LDYA L.MSG.E.IARC @@ -583,22 +589,27 @@ CS.RUN.WriteArcByteA CS.DOEVENT sec rts *-------------------------------------- -CS.QUIT jsr LeaveSubDir +CS.QUIT jsr X.LeaveSubDir bcc CS.QUIT ldy #hExclude jsr .7 - ldy #hFilter + + ldy #hInclude jsr .7 + ldy #hSrcFullPath jsr .7 + ldy #hDstBuf jsr .7 + ldy #hSrcBuf jsr .7 >LDA.G hArcFile beq .1 + >SYSCALL FClose .1 lda hLIB @@ -611,7 +622,9 @@ CS.QUIT jsr LeaveSubDir .7 lda (pData),y beq .8 + >SYSCALL FreeMem + .8 rts *-------------------------------------- CS.RUN.CheckOpt ldy #1 @@ -621,6 +634,7 @@ CS.RUN.CheckOpt ldy #1 .1 cmp OptionList,x beq .2 + dex bpl .1 diff --git a/INC/LIBTUI.I.txt b/INC/LIBTUI.I.txt index 17bcb803..e9bcfde9 100644 --- a/INC/LIBTUI.I.txt +++ b/INC/LIBTUI.I.txt @@ -80,7 +80,7 @@ S.OBJ.pMenu .EQ 18 S.OBJ.pStatus .EQ 20 S.OBJ.pBuf .EQ 22 S.OBJ.BufSize .EQ 24 -* +S.OBJ.pVar .EQ 26 *-------------------------------------- S.OBJ.Childs .EQ 32 * @@ -98,31 +98,29 @@ S.TLINE.Ptr .EQ S.OBJ S.TLINE.Len .EQ S.OBJ+1 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.DocY .EQ S.OBJ+2 S.TBOX.HScroll .EQ S.OBJ+4 S.TBOX.VScroll .EQ S.OBJ+6 -S.TBOX.BufPtr .EQ S.OBJ+8 -S.TBOX.BufCnt .EQ S.OBJ+10 -S.TBOX.SelBegin .EQ S.OBJ+12 -S.TBOX.SelEnd .EQ S.OBJ+14 +S.TBOX.SelBegin .EQ S.OBJ+8 +S.TBOX.SelEnd .EQ S.OBJ+10 +S.TBOX.BufPtr .EQ S.OBJ+12 +S.TBOX.BufCnt .EQ S.OBJ+14 * S.TBOX .EQ S.OBJ+16 *-------------------------------------- S.LBOX.Idx .EQ S.OBJ+0 -S.LBOX.VScroll .EQ S.OBJ+1 -S.LBOX.pVar .EQ S.OBJ+2 +S.LBOX.VScroll .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.EV .EQ S.OBJ+1 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.EV .EQ S.OBJ+1 @@ -132,13 +130,14 @@ S.BUT .EQ S.OBJ+4 *-------------------------------------- S.RADIO.HotKey .EQ S.OBJ+0 S.RADIO.EV .EQ S.OBJ+1 -S.RADIO.pVar .EQ S.OBJ+2 -S.RADIO.Idx .EQ S.OBJ+4 +S.RADIO.Idx .EQ S.OBJ+2 * -S.RADIO .EQ S.OBJ+6 +S.RADIO .EQ S.OBJ+4 *-------------------------------------- EV.RESIZE .EQ $80 EV.QUIT .EQ $81 +EV.HL.SELECTED .EQ $82 +EV.HL.PRESSED .EQ $83 *-------------------------------------- MAN SAVE inc/libtui.i diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 48983643..9a7f69ce 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -335,9 +335,9 @@ SKT.shutdown pha lda (ZPPtrSKT),y cmp #S.SOCKET.TCP.S.CLOSING bne .10 - + inc S.SOCKET.TCP.S.TIMEWT - + sta (ZPPtrSKT),y pla clc @@ -349,15 +349,19 @@ SKT.shutdown pha lda (ZPPtrSKT),y cmp #S.SOCKET.TCP.S.ESTBLSH bne .1 - - lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK - jsr TCP.OUT.SendOptA Send FIN/ACK + + jsr SKT.SendOptFIN lda #S.SOCKET.TCP.S.FINWT1 jmp SKT.StoreTCB.S .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 jsr TCP.OUT.SendOptA Send RST @@ -386,6 +390,19 @@ 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 @@ -423,7 +440,7 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen lda (ZPPtrSKT),y and #S.TCP.OPTIONS.ACK beq .8 - + jmp TCP.OUT.SendOptA .8 jsr SKT.CheckStream @@ -463,6 +480,7 @@ SKT.GetDataFromSktIn .1 inx Check if room left in dest buffer bne .2 + pla inc beq .8 @@ -477,10 +495,12 @@ SKT.GetDataFromSktIn sta (ZPDataInPtr) inc ZPDataInPtr bne .3 + inc ZPDataInPtr+1 .3 iny bne .1 + inc ZPTmpPtr1+1 inc SKT.Cache+S.SOCKET.TCP.INTAIL+1 diff --git a/LIB/LIBTCPIP.S.TCP.txt b/LIB/LIBTCPIP.S.TCP.txt index 78b42434..e9371f77 100644 --- a/LIB/LIBTCPIP.S.TCP.txt +++ b/LIB/LIBTCPIP.S.TCP.txt @@ -237,12 +237,9 @@ TCP.IN.JMP.ESTBLSH and #S.TCP.OPTIONS.FIN beq .8 - jsr SKT.StoreTCB update socket - - lda #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK - jsr TCP.OUT.SendOptA FIN received, Send FIN.ACK - - lda #S.SOCKET.TCP.S.LASTACK + jsr TCP.IN.ACKTheFIN + + lda #S.SOCKET.TCP.S.CLWAIT jmp SKT.StoreTCB.S .8 ldy #S.SOCKET.TCP.O @@ -262,6 +259,10 @@ TCP.IN.JMP.ESTBLSH lda #S.TCP.OPTIONS.ACK .91 jmp TCP.OUT.SendOptA *-------------------------------------- +TCP.IN.JMP.CLWAIT + clc Wait for SKT.shutdown + rts +*-------------------------------------- TCP.IN.JMP.LASTACK ldy #S.TCP.OPTIONS only accept ACK packet lda (ZPFrameInPtr),y @@ -273,10 +274,8 @@ TCP.IN.JMP.LASTACK ldy #S.SOCKET.TCP.S lda #S.SOCKET.TCP.S.TIMEWT sta (ZPPtrSKT),y -.8 -*-------------------------------------- -TCP.IN.JMP.CLWAIT - clc Wait for SKT.shutdown + +.8 clc rts *-------------------------------------- TCP.IN.JMP.FINWT1 @@ -298,23 +297,9 @@ TCP.IN.JMP.FINWT2 TCP.IN.2TIMEWT jsr SKT.GetTCB - ldx #3 + jsr TCP.IN.ACKTheFIN -.1 inc SKT.Cache+S.SOCKET.TCP.INSEQNUM,x - 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 + jsr TCP.OUT.SendACK FIN received, Send ACK bcs TCP.IN.JMP.TIMEWT.RTS lda #S.SOCKET.TCP.S.TIMEWT @@ -344,6 +329,28 @@ TCP.IN.ACKTheSYN 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 ldy #S.IP.TOTAL.LENGTH+1 lda (ZPFrameInPtr),y diff --git a/LIB/LIBTUI.S.CBOX.txt b/LIB/LIBTUI.S.CBOX.txt index a9c8f6bd..70b5f725 100644 --- a/LIB/LIBTUI.S.CBOX.txt +++ b/LIB/LIBTUI.S.CBOX.txt @@ -8,7 +8,7 @@ CBOX.New lda #S.OBJ.T.CBOX jsr OBJ.Create bcs .9 - ldy #S.CBOX.pVar + ldy #S.OBJ.pVar jsr OBJ.PullWordY ldy #S.CBOX.pLabel @@ -69,7 +69,7 @@ CBOX.Run ldy #S.BUT.HotKey cmp #C.SPACE bne .9 -.8 ldy #S.CBOX.pVar +.8 ldy #S.OBJ.pVar lda (ZPObjPtr),y sta ZPPtr1 iny @@ -104,7 +104,7 @@ CBOX.Draw ldx #'(' .10 txa jsr LB.COut - ldy #S.CBOX.pVar + ldy #S.OBJ.pVar lda (ZPObjPtr),y sta ZPPtr1 iny diff --git a/LIB/LIBTUI.S.CTX.txt b/LIB/LIBTUI.S.CTX.txt index c1ead8ba..dcc3a0a3 100644 --- a/LIB/LIBTUI.S.CTX.txt +++ b/LIB/LIBTUI.S.CTX.txt @@ -12,7 +12,7 @@ NEW * CC = success, A = hCTX *\-------------------------------------- CTX.Init >LDYA L.SEQ.INIT - jsr CTX.fputs + jsr IO.fputs bcs .99 >LDYAI S.CTX @@ -32,23 +32,19 @@ CTX.Init >LDYA L.SEQ.INIT dey bpl .10 - jsr CTX.GetC.Reset + jsr IO.GetC.Reset -.1 >SLEEP - - jsr CTX.GetC - bcs .98 - - beq .2 - - jsr CTX.PutC +.1 >SLEEP + + jsr IO.GetC bcs .98 .2 ldy #S.CTX.W lda (ZPCtxPtr),y bne .8 - lda (pStack) +.3 lda (pStack) + dec sta (pStack) bne .1 @@ -63,6 +59,7 @@ CTX.Init >LDYA L.SEQ.INIT sta (ZPCtxPtr),y .8 inc pStack Discard counter + >PULLA hCTX clc .99 rts @@ -90,291 +87,21 @@ CTX.Close pha >SYSCALL2 GetMemPtr >STYA ZPCtxPtr - + lda (ZPCtxPtr) S.CTX.hSCRN beq .1 - >DEBUG + jsr LIB.Destroy .1 pla >SYSCALL2 FreeMem >LDYA L.SEQ.CLOSE - jsr CTX.fputs + jsr IO.fputs clc 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 SAVE usr/src/lib/libtui.s.ctx LOAD usr/src/lib/libtui.s diff --git a/LIB/LIBTUI.S.DLG.txt b/LIB/LIBTUI.S.DLG.txt index a061556c..dafc6914 100644 --- a/LIB/LIBTUI.S.DLG.txt +++ b/LIB/LIBTUI.S.DLG.txt @@ -43,11 +43,11 @@ DLG.New lda #S.OBJ.T.DLG sta (ZPObjPtr),y jsr OBJ.SetX2Y2 - + lda hObj * clc - rts - + rts + .9 >POP 5 rts *-------------------------------------- diff --git a/LIB/LIBTUI.S.IO.txt b/LIB/LIBTUI.S.IO.txt new file mode 100644 index 00000000..a87b0fda --- /dev/null +++ b/LIB/LIBTUI.S.IO.txt @@ -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 diff --git a/LIB/LIBTUI.S.LB.txt b/LIB/LIBTUI.S.LB.txt index 0e394beb..cf406ef7 100644 --- a/LIB/LIBTUI.S.LB.txt +++ b/LIB/LIBTUI.S.LB.txt @@ -92,22 +92,6 @@ LB.PrintF >SYSCALL2 SPrintF .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) inc ZPLineBufPtr bne .1 @@ -121,33 +105,6 @@ LB.COut sta (ZPLineBufPtr) .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 SAVE usr/src/lib/libtui.s.lb LOAD usr/src/lib/libtui.s diff --git a/LIB/LIBTUI.S.LBOX.txt b/LIB/LIBTUI.S.LBOX.txt index 8e5a5fb4..e6eb26fc 100644 --- a/LIB/LIBTUI.S.LBOX.txt +++ b/LIB/LIBTUI.S.LBOX.txt @@ -8,7 +8,7 @@ LBOX.New lda #S.OBJ.T.LBOX jsr OBJ.Create bcs .9 - ldy #S.LBOX.pVar + ldy #S.OBJ.pVar jsr OBJ.PullWordY ldy #S.OBJ.pBuf diff --git a/LIB/LIBTUI.S.OBJ.txt b/LIB/LIBTUI.S.OBJ.txt index 50b96828..06614156 100644 --- a/LIB/LIBTUI.S.OBJ.txt +++ b/LIB/LIBTUI.S.OBJ.txt @@ -11,7 +11,7 @@ OBJ.Create pha Type bcs .9 >STYA ZPObjPtr - + stx hObj pla @@ -19,15 +19,15 @@ OBJ.Create pha Type tax ldy OBJ.SIZES,x - + lda #0 - + dey - + .1 sta (ZPObjPtr),y dey bne .1 - + * clc rts @@ -182,26 +182,28 @@ OBJ.SetX2Y2 ldy #S.OBJ.X1 *-------------------------------------- OBJ.Exec >PUSHA hOBJ jsr LIB.GetOBJ - + jsr LIB.GetCTX - -.1 jsr CTX.GetC + +.1 >SLEEP + + jsr IO.GetC bcs .9 - + cmp #EV.RESIZE clc beq .99 - + tay beq .1 >PUSHA jsr OBJ.Run inc pStack - + tay beq .1 no event, no error - + .9 inc pStack .99 rts @@ -213,11 +215,11 @@ OBJ.Run ldx ZPObjPtr phx ldx ZPObjPtr+1 phx - + ldy #1 lda (pStack),y - jsr LIB.GetOBJ - + jsr LIB.GetOBJ + ldy #S.OBJ.S lda (ZPObjPtr),y and #S.OBJ.S.bDisabled @@ -235,11 +237,11 @@ OBJ.Run ldx ZPObjPtr tax bne .8 error / event - + bcc .8 - + ldy #S.OBJ.Childs - + .1 lda (ZPObjPtr),y beq .5 @@ -272,12 +274,12 @@ OBJ.Run ldx ZPObjPtr stx ZPObjPtr+1 plx stx ZPObjPtr - + rts - + .80 lda (ZPObjPtr) S.OBJ.T tax - jmp (J.ObjRun,x) + jmp (J.ObjRun,x) *-------------------------------------- OBJ.Draw >PUSHA hObj @@ -419,11 +421,11 @@ OBJ.Draw.Top.I jsr LB.Init ldx #SEQ.BORDERTR-SEQS jsr LB.SeqOut -.7 jmp LB.Out +.7 jmp IO.LBWrite *-------------------------------------- OBJ.Draw.Body lda (pStack) jsr LIB.GetOBJ - + OBJ.Draw.Body.I ldy #S.OBJ.InnerY lda (ZPObjPtr),y >PUSHA Start @@ -462,7 +464,7 @@ OBJ.Draw.Lines jsr OBJ.CurOff ldx #SEQ.NORMAL-SEQS jsr LB.SeqOut - + plp beq .4 @@ -480,7 +482,7 @@ OBJ.Draw.Lines jsr OBJ.CurOff ldx #SEQ.BORDERV-SEQS jsr LB.SeqOut -.4 jsr LB.Out +.4 jsr IO.LBWrite bcs .9 lda (pStack) Relative Y @@ -607,7 +609,7 @@ OBJ.Draw.Bottom.I ldx #SEQ.BORDERBR-SEQS jsr LB.SeqOut -.7 jmp LB.Out +.7 jmp IO.LBWrite *-------------------------------------- OBJ.GetProp ldy #1 hObj lda (pStack),y @@ -626,37 +628,19 @@ OBJ.GetProp ldy #1 hObj * clc rts *-------------------------------------- -OBJ.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 - - >PULLA prop - inc pStack hObj - cmp #S.OBJ.pTitle +OBJ.SetProp cpy #S.OBJ.pTitle bne .1 - - jmp OBJ.Draw.Top.I - -.1 cmp #S.OBJ.pBuf - bne .2 - jmp OBJ.Draw.Body.I - -.2 cmp #S.OBJ.pStatus + jsr OBJ.Draw.Top.I + ldy #0 + rts + +.1 cpy #S.OBJ.pStatus bne .8 - - jmp OBJ.Draw.Bottom.I + + jsr OBJ.Draw.Bottom.I + ldy #0 + rts .8 clc rts @@ -712,11 +696,11 @@ OBJ.FindActive ldx ZPObjPtr jsr LIB.GetOBJ ldy #S.OBJ.Childs - + .1 phy lda (ZPObjPtr),y beq .7 - + pha >SYSCALL2 GetMemPtr @@ -724,39 +708,39 @@ OBJ.FindActive ldx ZPObjPtr ldy #S.OBJ.S lda (ZPPtr1),y S.OBJ.S.bActive bmi .8 - + pla .7 ply iny cpy #S.OBJ bne .1 - + * sec bra .80 - + .8 pla ply clc - + .80 plx stx ZPObjPtr+1 plx stx ZPObjPtr - + rts *-------------------------------------- OBJ.CurUpdPos 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 - bpl .8 + lda (ZPObjPtr),y S.OBJ.S.bActive + bpl .8 jsr LB.Init - + ldy #S.OBJ.InnerX lda (ZPObjPtr),y clc @@ -772,19 +756,19 @@ OBJ.CurUpdPos ldy #S.OBJ.F tay jsr LB.GotoXY - jsr LB.Out - + jsr IO.LBWrite + .8 clc rts *-------------------------------------- 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 - bpl .8 + lda (ZPObjPtr),y S.OBJ.S.bActive + bpl .8 bit #S.OBJ.S.bCurOn bne .8 @@ -793,7 +777,7 @@ OBJ.CurOn ldy #S.OBJ.F sta (ZPObjPtr),y jsr LB.Init - + ldy #S.OBJ.InnerX lda (ZPObjPtr),y clc @@ -811,9 +795,9 @@ OBJ.CurOn ldy #S.OBJ.F ldx #SEQ.CURON-SEQS jsr LB.SeqOut - - jsr LB.Out - + + jsr IO.LBWrite + .8 lda #0 clc rts @@ -821,31 +805,31 @@ 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 - bpl .8 + lda (ZPObjPtr),y S.OBJ.S.bActive + bpl .8 bit #S.OBJ.S.bCurOn beq .8 eor #S.OBJ.S.bCurOn sta (ZPObjPtr),y - + jsr LB.Init ldx #SEQ.CUROFF-SEQS jsr LB.SeqOut - - jmp LB.Out - + + jmp IO.LBWrite + .8 lda #0 clc rts *-------------------------------------- OBJ.ZeroWordAtY lda #0 - lda (ZPObjPtr),y + sta (ZPObjPtr),y iny sta (ZPObjPtr),y rts @@ -854,9 +838,9 @@ OBJ.IncWordAtY lda (ZPObjPtr),y inc sta (ZPObjPtr),y bne .8 - + iny - + lda (ZPObjPtr),y inc sta (ZPObjPtr),y @@ -869,7 +853,7 @@ OBJ.DecWordAtY clc sta (ZPObjPtr),y iny - + lda (ZPObjPtr),y sbc #0 sta (ZPObjPtr),y @@ -888,9 +872,9 @@ OBJ.GetLineXAtY lda (ZPObjPtr),y iny lda (ZPObjPtr),y sta ZPPtr1+1 - + stz TempI - + .1 lda (ZPPtr1) beq .9 @@ -905,7 +889,7 @@ OBJ.GetLineXAtY lda (ZPObjPtr),y lda (ZPPtr1),y clc beq .5 - + cmp #C.CR bne .4 @@ -915,13 +899,13 @@ OBJ.GetLineXAtY lda (ZPObjPtr),y adc ZPPtr1 sta ZPPtr1 bcc .1 - + inc ZPPtr1+1 bra .1 .8 clc rts - + .9 sec rts *-------------------------------------- diff --git a/LIB/LIBTUI.S.RADIO.txt b/LIB/LIBTUI.S.RADIO.txt index e381d764..a0008498 100644 --- a/LIB/LIBTUI.S.RADIO.txt +++ b/LIB/LIBTUI.S.RADIO.txt @@ -8,7 +8,7 @@ RADIO.New lda #S.OBJ.T.RADIO jsr OBJ.Create bcs .9 - ldy #S.RADIO.pVar + ldy #S.OBJ.pVar jsr OBJ.PullWordY ldy #S.OBJ.pBuf @@ -87,7 +87,7 @@ RADIO.Run ldy #S.OBJ.S cmp #C.SPACE bne .2 - ldy #S.RADIO.pVar + ldy #S.OBJ.pVar lda (ZPObjPtr),y sta ZPPtr1 iny @@ -154,7 +154,7 @@ RADIO.Draw lda (pStack) Relative Y jsr OBJ.GetLineXAtY bcs .8 - ldy #S.RADIO.pVar + ldy #S.OBJ.pVar lda (ZPObjPtr),y sta ZPPtr2 iny diff --git a/LIB/LIBTUI.S.TBOX.txt b/LIB/LIBTUI.S.TBOX.txt index 4dd0c4f6..2da46629 100644 --- a/LIB/LIBTUI.S.TBOX.txt +++ b/LIB/LIBTUI.S.TBOX.txt @@ -33,37 +33,53 @@ TBOX.Run ldy #S.OBJ.S lda (ZPObjPtr),y bpl TBOX.RUN.Ignore + ldy #S.OBJ.F + lda (ZPObjPtr),y + and #S.OBJ.F.bEdit + bne TBOX.Run.RW + 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 bcs .1 + cmp #27 + bcs TBOX.RUN.Ignore + asl tax - jmp (J.TBOX.RUN,x) + jmp (J.TBOX.RUN.RW,x) .1 cmp #C.DEL - beq .3 + beq .2 jsr TBOX.GetBuf jsr TBOX.ToBuf1 - bcs .8 Buffer full + bcs TBOX.RUN.Ignore Buffer full jsr TBOX.RUN.FS1 - bit bRepaintAll - bmi .2 + bra .3 - jsr OBJ.CurUpdPos +.2 jsr TBOX.GetBuf - jmp TBOX.DrawCurLine - -.2 jmp TBOX.DrawAllLines - -.3 jsr TBOX.GetBuf jsr TBOX.Delete1 - bcs .8 Buffer Empty + bcs TBOX.RUN.Ignore Buffer Empty - bit bRepaintAll +.3 bit bRepaintAll bmi .4 jsr OBJ.CurUpdPos @@ -71,13 +87,185 @@ TBOX.Run ldy #S.OBJ.S jmp TBOX.DrawCurLine .4 jmp TBOX.DrawAllLines - -.8 *-------------------------------------- TBOX.RUN.Ignore lda #0 sec 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 ldy #S.TBOX.BufPtr lda (ZPObjPtr),y @@ -91,7 +279,7 @@ TBOX.RUN.SelBegin dey sta (ZPObjPtr),y - rts + jmp TBOX.DrawAllLines *-------------------------------------- TBOX.RUN.SelEnd ldy #S.TBOX.BufPtr lda (ZPObjPtr),y @@ -105,7 +293,7 @@ TBOX.RUN.SelEnd ldy #S.TBOX.BufPtr dey sta (ZPObjPtr),y - rts + jmp TBOX.DrawAllLines *-------------------------------------- TBOX.RUN.BS ldy #S.TBOX.BufPtr+1 lda (ZPObjPtr),y @@ -135,7 +323,7 @@ TBOX.RUN.BS ldy #S.TBOX.BufPtr+1 *-------------------------------------- TBOX.RUN.LF jsr TBOX.GetBuf -TBOX.RUN.LF1 jsr TBOX.GetCurlineInAX +TBOX.RUN.LF1 jsr TBOX.GetDocYInAX inx bne .1 @@ -158,7 +346,7 @@ TBOX.RUN.VT jsr TBOX.GetBuf jsr OBJ.DecWordAtY -TBOX.RUN.VT1 jsr TBOX.GetCurlineInAX +TBOX.RUN.VT1 jsr TBOX.GetDocYInAX jsr TBOX.GetLineAX jsr TBOX.GetLineLenInAXC @@ -210,17 +398,11 @@ TBOX.RUN.FS1 lda (ZPPtr2) ldy #S.TBOX.BufPtr jsr OBJ.IncWordAtY + ldy #S.TBOX.DocX cpx #C.CR - beq .1 + bne .7 - ldy #S.TBOX.DocX - bra .7 - -.1 lda #0 - ldy #S.TBOX.DocX - sta (ZPObjPtr),y - iny - sta (ZPObjPtr),y +.1 jsr OBJ.ZeroWordAtY ldy #S.TBOX.DocY @@ -231,25 +413,18 @@ TBOX.RUN.FS1 lda (ZPPtr2) .8 clc rts *-------------------------------------- -TBOX.RUN.SOL lda #0 - ldy #S.TBOX.DocX - sta (ZPObjPtr),y - iny - sta (ZPObjPtr),y +TBOX.RUN.SOL ldy #S.TBOX.DocX + jsr OBJ.ZeroWordAtY - jsr TBOX.GetCurlineInAX + jsr TBOX.GetDocYInAX jsr TBOX.GetLineAX ldy #S.TBOX.BufPtr - lda TempC BufPtr at SOL - sta (ZPObjPtr),y - iny - lda TempC+1 - sta (ZPObjPtr),y + jsr TBOX.SetTempCAtY BufPtr at SOL jmp TBOX.CheckViewPort *-------------------------------------- -TBOX.RUN.EOL jsr TBOX.GetCurlineInAX +TBOX.RUN.EOL jsr TBOX.GetDocYInAX jsr TBOX.GetLineAX jsr TBOX.GetLineLenInAXC @@ -278,11 +453,8 @@ TBOX.RUN.CR jsr TBOX.GetBuf jsr TBOX.ToBuf1 bcs .8 Buffer full - lda #0 ldy #S.TBOX.DocX - sta (ZPObjPtr),y - iny - sta (ZPObjPtr),y + jsr OBJ.ZeroWordAtY jsr TBOX.RUN.LF1 @@ -309,25 +481,18 @@ TBOX.RUN.QUIT lda #3 User Interrupt rts *-------------------------------------- TBOX.RUN.Home ldy #S.TBOX.DocX + jsr OBJ.ZeroWordAtY - ldx #4 DocX + DocY - - lda #0 - -.1 sta (ZPObjPtr),y - iny - dex - bne .1 + ldy #S.TBOX.DocY + jsr OBJ.ZeroWordAtY ldy #S.TBOX.BufPtr - sta (ZPObjPtr),y - iny - sta (ZPObjPtr),y + jsr OBJ.ZeroWordAtY jmp TBOX.CheckViewPort *-------------------------------------- TBOX.RUN.EraseCL - jsr TBOX.GetCurlineInAX + jsr TBOX.GetDocYInAX jsr TBOX.GetLineAX jsr TBOX.GetLineLenInAXC jsr TBOX.DeleteAXC @@ -423,7 +588,7 @@ TBOX.DrawCurLine jmp OBJ.Draw.Lines *-------------------------------------- -* hyperlinks: [[text to show|targetUrl]] +* hyperlinks: [[text to show]targetUrl] *-------------------------------------- TBOX.Draw ldy #S.TBOX.VScroll lda (ZPObjPtr),y @@ -457,7 +622,8 @@ TBOX.Draw ldy #S.TBOX.VScroll lda (ZPObjPtr),y tax - stz bTemp reset selection + stz bTemp1 reset selection + stz bTemp2 reset Hyperlink .2 jsr TBOX.CheckSel @@ -497,6 +663,47 @@ TBOX.Activate TBOX.Deactivate clc 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 ldy #S.TBOX.BufPtr @@ -512,7 +719,7 @@ TBOX.GetBuf jsr OBJ.GetBuf rts *-------------------------------------- -TBOX.GetCurlineInAX +TBOX.GetDocYInAX ldy #S.TBOX.DocY lda (ZPObjPtr),y tax @@ -546,7 +753,8 @@ TBOX.GetLineAX stx TempW jsr TBOX.GetLineLenInAXC bcc .9 - php +* sec + pha adc TempC @@ -555,8 +763,9 @@ TBOX.GetLineAX stx TempW adc TempC+1 sta TempC+1 + sec + pla - plp adc ZPPtr1 sta ZPPtr1 @@ -576,43 +785,52 @@ TBOX.GetLineAX stx TempW .8 clc rts *-------------------------------------- -* TempC charPos -*-------------------------------------- -TBOX.CheckSel bit bTemp - bmi .1 - - ldy #S.TBOX.SelBegin +TBOX.SetLineAtDocX + ldy #S.TBOX.DocX lda (ZPObjPtr),y - cmp TempC - + clc + adc ZPPtr1 + sta ZPPtr1 iny lda (ZPObjPtr),y - sbc TempC+1 - bcc .8 + adc ZPPtr1+1 + 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 ldx #SEQ.INVERSE-SEQS jsr LB.SeqOut plx - rts -.1 ldy #S.TBOX.SelEnd - lda (ZPObjPtr),y - cmp TempC - - iny - lda (ZPObjPtr),y - sbc TempC+1 - bcc .8 - - phx - ldx #SEQ.NORMAL-SEQS - jsr LB.SeqOut - plx + dec bTemp1 .8 rts *-------------------------------------- -TBOX.ResetSel bit bTemp +TBOX.ResetSel bit bTemp1 bpl .8 phx @@ -620,24 +838,83 @@ TBOX.ResetSel bit bTemp jsr LB.SeqOut plx + stz bTemp1 + .8 rts *-------------------------------------- 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 inc ZPPtr1 - bne .7 + bne .1 inc ZPPtr1+1 -.7 inc TempC +.1 inc TempC bne .8 - inc TempC+1 + inc TempC+1 NZ .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 lda ZPPtr1+1 pha @@ -944,11 +1221,8 @@ TBOX.SetViewPort bra .40 -.32 lda #0 - ldy #S.TBOX.VScroll+1 - sta (ZPObjPtr),y - dey - sta (ZPObjPtr),y +.32 ldy #S.TBOX.VScroll + jsr OBJ.ZeroWordAtY ldy #S.TBOX.DocY lda (ZPObjPtr),y diff --git a/LIB/LIBTUI.S.txt b/LIB/LIBTUI.S.txt index ea37992d..c348ee99 100644 --- a/LIB/LIBTUI.S.txt +++ b/LIB/LIBTUI.S.txt @@ -22,7 +22,8 @@ ZPLineBufCnt .BS 2 ZPPtr1 .BS 2 ZPPtr2 .BS 2 ZPPtr3 .BS 2 -bTemp .BS 1 +bTemp1 .BS 1 +bTemp2 .BS 1 TempW .BS 2 TempC .BS 2 @@ -66,7 +67,7 @@ CS.START cld .DA OBJ.Run .DA OBJ.Draw .DA OBJ.GetProp - .DA OBJ.SetProp + .DA LIB.SetProp .DA OBJ.Activate .DA OBJ.Deactivate *-------------------------------------- @@ -120,7 +121,45 @@ J.ObjDeactivate .DA OBJ.Deactivate .DA BUT.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.SelBegin Ctrl-B .DA TBOX.RUN.Ignore ** Copy @@ -147,11 +186,6 @@ J.TBOX.RUN .DA TBOX.RUN.Ignore .DA TBOX.RUN.Ignore ** Cut .DA TBOX.RUN.EOF Ctrl-Y .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.GOTOXY .DA SEQ.GOTOXY @@ -185,32 +219,56 @@ LIB.UNLOAD dec LibCnt .8 clc 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 phx ldx ZPObjPtr+1 phx - + pha jsr LIB.GetOBJ - + ldy #S.OBJ.S lda (ZPObjPtr),y and #S.OBJ.S.bHasChilds beq .3 ldy #S.OBJ.Childs - + .1 lda (ZPObjPtr),y beq .2 - + phy pha jsr OBJ.Destroy - + pla >SYSCALL FreeMem ply - + .2 iny cpy #S.OBJ bcc .1 @@ -218,7 +276,7 @@ LIB.Destroy ldx ZPObjPtr pla pha jsr LIB.GetOBJ - + .3 jsr .7 pla @@ -235,26 +293,28 @@ LIB.Destroy ldx ZPObjPtr tax jmp (J.ObjDestroy,x) *-------------------------------------- -LIB.GetCTX ldy #S.OBJ.hParent - lda (ZPObjPtr),y - -.1 >SYSCALL2 GetMemPtr +LIB.GetCTX >LDYA ZPObjPtr >STYA ZPCtxPtr - - lda (ZPCtxPtr) + +.1 lda (ZPCtxPtr) * cmp #S.OBJ.T.SCRN beq .8 - - ldy #S.OBJ.hParent - lda (ZPCtxPtr),y + + jsr .8 bra .1 - -.8 rts + +.8 ldy #S.OBJ.hParent + lda (ZPCtxPtr),y + >SYSCALL2 GetMemPtr + >STYA ZPCtxPtr + + rts *-------------------------------------- LIB.GetOBJ >SYSCALL2 GetMemPtr >STYA ZPObjPtr rts *-------------------------------------- + .INB usr/src/lib/libtui.s.io .INB usr/src/lib/libtui.s.lb .INB usr/src/lib/libtui.s.ctx .INB usr/src/lib/libtui.s.cont @@ -292,7 +352,8 @@ OBJ.COLORS .DA #93,#44 SCRN .DA #92,#100 BUT .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(B" font select .CS "\e)0" font select diff --git a/ROOT/asmtest/TESTTUI.S.txt b/ROOT/asmtest/TESTTUI.S.txt index aa3492cb..d39db64b 100644 --- a/ROOT/asmtest/TESTTUI.S.txt +++ b/ROOT/asmtest/TESTTUI.S.txt @@ -68,7 +68,7 @@ CS.INIT >LDYA L.LIBTUI CS.INIT.RTS rts *-------------------------------------- -CS.RUN >LIBCALL hLIBTUI,LIBTUI.Init +CS.RUN >LIBCALL hLIBTUI,LIBTUI.Init bcs CS.RUN.RTS sta hCTX diff --git a/ROOT/ctest/testlib.c.txt b/ROOT/ctest/testlib.c.txt index e2259f2a..0da5732c 100644 --- a/ROOT/ctest/testlib.c.txt +++ b/ROOT/ctest/testlib.c.txt @@ -21,7 +21,7 @@ int main(int argc, char *argv[]) char *pBuf = malloc(1024); 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_pStatus, "Text Box Status"); @@ -65,10 +65,13 @@ int main(int argc, char *argv[]) if (e == EV_SAVE) { short int hDLGS = tuiNewDlg(hCTX, 70, 11, "Save As..."); 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); tuiActivate(hOKBut); - tuiExec(hDLGS); + short int e; + do { + e = tuiExec(hDLGS); + } while (e != EV_CANCEL); tuiDestroy(hDLGS); tuiDraw(hSCRN); } diff --git a/SBIN/CIFSD.S.txt b/SBIN/CIFSD.S.txt index 18d1fd3e..508316c0 100644 --- a/SBIN/CIFSD.S.txt +++ b/SBIN/CIFSD.S.txt @@ -451,8 +451,10 @@ PRODOS.FT.TXT .AZ "txt" .AZ "sys" PRODOS.FT.END .EQ *-PRODOS.FT.TXT *-------------------------------------- -SMBERR01 .DA #2,#3,#32 -MLIERR01 .DA #MLI.E.FNOTFND,#MLI.E.PNOTFND,#MLI.E.OPEN +SMBERR01 .DA #2,#3,#4,#5,#12 + .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 .DA #0 24 BITS LENGTH @@ -538,7 +540,7 @@ SMB.ComCreate.H .DA #24 WORD COUNT .BS 2 NameLength .HS 00000000 Flags .HS 00000000 RootDirectoryFID - .HS 00000010 DesiredAccess = GENERIC_ALL + .HS 000000C0 DesiredAccess = GENERIC_READ+GENERIC_WRITE .HS 0000000000000000 AllocationSize .HS 00000000 ExtFileAttributes .HS 00000000 ShareAccess diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 0e7fb4f1..df515587 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -54,7 +54,7 @@ STDIO.Put1 >PUSHWI K.IOBuf buf inc write 1 byte >PUSHA -STDIO.Write jsr K.FWrite +STDIO.Write jsr K.FWrite.PFT bcc .9 tay @@ -480,12 +480,15 @@ K.FRead.RTS rts * ## RETURN VALUE * Y,A = Bytes Written *\-------------------------------------- +K.FWrite.PFT ldx #SYS.FWrite Needed by PFT + K.FWrite jsr PFT.CheckNode4 bcs K.FWrite.RET5 jsr UNISTD.Write bcc K.FRead.RTS + K.FWrite.9 cmp #E.NODATA sec bne K.FRead.RTS IO Error @@ -899,8 +902,8 @@ K.PrintF.1 sec format string->ptr2 >PUSHA >PUSHWI K.IOBuf >PUSHW PrintF.Cnt Writing to File/dev... - ldx #SYS.FWrite Needed by PFT - jsr K.FWrite + + jsr K.FWrite.PFT bcc .81 tay