diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 65d8aa94..71cf3235 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/CC.S.F.txt b/BIN/CC.S.F.txt index 9c328379..4b042958 100644 --- a/BIN/CC.S.F.txt +++ b/BIN/CC.S.F.txt @@ -88,8 +88,17 @@ F.Decl jsr SCOPE.New function ( *-------------------------------------- .7 cmp #'{' bne .9 + + jmp F.Body *-------------------------------------- -F.Def >LDA.G CC.bInitCode +F.Def >DEBUG + + +.9 lda #E.CSYN + sec +.99 rts +*-------------------------------------- +F.Body >LDA.G CC.bInitCode bmi .1 lda #$60 RTS @@ -250,11 +259,17 @@ F.CallRetV sec ldx ZPPtr2+1 local : expected Q phx - >STYA ZPPtr2 + >STYA ZPPtr2 T/Q ror ZPPtr1+1 bRetV - bpl .1 + bpl .1 no Return value expected.... + ldy #SYM.Addr+1 + lda (ZPLookupSymPtr),y + cmp #3+LIBS.MAX + bcc .1 SYS/FPU/LIB call, no room on stack required + + >LDYA ZPPtr2 jsr EXP.GetYASizeOfInAX jsr CODE.AddLocal add room for return value diff --git a/BIN/CC.S.SYM.txt b/BIN/CC.S.SYM.txt index 66a57b89..a34e52fe 100644 --- a/BIN/CC.S.SYM.txt +++ b/BIN/CC.S.SYM.txt @@ -14,7 +14,21 @@ SYM.New >STYA ZPPtr2 T/Q *-------------------------------------- SYM.New.Pass1 jsr SYM.BufInitYAXC set buf according C - >PUSHB.G CC.hSyms + jsr SYM.Get + bcs .1 + + ldy #SYM.Q + lda (ZPSymBufPtr),y + and #SYM.Q.FUNC + beq .90 + + ldy #SYM.Addr+1 + lda (ZPSymBufPtr),y + bne .90 + + jmp F.Def + +.1 >PUSHB.G CC.hSyms >PUSHW ZPLineBufPtr jsr SCOPE.Push >SYSCALL SListNewKey @@ -29,30 +43,14 @@ SYM.New.Pass1 jsr SYM.BufInitYAXC set buf according C .FIN bra SYM.New.2 + +.90 lda #E.REDEF + sec SYM.New.9 rts *-------------------------------------- -SYM.New.Pass2 >PUSHB.G CC.hSyms - >PUSHW ZPLineBufPtr - jsr SCOPE.Push - >SYSCALL SListLookup - bcs SYM.New.9 - - >STYA.G CC.SymID Y,A = KeyID - - jsr CC.SkipX X = KeyLen - - >PUSHB.G CC.hSyms - >PUSHW.G CC.SymID - >PUSHW ZPSymBufPtr - >PUSHWI 65535 all - >PUSHWZ From Start - >SYSCALL SListGetData +SYM.New.Pass2 jsr SYM.Get bcs SYM.New.9 - - .DO _DBG_SYM=1 - jsr SYM.DEBUGG - .FIN *-------------------------------------- SYM.New.2 jsr CC.GetCharNB bcs .98 @@ -379,6 +377,28 @@ SYM.GetAddr2 ldy #SYM.SC .9 rts *-------------------------------------- +SYM.Get >PUSHB.G CC.hSyms + >PUSHW ZPLineBufPtr + jsr SCOPE.Push + >SYSCALL SListLookup + bcs .9 + + >STYA.G CC.SymID Y,A = KeyID + + jsr CC.SkipX X = KeyLen + + >PUSHB.G CC.hSyms + >PUSHW.G CC.SymID + >PUSHW ZPSymBufPtr + >PUSHWI 65535 all + >PUSHWZ From Start + >SYSCALL SListGetData + .DO _DBG_SYM=1 + bcs .9 + jsr SYM.DEBUGG + .FIN +.9 rts +*-------------------------------------- SYM.NewKey >PUSHA >PUSHW ZPLineBufPtr >PUSHWI 0 ScopeID diff --git a/BIN/GOPHER.S.txt b/BIN/GOPHER.S.txt new file mode 100644 index 00000000..4dce7e9a --- /dev/null +++ b/BIN/GOPHER.S.txt @@ -0,0 +1,681 @@ +NEW + AUTO 3,1 + .LIST OFF + .OP 65C02 + .OR $2000 + .TF bin/gopher +*-------------------------------------- +* mirrors.apple2.org.za +* gopherpedia.com +*-------------------------------------- + .INB inc/macros.i + .INB inc/a2osx.i + .INB inc/eth.i + .INB inc/net.tcpip.i + .INB inc/libtcpip.i + .INB inc/libtui.i +*-------------------------------------- +TIMEOUT.MAX .EQ 200 20 sec. +BUFSIZE .EQ 4096 +*-------------------------------------- + .DUMMY + .OR ZPBIN +ZS.START +ZPIPCfgPtr .BS 2 +ZPBufPtr .BS 2 +ZPLinePtr .BS 2 +ZPFramePtr .BS 2 +ZPnFrameLen .BS 2 + +hBuf .BS 1 +hLine .BS 1 +hSocket .BS 1 +hFrame .BS 1 + +TimeOut .BS 1 + +bScreen .BS 1 +hCTX .BS 1 +hSCR .BS 1 +hTBOX .BS 1 + +TargetHost .BS 2 +TargetPort .BS 2 +TargetSelector .BS 2 +ZS.END .ED +*-------------------------------------- +* File Header (16 Bytes) +*-------------------------------------- +CS.START cld + jmp (.1,x) + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA #S.PS.F.EVENT S.PS.F + .DA #0 + .DA CS.END-CS.START Code Size (without Constants) + .DA DS.END-DS.START Data Segment Size + .DA #64 Stack Size + .DA #ZS.END-ZS.START Zero Page Size + .DA 0 +*-------------------------------------- +.1 .DA CS.INIT + .DA CS.RUN + .DA CS.DOEVENT + .DA CS.QUIT +L.LIBTCPIP .DA LIBTCPIP +L.LIBTUI .DA LIBTUI +L.SA.LOCAL .DA SA.LOCAL + +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.CONNECTING .DA MSG.CONNECTING +L.MSG.UNKNOWN .DA MSG.UNKNOWN +L.MSG.ERROR .DA MSG.ERROR +L.MSG.CONNECTED .DA MSG.CONNECTED + +J.ITEMTYPES .DA CS.Net.File + .DA CS.Net.Dir + .DA CS.Net.Search + .DA CS.Net.Info + .DA 0 +*-------------------------------------- +CS.INIT >LDYA L.LIBTCPIP + >SYSCALL LoadLib + bcs .9 + + sta hLIBTCPIP + + >LDYA L.LIBTUI + >SYSCALL LoadLib + bcs .9 + + sta hLIBTUI + +.9 +CS.INIT.RTS rts +*-------------------------------------- +CS.RUN jsr CS.Net.Init + bcs CS.INIT.RTS + + jsr CS.Scr.Init + bcs CS.INIT.RTS + + dec bScreen + + >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 + bcs CS.INIT.RTS +*-------------------------------------- + jsr CS.Scr.SetBuf +*-------------------------------------- +CS.RUN.LOOP lda hSCR + >LIBCALL hLIBTUI,LIBTUI.Exec + bcs .99 Error + + tay + beq CS.RUN.LOOP No Event + + cmp #3 + beq .99 + + + + + bra CS.RUN.LOOP + +.99 rts +*-------------------------------------- +CS.DOEVENT lda (pEvent) + bpl .9 is it a TIMER event? + + lda TimeOut + beq .9 + + dec TimeOut + +.9 sec do not discard TIMER event + rts +*-------------------------------------- +CS.QUIT bit bScreen + bpl .10 + + >LIBCALL hLIBTUI,LIBTUI.Close + +.10 lda hLIBTUI + beq .1 + + >SYSCALL UnloadLib + +.1 lda hSocket + beq .2 + + >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown + +.2 lda hBuf + beq .3 + + >SYSCALL FreeMem + +.3 lda hLine + beq .4 + + >SYSCALL FreeMem + +.4 lda hLIBTCPIP + beq .8 + + >SYSCALL UnloadLib + +.8 clc + rts +*-------------------------------------- +CS.Net.Init >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? + >STYA ZPIPCfgPtr + lda (ZPIPCfgPtr) Configured ? + bpl .97 + + ldy #S.IPCFG.IP+3 + ldx #3 + +.1 lda (ZPIPCfgPtr),y + sta SA.LOCAL+S.SOCKADDR.ADDR,x + dey + dex + bpl .1 + + lda #1 + >SYSCALL ArgV + bcs .96 + + >STYA TargetHost + + lda #2 + >SYSCALL ArgV + bcs .7 + + >SYSCALL AToI + bra .8 + +.7 >LDYAI 70 + +.8 >STYA TargetPort + + lda #AF.INET + >STA.G SA.REMOTE+S.SOCKADDR.AF + + clc + rts + +.96 >LDYA L.MSG.USAGE + bra .98 + +.97 >LDYA L.MSG.IPKO + +.98 >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 + sta TimeOut + +.1 >SLEEP + + >PUSHEA.G SA.REMOTE+S.SOCKADDR.ADDR + >PUSHW TargetHost + >LIBCALL hLIBTCPIP,LIBTCPIP.HST.GetByName + bcc CS.Net.Connect1 + + lda 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 + >PUSHBI 0 + >LIBCALL hLIBTCPIP,LIBTCPIP.Socket + bcs .9 + + sta hSocket + + >PUSHA + >PUSHW L.SA.LOCAL + >LIBCALL hLIBTCPIP,LIBTCPIP.Bind + bcs .9 + + >LDYA TargetPort + >STYA.G SA.REMOTE+S.SOCKADDR.PORT + + lda #TIMEOUT.MAX + sta TimeOut + +.1 >SLEEP + + >PUSHB hSocket + >PUSHEA.G SA.REMOTE + >LIBCALL hLIBTCPIP,LIBTCPIP.Connect + bcc .8 + + cmp #ERR.SKT.NOCONN + sec + bne .9 + + lda 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 + >SYSCALL SPrintF + jsr CS.Scr.SetStatus + clc + rts +*-------------------------------------- +CS.Net.Get >STYA TargetSelector + + lda hBuf + >SYSCALL GetMemPtr + >STYA ZPBufPtr + + lda #0 + sta (ZPBufPtr) + sta (ZPLinePtr) + + >PUSHB hSocket + >PUSHW TargetSelector + + ldy #$ff + +.1 iny + lda (TargetSelector),y + bne .1 + + >PUSHYA + + >LIBCALL hLIBTCPIP,LIBTCPIP.Send + bcs .9 + +.2 >SLEEP + + lda hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Recv + bcc .3 + + cmp #E.NODATA + beq .2 + + +* lda hSocket +* >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown + + clc + rts + +.3 jsr CS.Net.GetFrame + + jsr CS.Net.GetLines + + + 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 + sbc #S.TCP-S.ETH.EII + eor #$ff + sta ZPnFrameLen + + dey + + lda (ZPFramePtr),y + sbc /S.TCP-S.ETH.EII + eor #$ff + sta ZPnFrameLen+1 + + lda ZPFramePtr + clc + adc #S.TCP + sta ZPFramePtr + bcc .8 + + inc ZPFramePtr+1 + +.8 rts +*-------------------------------------- +CS.Net.GetLines ldy #$ff + +.1 iny + lda (ZPLinePtr),y + bne .1 + +.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 + rts +*-------------------------------------- +CS.Net.Line2Buf lda (ZPLinePtr) + + ldx #ITEMTYPES.L-1 + +.1 cmp ITEMTYPES,x + beq .2 + + dex + bpl .1 + + bra .6 + +.2 txa + asl + tax + jmp (J.ITEMTYPES,x) + +.6 ldy #$ff + +.7 iny + lda (ZPLinePtr),y + sta (ZPBufPtr),y + bne .7 + + tya + clc + adc ZPBufPtr + sta ZPBufPtr + bcc .8 + + inc ZPBufPtr+1 + +.8 rts +*-------------------------------------- +* hyperlinks: [[text to show|targetUrl]] +*-------------------------------------- +CS.Net.File +CS.Net.Dir +CS.Net.Search + lda #'[' + jsr CS.Net.Char2Buf + jsr CS.Net.Char2Buf + + ldy #0 + + jsr CS.Net.Token2Buf + + lda #'|' + jsr CS.Net.Char2Buf + + phy save Selector pos + + 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 + jsr CS.Net.Char2Buf + +.8 lda #C.CR + jsr CS.Net.Char2Buf + + lda #0 + sta (ZPBufPtr) + + rts +*-------------------------------------- +CS.Net.Info ldy #0 + + jsr CS.Net.Token2Buf + + lda #C.CR + jsr CS.Net.Char2Buf + + lda #0 + sta (ZPBufPtr) + + rts +*-------------------------------------- +CS.Net.Token2Buf + iny + lda (ZPLinePtr),y + cmp #C.TAB + beq .8 + + cmp #C.CR + beq .8 + + jsr CS.Net.Char2Buf + bra CS.Net.Token2Buf + +.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 +*-------------------------------------- +CS.Net.Char2Buf sta (ZPBufPtr) + + inc ZPBufPtr + bne .8 + + inc ZPBufPtr+1 + +.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 + rts + +.9 sec + rts +*-------------------------------------- +CS.Scr.Init >LIBCALL hLIBTUI,LIBTUI.Init + bcs .9 + + sta hCTX + + >PUSHA hCTX + >PUSHBI S.OBJ.F.bTitle+S.OBJ.F.bStatus + >LIBCALL hLIBTUI,LIBTUI.NewScrn + bcs .9 + + sta hSCR + jsr CS.Scr.SetTitle + + jsr CS.Scr.SetStatus + + >PUSHB hSCR + >PUSHBI 0 X1 + >PUSHBI 0 Y1 + >PUSHBI 80 W + >PUSHBI 22 H + >PUSHBI S.OBJ.F.bEdit F + lda hBuf + >SYSCALL GetMemPtr + >PUSHYA + >PUSHWI BUFSIZE + >LIBCALL hLIBTUI,LIBTUI.NewTBox + bcs .9 + + sta hTBOX + + >LIBCALL hLIBTUI,LIBTUI.Activate + +.9 rts +*-------------------------------------- +CS.Scr.SetTitle >PUSHEA.G SCR.TitleBuf + >PUSHW L.MSG.ScrTitle + >PUSHW TargetHost + >PUSHW TargetPort + >PUSHW TargetSelector + >PUSHBI 6 + >SYSCALL SPrintF + + >PUSHB hSCR + >PUSHBI S.OBJ.pTITLE + >PUSHEA.G SCR.TitleBuf + >LIBCALL hLIBTUI,LIBTUI.SetProp + rts +*-------------------------------------- +CS.Scr.SetBuf >PUSHB hTBOX + >PUSHBI S.OBJ.pBuf + lda hBuf + >SYSCALL GetMemPtr + >PUSHYA + >LIBCALL hLIBTUI,LIBTUI.SetProp + rts +*-------------------------------------- +CS.Scr.SetStatus + >PUSHB hSCR + >PUSHBI S.OBJ.pSTATUS + >PUSHEA.G SCR.StatusBuf + >LIBCALL hLIBTUI,LIBTUI.SetProp + rts +*-------------------------------------- +CS.END +LIBTCPIP .AZ "libtcpip" +hLIBTCPIP .BS 1 +LIBTUI .AZ "libtui" +hLIBTUI .BS 1 +*-------------------------------------- +MSG.ScrTitle .CZ "A2osX-GOPHER %s:%D/%s : Exit" +*-------------------------------------- +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.CRLF .CS "\r\n" +MSG.NULL .HS 00 +*-------------------------------------- +MSG.CONNECTING .CZ "Connecting to %s:%D..." +MSG.UNKNOWN .CZ "%s: Unknown host" +MSG.ERROR .CZ "Error : $%h" +MSG.CONNECTED .CZ "Connected to %d.%d.%d.%d:%D." +*-------------------------------------- +ITEMTYPES .AS "017i" +ITEMTYPES.L .EQ *-ITEMTYPES +*-------------------------------------- +SA.LOCAL .DA #AF.INET S.SOCKADDR.AF + .BS 1 + .BS 4 S.SOCKADDR.ADDR + .BS 2 S.SOCKADDR.PORT +*-------------------------------------- + .DUMMY + .OR 0 +DS.START +SA.REMOTE .BS S.SOCKADDR + +SCR.TitleBuf .BS 80 +SCR.StatusBuf .BS 80 +DS.END .ED +*-------------------------------------- +MAN +SAVE usr/src/bin/gopher.s +ASM diff --git a/INC/LIBTUI.I.txt b/INC/LIBTUI.I.txt index 443fede1..7536a327 100644 --- a/INC/LIBTUI.I.txt +++ b/INC/LIBTUI.I.txt @@ -51,7 +51,7 @@ S.OBJ.F.bHBorder .EQ %00010000 S.OBJ.F.bVBorder .EQ %00001000 S.OBJ.F.bHScroll .EQ %00000100 S.OBJ.F.bVScroll .EQ %00000010 -S.OBJ.F.bCursor .EQ %00000001 +S.OBJ.F.bEdit .EQ %00000001 S.OBJ.S .EQ 2 S.OBJ.S.bActive .EQ %10000000 S.OBJ.S.bDisabled .EQ %01000000 diff --git a/INCLUDE/libtui.h.txt b/INCLUDE/libtui.h.txt index 831597c3..28a7fcbf 100644 --- a/INCLUDE/libtui.h.txt +++ b/INCLUDE/libtui.h.txt @@ -18,7 +18,7 @@ NEW #define F_bVBorder 8 #define F_bHScroll 4 #define F_bVScroll 2 -#define F_bCursor 1 +#define F_bEdit 1 #define P_pTitle 16 #define P_pMenu 18 diff --git a/LIB/LIBTUI.S.OBJ.txt b/LIB/LIBTUI.S.OBJ.txt index 1b03ec6c..14b15560 100644 --- a/LIB/LIBTUI.S.OBJ.txt +++ b/LIB/LIBTUI.S.OBJ.txt @@ -412,7 +412,7 @@ OBJ.Draw.Top lda (pStack) * clc beq OBJ.Draw.RTS - jsr LB.Init +OBJ.Draw.Top.I jsr LB.Init ldy #S.OBJ.X1 lda (ZPObjPtr),y @@ -502,9 +502,7 @@ OBJ.Draw.Top lda (pStack) OBJ.Draw.Body lda (pStack) jsr LIB.GetOBJ - jsr OBJ.CurOff - - ldy #S.OBJ.InnerY +OBJ.Draw.Body.I ldy #S.OBJ.InnerY lda (ZPObjPtr),y >PUSHA Start @@ -514,6 +512,8 @@ OBJ.Draw.Body lda (pStack) >PUSHBI 0 Relative Y +OBJ.Draw.Lines jsr OBJ.CurOff + .1 jsr LB.Init ldy #S.OBJ.X1 @@ -598,6 +598,7 @@ OBJ.Draw.Bottom lda (pStack) * clc beq OBJ.Draw.Body.RTS +OBJ.Draw.Bottom.I jsr LB.Init ldy #S.OBJ.X1 @@ -712,15 +713,30 @@ OBJ.SetProp ldy #3 hObj lda (pStack),y tay prop - >PULLA + >PULLA Value sta (ZPObjPtr),y iny >PULLA sta (ZPObjPtr),y - inc pStack - inc pStack -* clc + >PULLA prop + inc pStack hObj + cmp #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 + bne .8 + + jmp OBJ.Draw.Bottom.I + +.8 clc rts *-------------------------------------- OBJ.Activate >PUSHA hObj @@ -808,9 +824,40 @@ OBJ.FindActive ldx ZPObjPtr rts *-------------------------------------- +OBJ.CurUpdPos ldy #S.OBJ.F + lda (ZPObjPtr),y + and #S.OBJ.F.bEdit + beq .8 + + ldy #S.OBJ.S + lda (ZPObjPtr),y S.OBJ.S.bActive + bpl .8 + + jsr LB.Init + + ldy #S.OBJ.InnerX + lda (ZPObjPtr),y + clc + ldy #S.OBJ.CurX + adc (ZPObjPtr),y + tax + + ldy #S.OBJ.InnerY + lda (ZPObjPtr),y + clc + ldy #S.OBJ.CurY + adc (ZPObjPtr),y + tay + jsr LB.GotoXY + + jsr LB.Out + +.8 clc + rts +*-------------------------------------- OBJ.CurOn ldy #S.OBJ.F lda (ZPObjPtr),y - and #S.OBJ.F.bCursor + and #S.OBJ.F.bEdit beq .8 ldy #S.OBJ.S @@ -851,7 +898,7 @@ OBJ.CurOn ldy #S.OBJ.F *-------------------------------------- OBJ.CurOff ldy #S.OBJ.F lda (ZPObjPtr),y - and #S.OBJ.F.bCursor + and #S.OBJ.F.bEdit beq .8 ldy #S.OBJ.S diff --git a/LIB/LIBTUI.S.TBOX.txt b/LIB/LIBTUI.S.TBOX.txt index f5761338..e265e1d8 100644 --- a/LIB/LIBTUI.S.TBOX.txt +++ b/LIB/LIBTUI.S.TBOX.txt @@ -11,7 +11,6 @@ TBOX.New lda #S.OBJ.T.TBOX jsr OBJ.PullBuf >PULLA - ora #S.OBJ.F.bCursor ldy #S.OBJ.F sta (ZPObjPtr),y @@ -40,48 +39,48 @@ TBOX.Run ldy #S.OBJ.S lda (pStack) Event cmp #C.SPACE - bcs .2 + bcs .1 asl tax - jsr .1 - - bcc TBOX.RUN.7 - - rts - -.1 jmp (J.TBOX.RUN,x) - -.2 cmp #C.DEL - bne TBOX.RUN.CR + jmp (J.TBOX.RUN,x) +.1 cmp #C.DEL + beq .3 + jsr TBOX.GetBuf + jsr TBOX.ToBuf1 + bcs .8 Buffer full + jsr TBOX.RUN.FS1 + bit bRepaintAll + bmi .2 + + jsr OBJ.CurUpdPos + + jmp TBOX.DrawCurLine + +.2 jmp TBOX.DrawAllLines + +.3 jsr TBOX.GetBuf jsr TBOX.Delete1 + bcs .8 Buffer Empty - bra TBOX.RUN.7 + bit bRepaintAll + bmi .4 + + jsr OBJ.CurUpdPos + + jmp TBOX.DrawCurLine + +.4 jmp TBOX.DrawAllLines + +.8 *-------------------------------------- TBOX.RUN.Ignore lda #0 sec rts *-------------------------------------- -TBOX.RUN.CR jsr TBOX.GetBuf - - jsr TBOX.ToBuf1 - bcs TBOX.RUN.8 Buffer full - - jsr TBOX.RUN.FS1 - -TBOX.RUN.7 ldy #1 hObj - lda (pStack),y - >PUSHA - - jsr OBJ.Draw.Body - inc pStack - -TBOX.RUN.8 clc - rts -*-------------------------------------- TBOX.RUN.SelBegin ldy #S.TBOX.BufPtr lda (ZPObjPtr),y @@ -146,13 +145,13 @@ TBOX.RUN.BS ldy #S.TBOX.BufPtr+1 lda (ZPPtr2) cmp #C.CR - beq .1 + beq .2 ldy #S.TBOX.DocX jsr OBJ.DecWordAtY - jmp TBOX.SetViewPort + jmp TBOX.CheckViewPort -.1 ldy #S.TBOX.DocY +.2 ldy #S.TBOX.DocY jsr OBJ.DecWordAtY jmp TBOX.RUN.EOL @@ -222,7 +221,7 @@ TBOX.RUN.VT1 jsr TBOX.GetCurlineInAX txa sta (ZPObjPtr),y - jmp TBOX.SetViewPort + jmp TBOX.CheckViewPort TBOX.RUN.VT.8 clc rts @@ -253,7 +252,7 @@ TBOX.RUN.FS1 lda (ZPPtr2) .7 jsr OBJ.IncWordAtY - jsr TBOX.SetViewPort + jmp TBOX.CheckViewPort .8 clc rts @@ -274,7 +273,7 @@ TBOX.RUN.SOL lda #0 lda TempC+1 sta (ZPObjPtr),y - jmp TBOX.SetViewPort + jmp TBOX.CheckViewPort *-------------------------------------- TBOX.RUN.EOL jsr TBOX.GetCurlineInAX jsr TBOX.GetLineAX @@ -299,12 +298,25 @@ TBOX.RUN.EOL jsr TBOX.GetCurlineInAX txa sta (ZPObjPtr),y - jmp TBOX.SetViewPort + jmp TBOX.CheckViewPort *-------------------------------------- -TBOX.RUN.PGUP clc +TBOX.RUN.CR jsr TBOX.GetBuf + jsr TBOX.ToBuf1 + bcs .8 Buffer full + + jmp TBOX.RUN.FS1 + +.8 clc rts *-------------------------------------- -TBOX.RUN.PGDN clc +TBOX.RUN.PGUP +*-------------------------------------- +TBOX.RUN.PGDN lda #0 + sec + rts +*-------------------------------------- +TBOX.RUN.QUIT lda #3 User Interrupt + clc rts *-------------------------------------- TBOX.RUN.Home ldy #S.TBOX.DocX @@ -323,7 +335,7 @@ TBOX.RUN.Home ldy #S.TBOX.DocX iny sta (ZPObjPtr),y - jmp TBOX.SetViewPort + jmp TBOX.CheckViewPort *-------------------------------------- TBOX.RUN.EraseCL jsr TBOX.GetCurlineInAX @@ -367,7 +379,36 @@ TBOX.RUN.EOF lda #$ff txa sta (ZPObjPtr),y - jmp TBOX.SetViewPort + jmp TBOX.CheckViewPort +*-------------------------------------- +TBOX.DrawAllLines + ldy #1 hObj + lda (pStack),y + >PUSHA + + jsr OBJ.Draw.Body + inc pStack + + rts +*-------------------------------------- +TBOX.DrawCurLine + ldy #S.OBJ.InnerY + lda (ZPObjPtr),y + + clc + + ldy #S.OBJ.CurY + adc (ZPObjPtr),y + >PUSHA Start + + lda #1 + >PUSHA Count + + ldy #S.OBJ.CurY + lda (ZPObjPtr),y Relative Y + >PUSHA + + jmp OBJ.Draw.Lines *-------------------------------------- TBOX.Draw ldy #S.TBOX.VScroll lda (ZPObjPtr),y @@ -427,7 +468,8 @@ TBOX.Draw ldy #S.TBOX.VScroll dex bne .7 -.8 +.8 clc + rts *-------------------------------------- TBOX.Activate *-------------------------------------- @@ -585,7 +627,7 @@ TBOX.ToBuf1 ldy #S.TBOX.BufCnt jsr OBJ.IncWordAtY -.1 jsr TBOX.GetBuf + jsr TBOX.GetBuf jsr TBOX.Insert1 @@ -660,7 +702,18 @@ TBOX.DeleteAXC adc ZPPtr2 .8 rts *-------------------------------------- +TBOX.CheckViewPort + jsr TBOX.SetViewPort + bit bRepaintAll + bpl .8 + + jmp TBOX.DrawAllLines + +.8 jmp OBJ.CurUpdPos +*-------------------------------------- TBOX.SetViewPort + stz bRepaintAll + ldy #S.TBOX.DocX+1 lda (ZPObjPtr),y tax @@ -752,8 +805,7 @@ TBOX.SetViewPort .20 ldy #S.OBJ.CurX sta (ZPObjPtr),y - sec - ror bRepaintAll + dec bRepaintAll *-------------------------------------- .21 ldy #S.TBOX.DocY+1 lda (ZPObjPtr),y @@ -847,8 +899,8 @@ TBOX.SetViewPort .40 ldy #S.OBJ.CurY sta (ZPObjPtr),y - sec - ror bRepaintAll + + dec bRepaintAll .41 clc CLC RTS to jmp to rts diff --git a/LIB/LIBTUI.S.TLINE.txt b/LIB/LIBTUI.S.TLINE.txt index cc8bd307..552a0ce9 100644 --- a/LIB/LIBTUI.S.TLINE.txt +++ b/LIB/LIBTUI.S.TLINE.txt @@ -11,7 +11,7 @@ TLINE.New lda #S.OBJ.T.TLINE jsr OBJ.PullBuf ldy #S.OBJ.F - lda #S.OBJ.F.bHScroll+S.OBJ.F.bCursor + lda #S.OBJ.F.bHScroll+S.OBJ.F.bEdit sta (ZPObjPtr),y >PULLA diff --git a/LIB/LIBTUI.S.txt b/LIB/LIBTUI.S.txt index bca1f52d..56c0264f 100644 --- a/LIB/LIBTUI.S.txt +++ b/LIB/LIBTUI.S.txt @@ -123,10 +123,10 @@ J.ObjDeactivate .DA SCRN.Deactivate J.TBOX.RUN .DA TBOX.RUN.Ignore .DA TBOX.RUN.Ignore .DA TBOX.RUN.SelBegin Ctrl-B - .DA TBOX.RUN.Ignore Ctrl-C - .DA TBOX.RUN.Ignore + .DA TBOX.RUN.Ignore ** Copy + .DA TBOX.RUN.Ignore ** Delete Selection .DA TBOX.RUN.SelEnd Ctrl-E - .DA TBOX.RUN.Ignore + .DA TBOX.RUN.Ignore ** Find... .DA TBOX.RUN.SOL Ctrl-G .DA TBOX.RUN.BS .DA TBOX.RUN.Ignore TAB @@ -134,19 +134,19 @@ J.TBOX.RUN .DA TBOX.RUN.Ignore .DA TBOX.RUN.VT .DA TBOX.RUN.EOL Ctrl-L .DA TBOX.RUN.CR - .DA TBOX.RUN.Ignore + .DA TBOX.RUN.Ignore ** Next... .DA TBOX.RUN.PGUP Ctrl-O .DA TBOX.RUN.PGDN Ctrl-P - .DA TBOX.RUN.Ignore - .DA TBOX.RUN.Ignore - .DA TBOX.RUN.Ignore + .DA TBOX.RUN.QUIT Ctrl-Q + .DA TBOX.RUN.Ignore ** Replace + .DA TBOX.RUN.Ignore ** save .DA TBOX.RUN.Home Ctrl-T .DA TBOX.RUN.FS - .DA TBOX.RUN.Ignore + .DA TBOX.RUN.Ignore ** Paste .DA TBOX.RUN.EraseCL Ctrl-W - .DA TBOX.RUN.Ignore + .DA TBOX.RUN.Ignore ** Cut .DA TBOX.RUN.EOF Ctrl-Y - .DA TBOX.RUN.Ignore + .DA TBOX.RUN.Ignore ** delete under cusror .DA TBOX.RUN.Ignore .DA TBOX.RUN.Ignore .DA TBOX.RUN.Ignore diff --git a/ROOT/asmtest/TESTTUI.S.txt b/ROOT/asmtest/TESTTUI.S.txt index faeff060..aa3492cb 100644 --- a/ROOT/asmtest/TESTTUI.S.txt +++ b/ROOT/asmtest/TESTTUI.S.txt @@ -27,14 +27,14 @@ ZS.END .ED *-------------------------------------- CS.START cld jmp (.1,x) - .DA #$61 6502,Level 1 (65c02) - .DA #1 BIN Layout Version 1 - .DA #0 S.PS.F.EVENT + .DA #$61 6502,Level 1 (65c02) + .DA #1 BIN Layout Version 1 + .DA #0 S.PS.F.EVENT .DA #0 - .DA CS.END-CS.START Code Size (without Constants) - .DA DS.END-DS.START Data Segment Size - .DA #64 Stack Size - .DA #ZS.END-ZS.START Zero Page Size + .DA CS.END-CS.START Code Size (without Constants) + .DA DS.END-DS.START Data Segment Size + .DA #64 Stack Size + .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- .1 .DA CS.INIT @@ -61,8 +61,11 @@ L.BUT.Cancel .DA BUT.Cancel CS.INIT >LDYA L.LIBTUI >SYSCALL LoadLib bcs CS.INIT.RTS + sta hLIBTUI + * clc + CS.INIT.RTS rts *-------------------------------------- CS.RUN >LIBCALL hLIBTUI,LIBTUI.Init @@ -71,37 +74,51 @@ CS.RUN >LIBCALL hLIBTUI,LIBTUI.Init sta hCTX jsr CS.SCRN.Init bcs CS.RUN.RTS + jsr CS.TBOX1.Init bcs CS.RUN.RTS + jsr CS.LBOX1.Init bcs CS.RUN.RTS + jsr CS.TLINE.Init bcs CS.RUN.RTS + jsr CS.RADIO.Init bcs CS.RUN.RTS + jsr CS.CBOX.Init bcs CS.RUN.RTS + jsr CS.BUT.Init bcs CS.RUN.RTS - jsr CS.SCRN.Draw Will Call SCRN.Draw - lda hTBOX1 + + jsr CS.SCRN.Draw Will Call SCRN.Draw + + lda hTBOX1 >LIBCALL hLIBTUI,LIBTUI.Activate *-------------------------------------- CS.RUN.LOOP lda hSCRN >LIBCALL hLIBTUI,LIBTUI.Exec bcs .9 + cmp #EV.RESIZE bne .1 + jsr CS.SCRN.Draw bcs .9 + bra CS.RUN.LOOP + .1 cmp #EV.SAVE bne .2 jsr CS.RUN.DLGSAVE bcc CS.RUN.LOOP + .2 cmp #EV.QUIT bne CS.RUN.LOOP + lda hSCRN >LIBCALL hLIBTUI,LIBTUI.Destroy @@ -110,10 +127,11 @@ CS.RUN.LOOP lda hSCRN .9 CS.RUN.RTS rts *-------------------------------------- -CS.SCRN.Init >PUSHB hCTX hParent +CS.SCRN.Init >PUSHB hCTX hParent >PUSHBI S.OBJ.F.bTitle+S.OBJ.F.bStatus >LIBCALL hLIBTUI,LIBTUI.NewScrn bcs .9 + sta hSCRN >PUSHA >PUSHBI S.OBJ.pTITLE @@ -123,6 +141,7 @@ CS.SCRN.Init >PUSHB hCTX hParent >PUSHBI S.OBJ.pSTATUS >PUSHW L.SCRN.Status >LIBCALL hLIBTUI,LIBTUI.SetProp + .9 rts *-------------------------------------- CS.TBOX1.Init >LDYAI 1024 @@ -138,15 +157,16 @@ CS.TBOX1.Init >LDYAI 1024 >PUSHB hSCRN hParent >PUSHBI 1 X1 >PUSHBI 1 Y1 - >PUSHBI 44 W + >PUSHBI 46 W >PUSHBI 20 H - >PUSHBI S.OBJ.F.bHBorder+S.OBJ.F.bVBorder+S.OBJ.F.bTitle+S.OBJ.F.bStatus + >PUSHBI S.OBJ.F.bHBorder+S.OBJ.F.bVBorder+S.OBJ.F.bTitle+S.OBJ.F.bStatus+S.OBJ.F.bEdit >LDA.G TBOX1.hBuf >SYSCALL GetMemPtr >PUSHYA >PUSHWI 1024 >LIBCALL hLIBTUI,LIBTUI.NewTBox bcs .9 + sta hTBOX1 >PUSHA >PUSHBI S.OBJ.pTITLE @@ -156,6 +176,7 @@ CS.TBOX1.Init >LDYAI 1024 >PUSHBI S.OBJ.pSTATUS >PUSHW L.TBOX1.Status >LIBCALL hLIBTUI,LIBTUI.SetProp + .9 rts *-------------------------------------- CS.LBOX1.Init >PUSHB hSCRN hParent @@ -214,6 +235,7 @@ CS.BUT.Init >PUSHB hSCRN hParent >PUSHW L.BUTS.Label >LIBCALL hLIBTUI,LIBTUI.NewBut bcs .9 + >PUSHB hSCRN hParent >PUSHBI 65 X1 >PUSHBI 20 Y1 @@ -224,32 +246,34 @@ CS.BUT.Init >PUSHB hSCRN hParent .9 CS.BUT.Init.RTS rts *-------------------------------------- -CS.RUN.DLGSAVE >PUSHB hCTX hParent - >PUSHBI 70 W - >PUSHBI 11 H +CS.RUN.DLGSAVE >PUSHB hCTX hParent + >PUSHBI 70 W + >PUSHBI 11 H >PUSHW L.DLGS.Title >LIBCALL hLIBTUI,LIBTUI.NewDlg bcs CS.BUT.Init.RTS sta hDLGS - >PUSHB hDLGS hParent - >PUSHBI 50 X1 - >PUSHBI 7 Y1 + >PUSHB hDLGS hParent + >PUSHBI 50 X1 + >PUSHBI 7 Y1 >PUSHBI C.CR >PUSHBI EV.OK >PUSHW L.BUT.OK >LIBCALL hLIBTUI,LIBTUI.NewBut bcs .9 + sta ZPPtr1 - >PUSHB hDLGS hParent - >PUSHBI 57 X1 - >PUSHBI 7 Y1 - >PUSHBI 3 Ctrl-C + >PUSHB hDLGS hParent + >PUSHBI 57 X1 + >PUSHBI 7 Y1 + >PUSHBI 3 Ctrl-C >PUSHBI EV.CANCEL >PUSHW L.BUT.Cancel >LIBCALL hLIBTUI,LIBTUI.NewBut bcs .9 + lda hDLGS >LIBCALL hLIBTUI,LIBTUI.Draw bcs .9 @@ -270,11 +294,12 @@ CS.RUN.DLGSAVE >PUSHB hCTX hParent plp rts *-------------------------------------- -CS.DOEVENT sec do not discard TIMER event +CS.DOEVENT sec do not discard TIMER event rts *-------------------------------------- CS.QUIT >LDA.G TBOX1.hBuf beq .1 + >SYSCALL FreeMem .1 lda hCTX beq .2 @@ -283,7 +308,9 @@ CS.QUIT >LDA.G TBOX1.hBuf .2 lda hLIBTUI beq .8 + >SYSCALL UnloadLib + .8 clc rts *-------------------------------------- diff --git a/ROOT/ctest/testargs.c.txt b/ROOT/ctest/testargs.c.txt index c978cc53..d5312b94 100644 --- a/ROOT/ctest/testargs.c.txt +++ b/ROOT/ctest/testargs.c.txt @@ -2,6 +2,8 @@ NEW AUTO 3,1 #include +int testf4(int, int); + int testf1() { puts("testf1 called!"); int r = 1029; @@ -19,7 +21,7 @@ int testf2() { void testf3(char *msg) { puts(msg); - return; + return; //not required just for testing } int testf4(int arg1, int arg2) {