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 #'{' .7 cmp #'{'
bne .9 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 bmi .1
lda #$60 RTS lda #$60 RTS
@ -250,11 +259,17 @@ F.CallRetV sec
ldx ZPPtr2+1 local : expected Q ldx ZPPtr2+1 local : expected Q
phx phx
>STYA ZPPtr2 >STYA ZPPtr2 T/Q
ror ZPPtr1+1 bRetV 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 EXP.GetYASizeOfInAX
jsr CODE.AddLocal add room for return value 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 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 >PUSHW ZPLineBufPtr
jsr SCOPE.Push jsr SCOPE.Push
>SYSCALL SListNewKey >SYSCALL SListNewKey
@ -29,30 +43,14 @@ SYM.New.Pass1 jsr SYM.BufInitYAXC set buf according C
.FIN .FIN
bra SYM.New.2 bra SYM.New.2
.90 lda #E.REDEF
sec
SYM.New.9 rts SYM.New.9 rts
*-------------------------------------- *--------------------------------------
SYM.New.Pass2 >PUSHB.G CC.hSyms SYM.New.Pass2 jsr SYM.Get
>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
bcs SYM.New.9 bcs SYM.New.9
.DO _DBG_SYM=1
jsr SYM.DEBUGG
.FIN
*-------------------------------------- *--------------------------------------
SYM.New.2 jsr CC.GetCharNB SYM.New.2 jsr CC.GetCharNB
bcs .98 bcs .98
@ -379,6 +377,28 @@ SYM.GetAddr2 ldy #SYM.SC
.9 rts .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 SYM.NewKey >PUSHA
>PUSHW ZPLineBufPtr >PUSHW ZPLineBufPtr
>PUSHWI 0 ScopeID >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.bVBorder .EQ %00001000
S.OBJ.F.bHScroll .EQ %00000100 S.OBJ.F.bHScroll .EQ %00000100
S.OBJ.F.bVScroll .EQ %00000010 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 .EQ 2
S.OBJ.S.bActive .EQ %10000000 S.OBJ.S.bActive .EQ %10000000
S.OBJ.S.bDisabled .EQ %01000000 S.OBJ.S.bDisabled .EQ %01000000

View File

@ -18,7 +18,7 @@ NEW
#define F_bVBorder 8 #define F_bVBorder 8
#define F_bHScroll 4 #define F_bHScroll 4
#define F_bVScroll 2 #define F_bVScroll 2
#define F_bCursor 1 #define F_bEdit 1
#define P_pTitle 16 #define P_pTitle 16
#define P_pMenu 18 #define P_pMenu 18

View File

@ -412,7 +412,7 @@ OBJ.Draw.Top lda (pStack)
* clc * clc
beq OBJ.Draw.RTS beq OBJ.Draw.RTS
jsr LB.Init OBJ.Draw.Top.I jsr LB.Init
ldy #S.OBJ.X1 ldy #S.OBJ.X1
lda (ZPObjPtr),y lda (ZPObjPtr),y
@ -502,9 +502,7 @@ OBJ.Draw.Top lda (pStack)
OBJ.Draw.Body lda (pStack) OBJ.Draw.Body lda (pStack)
jsr LIB.GetOBJ jsr LIB.GetOBJ
jsr OBJ.CurOff OBJ.Draw.Body.I ldy #S.OBJ.InnerY
ldy #S.OBJ.InnerY
lda (ZPObjPtr),y lda (ZPObjPtr),y
>PUSHA Start >PUSHA Start
@ -514,6 +512,8 @@ OBJ.Draw.Body lda (pStack)
>PUSHBI 0 Relative Y >PUSHBI 0 Relative Y
OBJ.Draw.Lines jsr OBJ.CurOff
.1 jsr LB.Init .1 jsr LB.Init
ldy #S.OBJ.X1 ldy #S.OBJ.X1
@ -598,6 +598,7 @@ OBJ.Draw.Bottom lda (pStack)
* clc * clc
beq OBJ.Draw.Body.RTS beq OBJ.Draw.Body.RTS
OBJ.Draw.Bottom.I
jsr LB.Init jsr LB.Init
ldy #S.OBJ.X1 ldy #S.OBJ.X1
@ -712,15 +713,30 @@ OBJ.SetProp ldy #3 hObj
lda (pStack),y lda (pStack),y
tay prop tay prop
>PULLA >PULLA Value
sta (ZPObjPtr),y sta (ZPObjPtr),y
iny iny
>PULLA >PULLA
sta (ZPObjPtr),y sta (ZPObjPtr),y
inc pStack >PULLA prop
inc pStack inc pStack hObj
* clc 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 rts
*-------------------------------------- *--------------------------------------
OBJ.Activate >PUSHA hObj OBJ.Activate >PUSHA hObj
@ -808,9 +824,40 @@ OBJ.FindActive ldx ZPObjPtr
rts 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 OBJ.CurOn ldy #S.OBJ.F
lda (ZPObjPtr),y lda (ZPObjPtr),y
and #S.OBJ.F.bCursor and #S.OBJ.F.bEdit
beq .8 beq .8
ldy #S.OBJ.S ldy #S.OBJ.S
@ -851,7 +898,7 @@ OBJ.CurOn ldy #S.OBJ.F
*-------------------------------------- *--------------------------------------
OBJ.CurOff ldy #S.OBJ.F OBJ.CurOff ldy #S.OBJ.F
lda (ZPObjPtr),y lda (ZPObjPtr),y
and #S.OBJ.F.bCursor and #S.OBJ.F.bEdit
beq .8 beq .8
ldy #S.OBJ.S ldy #S.OBJ.S

View File

@ -11,7 +11,6 @@ TBOX.New lda #S.OBJ.T.TBOX
jsr OBJ.PullBuf jsr OBJ.PullBuf
>PULLA >PULLA
ora #S.OBJ.F.bCursor
ldy #S.OBJ.F ldy #S.OBJ.F
sta (ZPObjPtr),y sta (ZPObjPtr),y
@ -40,48 +39,48 @@ TBOX.Run ldy #S.OBJ.S
lda (pStack) Event lda (pStack) Event
cmp #C.SPACE cmp #C.SPACE
bcs .2 bcs .1
asl asl
tax tax
jsr .1 jmp (J.TBOX.RUN,x)
bcc TBOX.RUN.7
rts
.1 jmp (J.TBOX.RUN,x)
.2 cmp #C.DEL
bne TBOX.RUN.CR
.1 cmp #C.DEL
beq .3
jsr TBOX.GetBuf 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 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 TBOX.RUN.Ignore lda #0
sec sec
rts 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 TBOX.RUN.SelBegin
ldy #S.TBOX.BufPtr ldy #S.TBOX.BufPtr
lda (ZPObjPtr),y lda (ZPObjPtr),y
@ -146,13 +145,13 @@ TBOX.RUN.BS ldy #S.TBOX.BufPtr+1
lda (ZPPtr2) lda (ZPPtr2)
cmp #C.CR cmp #C.CR
beq .1 beq .2
ldy #S.TBOX.DocX ldy #S.TBOX.DocX
jsr OBJ.DecWordAtY jsr OBJ.DecWordAtY
jmp TBOX.SetViewPort jmp TBOX.CheckViewPort
.1 ldy #S.TBOX.DocY .2 ldy #S.TBOX.DocY
jsr OBJ.DecWordAtY jsr OBJ.DecWordAtY
jmp TBOX.RUN.EOL jmp TBOX.RUN.EOL
@ -222,7 +221,7 @@ TBOX.RUN.VT1 jsr TBOX.GetCurlineInAX
txa txa
sta (ZPObjPtr),y sta (ZPObjPtr),y
jmp TBOX.SetViewPort jmp TBOX.CheckViewPort
TBOX.RUN.VT.8 clc TBOX.RUN.VT.8 clc
rts rts
@ -253,7 +252,7 @@ TBOX.RUN.FS1 lda (ZPPtr2)
.7 jsr OBJ.IncWordAtY .7 jsr OBJ.IncWordAtY
jsr TBOX.SetViewPort jmp TBOX.CheckViewPort
.8 clc .8 clc
rts rts
@ -274,7 +273,7 @@ TBOX.RUN.SOL lda #0
lda TempC+1 lda TempC+1
sta (ZPObjPtr),y sta (ZPObjPtr),y
jmp TBOX.SetViewPort jmp TBOX.CheckViewPort
*-------------------------------------- *--------------------------------------
TBOX.RUN.EOL jsr TBOX.GetCurlineInAX TBOX.RUN.EOL jsr TBOX.GetCurlineInAX
jsr TBOX.GetLineAX jsr TBOX.GetLineAX
@ -299,12 +298,25 @@ TBOX.RUN.EOL jsr TBOX.GetCurlineInAX
txa txa
sta (ZPObjPtr),y 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 rts
*-------------------------------------- *--------------------------------------
TBOX.RUN.PGDN clc TBOX.RUN.PGUP
*--------------------------------------
TBOX.RUN.PGDN lda #0
sec
rts
*--------------------------------------
TBOX.RUN.QUIT lda #3 User Interrupt
clc
rts rts
*-------------------------------------- *--------------------------------------
TBOX.RUN.Home ldy #S.TBOX.DocX TBOX.RUN.Home ldy #S.TBOX.DocX
@ -323,7 +335,7 @@ TBOX.RUN.Home ldy #S.TBOX.DocX
iny iny
sta (ZPObjPtr),y sta (ZPObjPtr),y
jmp TBOX.SetViewPort jmp TBOX.CheckViewPort
*-------------------------------------- *--------------------------------------
TBOX.RUN.EraseCL TBOX.RUN.EraseCL
jsr TBOX.GetCurlineInAX jsr TBOX.GetCurlineInAX
@ -367,7 +379,36 @@ TBOX.RUN.EOF lda #$ff
txa txa
sta (ZPObjPtr),y 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 TBOX.Draw ldy #S.TBOX.VScroll
lda (ZPObjPtr),y lda (ZPObjPtr),y
@ -427,7 +468,8 @@ TBOX.Draw ldy #S.TBOX.VScroll
dex dex
bne .7 bne .7
.8 .8 clc
rts
*-------------------------------------- *--------------------------------------
TBOX.Activate TBOX.Activate
*-------------------------------------- *--------------------------------------
@ -585,7 +627,7 @@ TBOX.ToBuf1 ldy #S.TBOX.BufCnt
jsr OBJ.IncWordAtY jsr OBJ.IncWordAtY
.1 jsr TBOX.GetBuf jsr TBOX.GetBuf
jsr TBOX.Insert1 jsr TBOX.Insert1
@ -660,7 +702,18 @@ TBOX.DeleteAXC adc ZPPtr2
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
TBOX.CheckViewPort
jsr TBOX.SetViewPort
bit bRepaintAll
bpl .8
jmp TBOX.DrawAllLines
.8 jmp OBJ.CurUpdPos
*--------------------------------------
TBOX.SetViewPort TBOX.SetViewPort
stz bRepaintAll
ldy #S.TBOX.DocX+1 ldy #S.TBOX.DocX+1
lda (ZPObjPtr),y lda (ZPObjPtr),y
tax tax
@ -752,8 +805,7 @@ TBOX.SetViewPort
.20 ldy #S.OBJ.CurX .20 ldy #S.OBJ.CurX
sta (ZPObjPtr),y sta (ZPObjPtr),y
sec dec bRepaintAll
ror bRepaintAll
*-------------------------------------- *--------------------------------------
.21 ldy #S.TBOX.DocY+1 .21 ldy #S.TBOX.DocY+1
lda (ZPObjPtr),y lda (ZPObjPtr),y
@ -847,8 +899,8 @@ TBOX.SetViewPort
.40 ldy #S.OBJ.CurY .40 ldy #S.OBJ.CurY
sta (ZPObjPtr),y sta (ZPObjPtr),y
sec
ror bRepaintAll dec bRepaintAll
.41 clc CLC RTS to jmp to .41 clc CLC RTS to jmp to
rts rts

View File

@ -11,7 +11,7 @@ TLINE.New lda #S.OBJ.T.TLINE
jsr OBJ.PullBuf jsr OBJ.PullBuf
ldy #S.OBJ.F 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 sta (ZPObjPtr),y
>PULLA >PULLA

View File

@ -123,10 +123,10 @@ J.ObjDeactivate .DA SCRN.Deactivate
J.TBOX.RUN .DA TBOX.RUN.Ignore J.TBOX.RUN .DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore .DA TBOX.RUN.Ignore
.DA TBOX.RUN.SelBegin Ctrl-B .DA TBOX.RUN.SelBegin Ctrl-B
.DA TBOX.RUN.Ignore Ctrl-C .DA TBOX.RUN.Ignore ** Copy
.DA TBOX.RUN.Ignore .DA TBOX.RUN.Ignore ** Delete Selection
.DA TBOX.RUN.SelEnd Ctrl-E .DA TBOX.RUN.SelEnd Ctrl-E
.DA TBOX.RUN.Ignore .DA TBOX.RUN.Ignore ** Find...
.DA TBOX.RUN.SOL Ctrl-G .DA TBOX.RUN.SOL Ctrl-G
.DA TBOX.RUN.BS .DA TBOX.RUN.BS
.DA TBOX.RUN.Ignore TAB .DA TBOX.RUN.Ignore TAB
@ -134,19 +134,19 @@ J.TBOX.RUN .DA TBOX.RUN.Ignore
.DA TBOX.RUN.VT .DA TBOX.RUN.VT
.DA TBOX.RUN.EOL Ctrl-L .DA TBOX.RUN.EOL Ctrl-L
.DA TBOX.RUN.CR .DA TBOX.RUN.CR
.DA TBOX.RUN.Ignore .DA TBOX.RUN.Ignore ** Next...
.DA TBOX.RUN.PGUP Ctrl-O .DA TBOX.RUN.PGUP Ctrl-O
.DA TBOX.RUN.PGDN Ctrl-P .DA TBOX.RUN.PGDN Ctrl-P
.DA TBOX.RUN.Ignore .DA TBOX.RUN.QUIT Ctrl-Q
.DA TBOX.RUN.Ignore .DA TBOX.RUN.Ignore ** Replace
.DA TBOX.RUN.Ignore .DA TBOX.RUN.Ignore ** save
.DA TBOX.RUN.Home Ctrl-T .DA TBOX.RUN.Home Ctrl-T
.DA TBOX.RUN.FS .DA TBOX.RUN.FS
.DA TBOX.RUN.Ignore .DA TBOX.RUN.Ignore ** Paste
.DA TBOX.RUN.EraseCL Ctrl-W .DA TBOX.RUN.EraseCL Ctrl-W
.DA TBOX.RUN.Ignore .DA TBOX.RUN.Ignore ** Cut
.DA TBOX.RUN.EOF Ctrl-Y .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 .DA TBOX.RUN.Ignore
.DA TBOX.RUN.Ignore .DA TBOX.RUN.Ignore

View File

@ -27,14 +27,14 @@ ZS.END .ED
*-------------------------------------- *--------------------------------------
CS.START cld CS.START cld
jmp (.1,x) jmp (.1,x)
.DA #$61 6502,Level 1 (65c02) .DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1 .DA #1 BIN Layout Version 1
.DA #0 S.PS.F.EVENT .DA #0 S.PS.F.EVENT
.DA #0 .DA #0
.DA CS.END-CS.START Code Size (without Constants) .DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data Segment Size .DA DS.END-DS.START Data Segment Size
.DA #64 Stack Size .DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size .DA #ZS.END-ZS.START Zero Page Size
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
.1 .DA CS.INIT .1 .DA CS.INIT
@ -61,8 +61,11 @@ L.BUT.Cancel .DA BUT.Cancel
CS.INIT >LDYA L.LIBTUI CS.INIT >LDYA L.LIBTUI
>SYSCALL LoadLib >SYSCALL LoadLib
bcs CS.INIT.RTS bcs CS.INIT.RTS
sta hLIBTUI sta hLIBTUI
* clc * clc
CS.INIT.RTS rts CS.INIT.RTS rts
*-------------------------------------- *--------------------------------------
CS.RUN >LIBCALL hLIBTUI,LIBTUI.Init CS.RUN >LIBCALL hLIBTUI,LIBTUI.Init
@ -71,37 +74,51 @@ CS.RUN >LIBCALL hLIBTUI,LIBTUI.Init
sta hCTX sta hCTX
jsr CS.SCRN.Init jsr CS.SCRN.Init
bcs CS.RUN.RTS bcs CS.RUN.RTS
jsr CS.TBOX1.Init jsr CS.TBOX1.Init
bcs CS.RUN.RTS bcs CS.RUN.RTS
jsr CS.LBOX1.Init jsr CS.LBOX1.Init
bcs CS.RUN.RTS bcs CS.RUN.RTS
jsr CS.TLINE.Init jsr CS.TLINE.Init
bcs CS.RUN.RTS bcs CS.RUN.RTS
jsr CS.RADIO.Init jsr CS.RADIO.Init
bcs CS.RUN.RTS bcs CS.RUN.RTS
jsr CS.CBOX.Init jsr CS.CBOX.Init
bcs CS.RUN.RTS bcs CS.RUN.RTS
jsr CS.BUT.Init jsr CS.BUT.Init
bcs CS.RUN.RTS 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 >LIBCALL hLIBTUI,LIBTUI.Activate
*-------------------------------------- *--------------------------------------
CS.RUN.LOOP lda hSCRN CS.RUN.LOOP lda hSCRN
>LIBCALL hLIBTUI,LIBTUI.Exec >LIBCALL hLIBTUI,LIBTUI.Exec
bcs .9 bcs .9
cmp #EV.RESIZE cmp #EV.RESIZE
bne .1 bne .1
jsr CS.SCRN.Draw jsr CS.SCRN.Draw
bcs .9 bcs .9
bra CS.RUN.LOOP bra CS.RUN.LOOP
.1 cmp #EV.SAVE .1 cmp #EV.SAVE
bne .2 bne .2
jsr CS.RUN.DLGSAVE jsr CS.RUN.DLGSAVE
bcc CS.RUN.LOOP bcc CS.RUN.LOOP
.2 cmp #EV.QUIT .2 cmp #EV.QUIT
bne CS.RUN.LOOP bne CS.RUN.LOOP
lda hSCRN lda hSCRN
>LIBCALL hLIBTUI,LIBTUI.Destroy >LIBCALL hLIBTUI,LIBTUI.Destroy
@ -110,10 +127,11 @@ CS.RUN.LOOP lda hSCRN
.9 .9
CS.RUN.RTS rts 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 >PUSHBI S.OBJ.F.bTitle+S.OBJ.F.bStatus
>LIBCALL hLIBTUI,LIBTUI.NewScrn >LIBCALL hLIBTUI,LIBTUI.NewScrn
bcs .9 bcs .9
sta hSCRN sta hSCRN
>PUSHA >PUSHA
>PUSHBI S.OBJ.pTITLE >PUSHBI S.OBJ.pTITLE
@ -123,6 +141,7 @@ CS.SCRN.Init >PUSHB hCTX hParent
>PUSHBI S.OBJ.pSTATUS >PUSHBI S.OBJ.pSTATUS
>PUSHW L.SCRN.Status >PUSHW L.SCRN.Status
>LIBCALL hLIBTUI,LIBTUI.SetProp >LIBCALL hLIBTUI,LIBTUI.SetProp
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.TBOX1.Init >LDYAI 1024 CS.TBOX1.Init >LDYAI 1024
@ -138,15 +157,16 @@ CS.TBOX1.Init >LDYAI 1024
>PUSHB hSCRN hParent >PUSHB hSCRN hParent
>PUSHBI 1 X1 >PUSHBI 1 X1
>PUSHBI 1 Y1 >PUSHBI 1 Y1
>PUSHBI 44 W >PUSHBI 46 W
>PUSHBI 20 H >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 >LDA.G TBOX1.hBuf
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>PUSHYA >PUSHYA
>PUSHWI 1024 >PUSHWI 1024
>LIBCALL hLIBTUI,LIBTUI.NewTBox >LIBCALL hLIBTUI,LIBTUI.NewTBox
bcs .9 bcs .9
sta hTBOX1 sta hTBOX1
>PUSHA >PUSHA
>PUSHBI S.OBJ.pTITLE >PUSHBI S.OBJ.pTITLE
@ -156,6 +176,7 @@ CS.TBOX1.Init >LDYAI 1024
>PUSHBI S.OBJ.pSTATUS >PUSHBI S.OBJ.pSTATUS
>PUSHW L.TBOX1.Status >PUSHW L.TBOX1.Status
>LIBCALL hLIBTUI,LIBTUI.SetProp >LIBCALL hLIBTUI,LIBTUI.SetProp
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.LBOX1.Init >PUSHB hSCRN hParent CS.LBOX1.Init >PUSHB hSCRN hParent
@ -214,6 +235,7 @@ CS.BUT.Init >PUSHB hSCRN hParent
>PUSHW L.BUTS.Label >PUSHW L.BUTS.Label
>LIBCALL hLIBTUI,LIBTUI.NewBut >LIBCALL hLIBTUI,LIBTUI.NewBut
bcs .9 bcs .9
>PUSHB hSCRN hParent >PUSHB hSCRN hParent
>PUSHBI 65 X1 >PUSHBI 65 X1
>PUSHBI 20 Y1 >PUSHBI 20 Y1
@ -224,32 +246,34 @@ CS.BUT.Init >PUSHB hSCRN hParent
.9 .9
CS.BUT.Init.RTS rts CS.BUT.Init.RTS rts
*-------------------------------------- *--------------------------------------
CS.RUN.DLGSAVE >PUSHB hCTX hParent CS.RUN.DLGSAVE >PUSHB hCTX hParent
>PUSHBI 70 W >PUSHBI 70 W
>PUSHBI 11 H >PUSHBI 11 H
>PUSHW L.DLGS.Title >PUSHW L.DLGS.Title
>LIBCALL hLIBTUI,LIBTUI.NewDlg >LIBCALL hLIBTUI,LIBTUI.NewDlg
bcs CS.BUT.Init.RTS bcs CS.BUT.Init.RTS
sta hDLGS sta hDLGS
>PUSHB hDLGS hParent >PUSHB hDLGS hParent
>PUSHBI 50 X1 >PUSHBI 50 X1
>PUSHBI 7 Y1 >PUSHBI 7 Y1
>PUSHBI C.CR >PUSHBI C.CR
>PUSHBI EV.OK >PUSHBI EV.OK
>PUSHW L.BUT.OK >PUSHW L.BUT.OK
>LIBCALL hLIBTUI,LIBTUI.NewBut >LIBCALL hLIBTUI,LIBTUI.NewBut
bcs .9 bcs .9
sta ZPPtr1 sta ZPPtr1
>PUSHB hDLGS hParent >PUSHB hDLGS hParent
>PUSHBI 57 X1 >PUSHBI 57 X1
>PUSHBI 7 Y1 >PUSHBI 7 Y1
>PUSHBI 3 Ctrl-C >PUSHBI 3 Ctrl-C
>PUSHBI EV.CANCEL >PUSHBI EV.CANCEL
>PUSHW L.BUT.Cancel >PUSHW L.BUT.Cancel
>LIBCALL hLIBTUI,LIBTUI.NewBut >LIBCALL hLIBTUI,LIBTUI.NewBut
bcs .9 bcs .9
lda hDLGS lda hDLGS
>LIBCALL hLIBTUI,LIBTUI.Draw >LIBCALL hLIBTUI,LIBTUI.Draw
bcs .9 bcs .9
@ -270,11 +294,12 @@ CS.RUN.DLGSAVE >PUSHB hCTX hParent
plp plp
rts rts
*-------------------------------------- *--------------------------------------
CS.DOEVENT sec do not discard TIMER event CS.DOEVENT sec do not discard TIMER event
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT >LDA.G TBOX1.hBuf CS.QUIT >LDA.G TBOX1.hBuf
beq .1 beq .1
>SYSCALL FreeMem >SYSCALL FreeMem
.1 lda hCTX .1 lda hCTX
beq .2 beq .2
@ -283,7 +308,9 @@ CS.QUIT >LDA.G TBOX1.hBuf
.2 lda hLIBTUI .2 lda hLIBTUI
beq .8 beq .8
>SYSCALL UnloadLib >SYSCALL UnloadLib
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------

View File

@ -2,6 +2,8 @@ NEW
AUTO 3,1 AUTO 3,1
#include <stdio.h> #include <stdio.h>
int testf4(int, int);
int testf1() { int testf1() {
puts("testf1 called!"); puts("testf1 called!");
int r = 1029; int r = 1029;
@ -19,7 +21,7 @@ int testf2() {
void testf3(char *msg) void testf3(char *msg)
{ {
puts(msg); puts(msg);
return; return; //not required just for testing
} }
int testf4(int arg1, int arg2) { int testf4(int arg1, int arg2) {