CC:BugFix in while

LIBTUI:Improved TBOX control (wip)
GOPHER:....to test hyperlinks in TBOX control (wip)
This commit is contained in:
burniouf 2023-01-31 07:55:01 +01:00
parent c4ae3be6be
commit c4ca3e5907
12 changed files with 962 additions and 118 deletions

Binary file not shown.

View File

@ -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

View File

@ -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

681
BIN/GOPHER.S.txt Normal file
View File

@ -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 <Ctrl-X> : Exit"
*--------------------------------------
MSG.IPKO .CZ "TCP/IP Not Loaded/Configured.\r\n"
MSG.USAGE .CZ "Usage : GOPHER <ip|host> [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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
*--------------------------------------

View File

@ -2,6 +2,8 @@ NEW
AUTO 3,1
#include <stdio.h>
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) {