diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index ecd383f8..5038543c 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index b159d59a..995a3abf 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/.Floppies/ProDOSFX.BOOT.po b/.Floppies/ProDOSFX.BOOT.po index dd78eb08..1285da6a 100644 Binary files a/.Floppies/ProDOSFX.BOOT.po and b/.Floppies/ProDOSFX.BOOT.po differ 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