mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-15 07:31:32 +00:00
RAMWORKS:Added SuperExpander support, PPP:new driver, HTTPGET:BugFix GH#176, ASM:fix around "<" & ">" ops, KERNEL:Added Cursor show/hide ESC seq, LIBTCPIP: tweaks for PPP
This commit is contained in:
parent
5d6d37223a
commit
c693892ce0
Binary file not shown.
Binary file not shown.
@ -315,16 +315,10 @@ EXP.OP.AND ldx #3
|
||||
bpl .1
|
||||
rts
|
||||
*---------------------------------------
|
||||
EXP.OP.LOW jsr EXP.OP.SUB
|
||||
|
||||
lda #0
|
||||
rol
|
||||
jmp EXP.SetAccA
|
||||
*---------------------------------------
|
||||
EXP.OP.EQU ldx #0 ARG-ACC->ACC
|
||||
EXP.OP.EQU ldx #0 ARG-ACC->ACC
|
||||
ldy #4
|
||||
|
||||
clc if not Equals, return 0
|
||||
clc if not Equals, return 0
|
||||
|
||||
.1 lda SRC.ARG,x
|
||||
eor SRC.ACC,x
|
||||
@ -334,20 +328,47 @@ EXP.OP.EQU ldx #0 ARG-ACC->ACC
|
||||
dey
|
||||
bne .1
|
||||
|
||||
sec equals, return 1
|
||||
sec equals, return 1
|
||||
|
||||
.2 lda #0
|
||||
rol
|
||||
jmp EXP.SetAccA
|
||||
*---------------------------------------
|
||||
EXP.OP.GRT jsr EXP.OP.SUB
|
||||
EXP.OP.LWR jsr EXP.SUB
|
||||
bcc .2
|
||||
|
||||
lda #0
|
||||
ldx #3
|
||||
|
||||
.1 lda SRC.ACC,x
|
||||
bne .2
|
||||
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
clc
|
||||
|
||||
.2 lda #0
|
||||
rol
|
||||
eor #1
|
||||
jmp EXP.SetAccA
|
||||
*---------------------------------------
|
||||
EXP.OP.ADD ldx #0 ARG-ACC->ACC
|
||||
EXP.OP.GRT jsr EXP.SUB
|
||||
bcc .2
|
||||
|
||||
ldx #3
|
||||
|
||||
.1 lda SRC.ACC,x
|
||||
bne .2
|
||||
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
clc
|
||||
|
||||
.2 lda #0
|
||||
rol
|
||||
jmp EXP.SetAccA
|
||||
*---------------------------------------
|
||||
EXP.OP.ADD ldx #0 ARG-ACC->ACC
|
||||
ldy #4
|
||||
|
||||
clc
|
||||
@ -364,7 +385,17 @@ EXP.OP.ADD ldx #0 ARG-ACC->ACC
|
||||
lda #E.VAL.TOO.BIG
|
||||
.8 rts
|
||||
*---------------------------------------
|
||||
EXP.OP.SUB ldx #0 ARG-ACC->ACC
|
||||
EXP.OP.SUB jsr EXP.SUB
|
||||
bcs .8
|
||||
|
||||
lda #E.VAL.TOO.BIG
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
EXP.SUB ldx #0 ARG-ACC->ACC
|
||||
ldy #4
|
||||
|
||||
sec
|
||||
@ -376,13 +407,6 @@ EXP.OP.SUB ldx #0 ARG-ACC->ACC
|
||||
dey
|
||||
bne .1
|
||||
|
||||
bcs .8
|
||||
|
||||
lda #E.VAL.TOO.BIG
|
||||
sec
|
||||
rts
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
EXP.OP.MUL >PUSHL SRC.ARG
|
||||
|
@ -207,7 +207,7 @@ J.EXP.OP .DA EXP.OP.EOR ^!|&<=>+-*/
|
||||
.DA EXP.OP.ORA
|
||||
.DA EXP.OP.ORA
|
||||
.DA EXP.OP.AND
|
||||
.DA EXP.OP.LOW
|
||||
.DA EXP.OP.LWR
|
||||
.DA EXP.OP.EQU
|
||||
.DA EXP.OP.GRT
|
||||
.DA EXP.OP.ADD
|
||||
|
@ -29,7 +29,6 @@ ZPReqBufPtr .BS 2
|
||||
ZPReqBufLen .BS 2
|
||||
bHeader .BS 1
|
||||
TimeOut .BS 1
|
||||
bURI .BS 1
|
||||
|
||||
hEncodedBuf .BS 1
|
||||
ZPEncodedBufPtr .BS 2
|
||||
@ -174,8 +173,8 @@ CS.RUN.HOSTOK jsr CS.RUN.GETNEXTARG
|
||||
.11 cmp #'U'
|
||||
bne .2
|
||||
|
||||
bit bURI
|
||||
bmi CS.RUN.ESYN
|
||||
lda ZPReqBufPtr+1
|
||||
bne CS.RUN.ESYN
|
||||
|
||||
jsr CS.RUN.GETNEXTARG
|
||||
|
||||
@ -184,15 +183,13 @@ CS.RUN.HOSTOK jsr CS.RUN.GETNEXTARG
|
||||
>STYA ZPReqBufPtr
|
||||
>SYSCALL StrLen
|
||||
>STYA ZPReqBufLen
|
||||
sec
|
||||
ror bURI
|
||||
bra CS.RUN.HOSTOK
|
||||
|
||||
.2 cmp #'F'
|
||||
bne .3
|
||||
|
||||
bit bURI
|
||||
bmi CS.RUN.ESYN
|
||||
lda ZPReqBufPtr+1
|
||||
bne CS.RUN.ESYN
|
||||
|
||||
jsr CS.RUN.GETNEXTARG
|
||||
bcs .9
|
||||
@ -205,28 +202,28 @@ CS.RUN.HOSTOK jsr CS.RUN.GETNEXTARG
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPReqBufPtr
|
||||
|
||||
sec
|
||||
ror bURI
|
||||
jmp CS.RUN.HOSTOK
|
||||
|
||||
.3 cmp #'O'
|
||||
bne .9
|
||||
|
||||
inc ArgIndex
|
||||
lda ArgIndex
|
||||
>SYSCALL ArgV
|
||||
lda ZPFileName+1
|
||||
bne CS.RUN.ESYN2
|
||||
|
||||
jsr CS.RUN.GETNEXTARG
|
||||
bcs .9
|
||||
|
||||
>STYA ZPFileName
|
||||
jmp CS.RUN.HOSTOK
|
||||
*--------------------------------------
|
||||
CS.RUN.GETNEXTARG
|
||||
inc ArgIndex
|
||||
lda ArgIndex
|
||||
>SYSCALL ArgV
|
||||
CS.RUN.ESYN2 lda #E.SYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.ARGSOK >PUSHW L.MSG.CONNECT
|
||||
CS.RUN.ARGSOK lda ZPReqBufPtr+1
|
||||
beq CS.RUN.ESYN2
|
||||
|
||||
>PUSHW L.MSG.CONNECT
|
||||
ldx #0
|
||||
|
||||
.1 >PUSHB SA.REMOTE+S.SOCKADDR.ADDR,x
|
||||
@ -325,7 +322,11 @@ CS.RUN.GET jsr CS.RUN.ENCODE
|
||||
*--------------------------------------
|
||||
CS.RUN.SKTERR pha
|
||||
>PUSHW L.MSG.SKTERR
|
||||
pla
|
||||
bra CS.RUN.ERR
|
||||
*--------------------------------------
|
||||
CS.RUN.IOERR pha
|
||||
>PUSHW L.MSG.IOERR
|
||||
CS.RUN.ERR pla
|
||||
pha
|
||||
>PUSHA
|
||||
>PUSHBI 1
|
||||
@ -334,15 +335,10 @@ CS.RUN.SKTERR pha
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.IOERR pha
|
||||
>PUSHW L.MSG.IOERR
|
||||
pla
|
||||
pha
|
||||
>PUSHA
|
||||
>PUSHBI 1
|
||||
>SYSCALL PrintF
|
||||
pla
|
||||
sec
|
||||
CS.RUN.GETNEXTARG
|
||||
inc ArgIndex
|
||||
lda ArgIndex
|
||||
>SYSCALL ArgV
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.ENCODE >LDYA ZPReqBufPtr
|
||||
|
@ -1,458 +0,0 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
.OP 65C02
|
||||
.OR $2000
|
||||
.TF root/ppptest
|
||||
*--------------------------------------
|
||||
.INB inc/macros.i
|
||||
.INB inc/a2osx.i
|
||||
*--------------------------------------
|
||||
TIMEOUT.MAX .EQ 200 20 sec.
|
||||
BUFSIZE .EQ 256
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPBIN
|
||||
ZS.START
|
||||
ZPBufPtr .BS 2
|
||||
ZPBufLen .BS 2
|
||||
ZPPtr1 .BS 2
|
||||
ZPPtr2 .BS 2
|
||||
|
||||
FCS .BS 2
|
||||
hBuf .BS 1
|
||||
hDev .BS 1
|
||||
TimeOut .BS 1
|
||||
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 #32 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.MSG.USAGE .DA MSG.USAGE
|
||||
L.MSG.DEVOK .DA MSG.DEVOK
|
||||
L.MSG.AT .DA MSG.AT
|
||||
L.MSG.BUFLEN .DA MSG.BUFLEN
|
||||
L.MSG.HEXDUMP .DA MSG.HEXDUMP
|
||||
L.PPP.1 .DA PPP.1
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN lda #1
|
||||
>SYSCALL ArgV
|
||||
bcs .9
|
||||
|
||||
>PUSHYA
|
||||
>PUSHBI O.RDWR
|
||||
>PUSHBI 0 type
|
||||
>PUSHWZ auxtype
|
||||
>SYSCALL FOpen
|
||||
bcs .99
|
||||
|
||||
sta hDev
|
||||
>LDYA L.MSG.DEVOK
|
||||
>SYSCALL PutS
|
||||
|
||||
>LDYAI BUFSIZE
|
||||
>SYSCALL GetMem
|
||||
bcs .99
|
||||
|
||||
>STYA ZPBufPtr
|
||||
stx hBuf
|
||||
|
||||
bra CS.RUN.TEST
|
||||
* jmp CS.RUN.LOOP
|
||||
|
||||
.9 >LDYA L.MSG.USAGE
|
||||
>SYSCALL PutS
|
||||
|
||||
lda #E.SYN
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
CS.RUN.TEST
|
||||
* jsr ATInit
|
||||
* bcs .9
|
||||
|
||||
>LDYAI PPP.1.LEN
|
||||
>STYA ZPBufLen
|
||||
>LDYA L.PPP.1
|
||||
jsr PPPFCS16
|
||||
|
||||
>LDYA L.PPP.1
|
||||
jsr DumpBuf
|
||||
|
||||
>PUSHB hDev
|
||||
>PUSHW L.PPP.1
|
||||
>PUSHWI PPP.1.LEN
|
||||
>SYSCALL FWrite
|
||||
bcs .9
|
||||
|
||||
>SLEEP
|
||||
|
||||
>PUSHB hDev
|
||||
>PUSHW ZPBufPtr
|
||||
>PUSHWI BUFSIZE
|
||||
>SYSCALL FRead
|
||||
bcs .9
|
||||
|
||||
>STYA ZPBufLen
|
||||
|
||||
>LDYA ZPBufPtr
|
||||
jsr DumpBuf
|
||||
|
||||
lda #0
|
||||
sec
|
||||
|
||||
.9
|
||||
CS.RUN.RTS rts
|
||||
*--------------------------------------
|
||||
CS.RUN.LOOP >SLEEP
|
||||
|
||||
lda hDev
|
||||
>SYSCALL FEOF
|
||||
bcs CS.RUN.RTS
|
||||
tay
|
||||
bne .1 EOF, no char
|
||||
|
||||
>PUSHB hDev
|
||||
>PUSHW ZPBufPtr
|
||||
>PUSHWI BUFSIZE
|
||||
>SYSCALL FRead
|
||||
bcs CS.RUN.RTS
|
||||
|
||||
phy
|
||||
pha
|
||||
|
||||
ldy #S.PS.hStdOut
|
||||
lda (pPS),y
|
||||
>PUSHA
|
||||
>PUSHW ZPBufPtr
|
||||
|
||||
pla
|
||||
ply
|
||||
>PUSHYA len
|
||||
>SYSCALL FWrite
|
||||
bcs .9
|
||||
|
||||
.1 ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
|
||||
>SYSCALL FEOF
|
||||
bcs .9
|
||||
tay
|
||||
bne CS.RUN.LOOP EOF = true, no char from STDIN
|
||||
|
||||
ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
>PUSHA
|
||||
>PUSHW ZPBufPtr
|
||||
>PUSHWI BUFSIZE
|
||||
>SYSCALL FRead
|
||||
bcs .9
|
||||
|
||||
tax
|
||||
lda (ZPBufPtr)
|
||||
cmp #$14 Ctrl-T
|
||||
beq .9
|
||||
|
||||
txa
|
||||
|
||||
phy
|
||||
pha
|
||||
>PUSHB hDev
|
||||
>PUSHW ZPBufPtr
|
||||
pla
|
||||
ply
|
||||
>PUSHYA len
|
||||
>SYSCALL FWrite
|
||||
bcs .9
|
||||
|
||||
jmp CS.RUN.LOOP
|
||||
|
||||
.9 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 lda hDev
|
||||
beq .1
|
||||
|
||||
>SYSCALL FClose
|
||||
|
||||
.1 lda hBuf
|
||||
beq .2
|
||||
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.2 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
ATInit lda #250
|
||||
sta TimeOut
|
||||
|
||||
>PUSHB hDev
|
||||
>PUSHW L.MSG.AT
|
||||
>PUSHWI MSG.AT.LEN
|
||||
>SYSCALL FWrite
|
||||
bcs .9
|
||||
|
||||
.1 lda hDev
|
||||
>SYSCALL FEOF
|
||||
bcs .9
|
||||
|
||||
tay
|
||||
beq .2
|
||||
|
||||
>SLEEP
|
||||
|
||||
dec TimeOut
|
||||
bne .1
|
||||
|
||||
rts
|
||||
|
||||
.2 >PUSHB hDev
|
||||
>PUSHW ZPBufPtr
|
||||
>PUSHWI BUFSIZE
|
||||
>SYSCALL FRead
|
||||
bcs .9
|
||||
|
||||
>PUSHYA len
|
||||
>PUSHW ZPBufPtr
|
||||
ldy #S.PS.hStdOut
|
||||
lda (pPS),y
|
||||
bcc .1
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* U16 fcs = 0xFFFF;
|
||||
*
|
||||
* while (len--)
|
||||
* {
|
||||
* fcs=(fcs >> 8) ^ fcstab[(fcs ^ *cp++) & 0xff];
|
||||
* }
|
||||
* return (~fcs);
|
||||
*--------------------------------------
|
||||
PPPFCS16 >STYA ZPPtr1
|
||||
|
||||
lda #$ff
|
||||
sta FCS
|
||||
sta FCS+1
|
||||
|
||||
lda ZPBufLen
|
||||
sec
|
||||
sbc #4 minus 7E .... FCS FCS 7E
|
||||
eor #$ff
|
||||
sta ZPPtr2
|
||||
|
||||
lda ZPBufLen+1
|
||||
sbc #0
|
||||
eor #$ff
|
||||
sta ZPPtr2+1
|
||||
|
||||
.1 inc ZPPtr2
|
||||
bne .2
|
||||
|
||||
inc ZPPtr2+1
|
||||
beq .8
|
||||
|
||||
.2 inc ZPPtr1
|
||||
bne .3
|
||||
|
||||
inc ZPPtr1+1
|
||||
|
||||
.3 lda (ZPPtr1)
|
||||
eor FCS
|
||||
tax
|
||||
|
||||
lda FCS.LO,x
|
||||
eor FCS+1
|
||||
sta FCS
|
||||
|
||||
lda FCS.HI,x
|
||||
sta FCS+1
|
||||
|
||||
bra .1
|
||||
|
||||
.8 lda FCS+1
|
||||
eor #$ff
|
||||
ldy #1
|
||||
sta (ZPPtr1),y
|
||||
|
||||
lda FCS
|
||||
eor #$ff
|
||||
iny
|
||||
sta (ZPPtr1),y
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
DumpBuf >STYA ZPPtr1
|
||||
|
||||
>PUSHW L.MSG.BUFLEN
|
||||
>PUSHW ZPBufLen
|
||||
>PUSHBI 2
|
||||
>SYSCALL PrintF
|
||||
bcs .9
|
||||
|
||||
.1 >PUSHW L.MSG.HEXDUMP
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 >PUSHB (ZPPtr1),y
|
||||
iny
|
||||
cpy #16
|
||||
bne .2
|
||||
|
||||
>PUSHBI 16
|
||||
>SYSCALL PrintF
|
||||
bcs .9
|
||||
|
||||
lda ZPPtr1
|
||||
adc #16
|
||||
sta ZPPtr1
|
||||
lda ZPPtr1+1
|
||||
adc #0
|
||||
sta ZPPtr1+1
|
||||
|
||||
lda ZPBufLen
|
||||
sec
|
||||
sbc #16
|
||||
sta ZPBufLen
|
||||
lda ZPBufLen+1
|
||||
sbc #0
|
||||
sta ZPBufLen+1
|
||||
bcc .9
|
||||
ora ZPBufLen
|
||||
bne .1
|
||||
|
||||
clc
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
MSG.USAGE .AZ "Usage : TERM device "
|
||||
MSG.DEVOK .AZ "Opening Device..."
|
||||
MSG.AT .AS "ATI0"
|
||||
.HS 0D0A
|
||||
MSG.AT.LEN .EQ *-MSG.AT
|
||||
MSG.BUFLEN .AZ "BufLen:%H\r\n"
|
||||
MSG.HEXDUMP .AZ "%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h:%h\r\n"
|
||||
*--------------------------------------
|
||||
FCS.LO .DA #$0000,#$1189,#$2312,#$329b,#$4624,#$57ad,#$6536,#$74bf
|
||||
.DA #$8c48,#$9dc1,#$af5a,#$bed3,#$ca6c,#$dbe5,#$e97e,#$f8f7
|
||||
.DA #$1081,#$0108,#$3393,#$221a,#$56a5,#$472c,#$75b7,#$643e
|
||||
.DA #$9cc9,#$8d40,#$bfdb,#$ae52,#$daed,#$cb64,#$f9ff,#$e876
|
||||
.DA #$2102,#$308b,#$0210,#$1399,#$6726,#$76af,#$4434,#$55bd
|
||||
.DA #$ad4a,#$bcc3,#$8e58,#$9fd1,#$eb6e,#$fae7,#$c87c,#$d9f5
|
||||
.DA #$3183,#$200a,#$1291,#$0318,#$77a7,#$662e,#$54b5,#$453c
|
||||
.DA #$bdcb,#$ac42,#$9ed9,#$8f50,#$fbef,#$ea66,#$d8fd,#$c974
|
||||
.DA #$4204,#$538d,#$6116,#$709f,#$0420,#$15a9,#$2732,#$36bb
|
||||
.DA #$ce4c,#$dfc5,#$ed5e,#$fcd7,#$8868,#$99e1,#$ab7a,#$baf3
|
||||
.DA #$5285,#$430c,#$7197,#$601e,#$14a1,#$0528,#$37b3,#$263a
|
||||
.DA #$decd,#$cf44,#$fddf,#$ec56,#$98e9,#$8960,#$bbfb,#$aa72
|
||||
.DA #$6306,#$728f,#$4014,#$519d,#$2522,#$34ab,#$0630,#$17b9
|
||||
.DA #$ef4e,#$fec7,#$cc5c,#$ddd5,#$a96a,#$b8e3,#$8a78,#$9bf1
|
||||
.DA #$7387,#$620e,#$5095,#$411c,#$35a3,#$242a,#$16b1,#$0738
|
||||
.DA #$ffcf,#$ee46,#$dcdd,#$cd54,#$b9eb,#$a862,#$9af9,#$8b70
|
||||
.DA #$8408,#$9581,#$a71a,#$b693,#$c22c,#$d3a5,#$e13e,#$f0b7
|
||||
.DA #$0840,#$19c9,#$2b52,#$3adb,#$4e64,#$5fed,#$6d76,#$7cff
|
||||
.DA #$9489,#$8500,#$b79b,#$a612,#$d2ad,#$c324,#$f1bf,#$e036
|
||||
.DA #$18c1,#$0948,#$3bd3,#$2a5a,#$5ee5,#$4f6c,#$7df7,#$6c7e
|
||||
.DA #$a50a,#$b483,#$8618,#$9791,#$e32e,#$f2a7,#$c03c,#$d1b5
|
||||
.DA #$2942,#$38cb,#$0a50,#$1bd9,#$6f66,#$7eef,#$4c74,#$5dfd
|
||||
.DA #$b58b,#$a402,#$9699,#$8710,#$f3af,#$e226,#$d0bd,#$c134
|
||||
.DA #$39c3,#$284a,#$1ad1,#$0b58,#$7fe7,#$6e6e,#$5cf5,#$4d7c
|
||||
.DA #$c60c,#$d785,#$e51e,#$f497,#$8028,#$91a1,#$a33a,#$b2b3
|
||||
.DA #$4a44,#$5bcd,#$6956,#$78df,#$0c60,#$1de9,#$2f72,#$3efb
|
||||
.DA #$d68d,#$c704,#$f59f,#$e416,#$90a9,#$8120,#$b3bb,#$a232
|
||||
.DA #$5ac5,#$4b4c,#$79d7,#$685e,#$1ce1,#$0d68,#$3ff3,#$2e7a
|
||||
.DA #$e70e,#$f687,#$c41c,#$d595,#$a12a,#$b0a3,#$8238,#$93b1
|
||||
.DA #$6b46,#$7acf,#$4854,#$59dd,#$2d62,#$3ceb,#$0e70,#$1ff9
|
||||
.DA #$f78f,#$e606,#$d49d,#$c514,#$b1ab,#$a022,#$92b9,#$8330
|
||||
.DA #$7bc7,#$6a4e,#$58d5,#$495c,#$3de3,#$2c6a,#$1ef1,#$0f78
|
||||
*--------------------------------------
|
||||
FCS.HI .DA /$0000,/$1189,/$2312,/$329b,/$4624,/$57ad,/$6536,/$74bf
|
||||
.DA /$8c48,/$9dc1,/$af5a,/$bed3,/$ca6c,/$dbe5,/$e97e,/$f8f7
|
||||
.DA /$1081,/$0108,/$3393,/$221a,/$56a5,/$472c,/$75b7,/$643e
|
||||
.DA /$9cc9,/$8d40,/$bfdb,/$ae52,/$daed,/$cb64,/$f9ff,/$e876
|
||||
.DA /$2102,/$308b,/$0210,/$1399,/$6726,/$76af,/$4434,/$55bd
|
||||
.DA /$ad4a,/$bcc3,/$8e58,/$9fd1,/$eb6e,/$fae7,/$c87c,/$d9f5
|
||||
.DA /$3183,/$200a,/$1291,/$0318,/$77a7,/$662e,/$54b5,/$453c
|
||||
.DA /$bdcb,/$ac42,/$9ed9,/$8f50,/$fbef,/$ea66,/$d8fd,/$c974
|
||||
.DA /$4204,/$538d,/$6116,/$709f,/$0420,/$15a9,/$2732,/$36bb
|
||||
.DA /$ce4c,/$dfc5,/$ed5e,/$fcd7,/$8868,/$99e1,/$ab7a,/$baf3
|
||||
.DA /$5285,/$430c,/$7197,/$601e,/$14a1,/$0528,/$37b3,/$263a
|
||||
.DA /$decd,/$cf44,/$fddf,/$ec56,/$98e9,/$8960,/$bbfb,/$aa72
|
||||
.DA /$6306,/$728f,/$4014,/$519d,/$2522,/$34ab,/$0630,/$17b9
|
||||
.DA /$ef4e,/$fec7,/$cc5c,/$ddd5,/$a96a,/$b8e3,/$8a78,/$9bf1
|
||||
.DA /$7387,/$620e,/$5095,/$411c,/$35a3,/$242a,/$16b1,/$0738
|
||||
.DA /$ffcf,/$ee46,/$dcdd,/$cd54,/$b9eb,/$a862,/$9af9,/$8b70
|
||||
.DA /$8408,/$9581,/$a71a,/$b693,/$c22c,/$d3a5,/$e13e,/$f0b7
|
||||
.DA /$0840,/$19c9,/$2b52,/$3adb,/$4e64,/$5fed,/$6d76,/$7cff
|
||||
.DA /$9489,/$8500,/$b79b,/$a612,/$d2ad,/$c324,/$f1bf,/$e036
|
||||
.DA /$18c1,/$0948,/$3bd3,/$2a5a,/$5ee5,/$4f6c,/$7df7,/$6c7e
|
||||
.DA /$a50a,/$b483,/$8618,/$9791,/$e32e,/$f2a7,/$c03c,/$d1b5
|
||||
.DA /$2942,/$38cb,/$0a50,/$1bd9,/$6f66,/$7eef,/$4c74,/$5dfd
|
||||
.DA /$b58b,/$a402,/$9699,/$8710,/$f3af,/$e226,/$d0bd,/$c134
|
||||
.DA /$39c3,/$284a,/$1ad1,/$0b58,/$7fe7,/$6e6e,/$5cf5,/$4d7c
|
||||
.DA /$c60c,/$d785,/$e51e,/$f497,/$8028,/$91a1,/$a33a,/$b2b3
|
||||
.DA /$4a44,/$5bcd,/$6956,/$78df,/$0c60,/$1de9,/$2f72,/$3efb
|
||||
.DA /$d68d,/$c704,/$f59f,/$e416,/$90a9,/$8120,/$b3bb,/$a232
|
||||
.DA /$5ac5,/$4b4c,/$79d7,/$685e,/$1ce1,/$0d68,/$3ff3,/$2e7a
|
||||
.DA /$e70e,/$f687,/$c41c,/$d595,/$a12a,/$b0a3,/$8238,/$93b1
|
||||
.DA /$6b46,/$7acf,/$4854,/$59dd,/$2d62,/$3ceb,/$0e70,/$1ff9
|
||||
.DA /$f78f,/$e606,/$d49d,/$c514,/$b1ab,/$a022,/$92b9,/$8330
|
||||
.DA /$7bc7,/$6a4e,/$58d5,/$495c,/$3de3,/$2c6a,/$1ef1,/$0f78
|
||||
*--------------------------------------
|
||||
PPP.1 .HS 7E
|
||||
|
||||
* .HS ff.03.C0.21.01.01.00.17.02.06.00.0a.00.00.05.06
|
||||
* .HS 00.2a.2b.78.07.02.08.02.0d.03.06
|
||||
* .HS A5.F8
|
||||
|
||||
PPP.1.START .HS FF03
|
||||
.HS C021 LCP
|
||||
PPP.1.LCP .HS 01 Configure-Request
|
||||
.HS 01 ID
|
||||
.DA /PPP.1.LCP.LEN,#PPP.1.LCP.LEN
|
||||
.HS 01.04.05DC MRU
|
||||
.HS 02.06.000A0000 ACCM
|
||||
.HS 05.06.2A2B7807 MAGIC
|
||||
PPP.1.LCP.LEN .EQ *-PPP.1.LCP
|
||||
.BS 2 FCS
|
||||
.HS 7E
|
||||
PPP.1.LEN .EQ *-PPP.1
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
DS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE root/ppptest.s
|
||||
ASM
|
@ -224,7 +224,7 @@ CS.QUIT clc
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
MSG0 .DA #C.ESC
|
||||
.AZ "[?7lhPS pPID PID cPID CPU\% Status Flags UID Args"
|
||||
.AZ "[?7lhPS pPID PID cPID CPU% Status Flags UID Args"
|
||||
MSG1 .AZ "%3d %3d %3d %3d %3d\% %6s %s %3d"
|
||||
MSG2 .AS " %s"
|
||||
MSG3 .DA #0
|
||||
|
@ -13,8 +13,9 @@ NEW
|
||||
.OR ZPBIN
|
||||
ZS.START
|
||||
ZPPtr1 .BS 2
|
||||
hScreen .BS 1
|
||||
hListBox .BS 1
|
||||
hSCRN .BS 1
|
||||
hTBOX1 .BS 1
|
||||
hLBOX1 .BS 1
|
||||
ZS.END .ED
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
@ -27,7 +28,7 @@ CS.START cld
|
||||
.DA #0
|
||||
.DA CS.END-CS.START Code Size (without Constants)
|
||||
.DA DS.END-DS.START Data Segment Size
|
||||
.DA #32 Stack Size
|
||||
.DA #64 Stack Size
|
||||
.DA #ZS.END-ZS.START Zero Page Size
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
@ -36,67 +37,120 @@ CS.START cld
|
||||
.DA CS.DOEVENT
|
||||
.DA CS.QUIT
|
||||
L.LIBTUI .DA LIBTUI
|
||||
*--------------------------------------
|
||||
L.SCRN.Title .DA SCRN.Title
|
||||
L.SCRN.Status .DA SCRN.Status
|
||||
L.CS.SCRN.fResize .DA CS.SCRN.fResize
|
||||
L.TBOX1 .DA TBOX1
|
||||
L.TBOX1.Title .DA TBOX1.Title
|
||||
L.TBOX1.Status .DA TBOX1.Status
|
||||
L.LBOX1 .DA LBOX1
|
||||
L.MSG.Screen .DA MSG.Screen
|
||||
L.LBOX1.L .DA LBOX1.L
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBTUI
|
||||
>SYSCALL LoadLib
|
||||
bcs .9
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
sta hLIBTUI
|
||||
|
||||
.9 clc
|
||||
rts
|
||||
* clc
|
||||
|
||||
CS.INIT.RTS rts
|
||||
*--------------------------------------
|
||||
CS.RUN >LIBCALL hLIBTUI,LIBTUI.Open
|
||||
bcs .9
|
||||
CS.RUN lda #S.OBJ.F.bTITLE+S.OBJ.F.bSTATUS
|
||||
>LIBCALL hLIBTUI,LIBTUI.Init
|
||||
bcs CS.INIT.RTS
|
||||
|
||||
sta hScreen
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
>PUSHW L.MSG.Screen
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
|
||||
.1 lda (ZPPtr1),y
|
||||
sta hSCRN
|
||||
>PUSHA
|
||||
iny
|
||||
cpy #S.OBJ.Y2+1
|
||||
bne .1
|
||||
>PUSHBI S.OBJ.pTITLE
|
||||
>PUSHEA.G SCRN.Buf
|
||||
>LIBCALL hLIBTUI,LIBTUI.SetProp
|
||||
|
||||
>PUSHBI 6
|
||||
>SYSCALL printf
|
||||
>PUSHB hSCRN
|
||||
>PUSHBI S.OBJ.pSTATUS
|
||||
>PUSHW L.SCRN.Status
|
||||
>LIBCALL hLIBTUI,LIBTUI.SetProp
|
||||
|
||||
>PUSHB hScreen
|
||||
>PUSHB hSCRN
|
||||
>PUSHBI S.OBJ.fRESIZE
|
||||
>PUSHW L.CS.SCRN.fResize
|
||||
>LIBCALL hLIBTUI,LIBTUI.SetProp
|
||||
|
||||
jsr CS.TBOX1.Init
|
||||
bcs CS.RUN.RTS
|
||||
|
||||
jsr CS.LBOX1.Init
|
||||
bcs CS.RUN.RTS
|
||||
|
||||
jsr CS.SCRN.fResize Will Call SCRN.Draw
|
||||
|
||||
lda hTBOX1
|
||||
>LIBCALL hLIBTUI,LIBTUI.Activate
|
||||
*--------------------------------------
|
||||
CS.RUN.LOOP >SLEEP
|
||||
|
||||
lda hSCRN
|
||||
>LIBCALL hLIBTUI,LIBTUI.GetEvent
|
||||
bcs .9
|
||||
|
||||
tay
|
||||
beq CS.RUN.LOOP
|
||||
|
||||
>PUSHB hSCRN
|
||||
tya
|
||||
>PUSHA
|
||||
>LIBCALL hLIBTUI,LIBTUI.Dispatch
|
||||
bcc CS.RUN.LOOP
|
||||
|
||||
|
||||
|
||||
.9 pha
|
||||
lda hSCRN
|
||||
>LIBCALL hLIBTUI,LIBTUI.Close
|
||||
pla
|
||||
sec
|
||||
|
||||
CS.RUN.RTS rts
|
||||
*--------------------------------------
|
||||
CS.TBOX1.Init >PUSHB hSCRN
|
||||
>PUSHW L.TBOX1
|
||||
>LIBCALL hLIBTUI,LIBTUI.New
|
||||
bcs .9
|
||||
|
||||
sta hTBOX1
|
||||
|
||||
>PUSHA
|
||||
>PUSHBI S.OBJ.pTITLE
|
||||
>PUSHW L.TBOX1.Title
|
||||
>LIBCALL hLIBTUI,LIBTUI.SetProp
|
||||
|
||||
>PUSHB hTBOX1
|
||||
>PUSHBI S.OBJ.pSTATUS
|
||||
>PUSHW L.TBOX1.Status
|
||||
>LIBCALL hLIBTUI,LIBTUI.SetProp
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.LBOX1.Init >PUSHB hSCRN
|
||||
>PUSHW L.LBOX1
|
||||
>LIBCALL hLIBTUI,LIBTUI.LBOXNew
|
||||
>LIBCALL hLIBTUI,LIBTUI.New
|
||||
bcs .9
|
||||
|
||||
sta hListBox
|
||||
|
||||
.2 >SYSCALL GetChar
|
||||
bcs .9
|
||||
|
||||
cmp #3
|
||||
beq .9
|
||||
|
||||
>SYSCALL putchar
|
||||
bcc .2
|
||||
sta hLBOX1
|
||||
|
||||
>PUSHA
|
||||
>PUSHBI S.LBOX.pL
|
||||
>PUSHW L.LBOX1.L
|
||||
>LIBCALL hLIBTUI,LIBTUI.SetProp
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT sec do not discard TIMER event
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.QUIT lda hScreen
|
||||
beq .1
|
||||
|
||||
>LIBCALL hLIBTUI,LIBTUI.Close
|
||||
|
||||
.1 lda hLIBTUI
|
||||
CS.QUIT lda hLIBTUI
|
||||
beq .8
|
||||
|
||||
>SYSCALL UnloadLib
|
||||
@ -104,24 +158,73 @@ CS.QUIT lda hScreen
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.SCRN.fResize lda hSCRN
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
>PUSHEA.G SCRN.Buf
|
||||
>PUSHW L.SCRN.Title
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
|
||||
.1 lda (ZPPtr1),y
|
||||
>PUSHA
|
||||
iny
|
||||
cpy #S.OBJ.InnerH+1
|
||||
bne .1
|
||||
|
||||
>PUSHBI 10
|
||||
>SYSCALL sprintf
|
||||
|
||||
lda hSCRN
|
||||
>LIBCALL hLIBTUI,LIBTUI.Draw
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
LIBTUI .AZ "libtui"
|
||||
hLIBTUI .BS 1
|
||||
*--------------------------------------
|
||||
MSG.Screen .AZ "Screen : X1=%d, Y1=%d, W=%d, H=%d,X2=%d, Y2=%d\r\n"
|
||||
SCRN.Title .AZ "Window: X1=%d,Y1=%d, W=%d,H=%d, X2=%d,Y2=%d, iX=%d,iY=%d, iW=%d,iH=%d"
|
||||
SCRN.Status .AZ "Status bar..."
|
||||
*--------------------------------------
|
||||
TBOX1 .DA #S.OBJ.T.TBOX T
|
||||
.DA #S.OBJ.F.bHBorder+S.OBJ.F.bVBorder+S.OBJ.F.bTITLE+S.OBJ.F.bSTATUS
|
||||
.BS 2
|
||||
.DA #4 X1
|
||||
.DA #4 Y1
|
||||
.DA #40 W
|
||||
.DA #15 H
|
||||
TBOX1.Title .AZ "Text Box Title"
|
||||
TBOX1.Status .AZ "Text Box Status"
|
||||
*--------------------------------------
|
||||
LBOX1 .DA #S.OBJ.T.LBOX T
|
||||
.BS 3
|
||||
.DA #10 X1
|
||||
.DA #S.OBJ.F.bHBorder+S.OBJ.F.bVBorder
|
||||
.BS 2
|
||||
.DA #50 X1
|
||||
.DA #4 Y1
|
||||
.DA #20 W
|
||||
.DA #10 H
|
||||
LBOX1.Title .AZ "Title"
|
||||
LBOX1.L .AZ "Item 1"
|
||||
.AZ "Item 2"
|
||||
.AZ "Item 3"
|
||||
.AZ "Item 4"
|
||||
.AZ "Item 5"
|
||||
.AZ "Item 6 very long line"
|
||||
.AZ "Item 7"
|
||||
.AZ "Item 8"
|
||||
.AZ "Item 9"
|
||||
.AZ "Item 10"
|
||||
.AZ "Item 11"
|
||||
.AZ "Item 12"
|
||||
.AZ "Item 13"
|
||||
.AZ "Item 14 last one"
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
SCRN.Buf .BS 80
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
758
DRV/PPPSSC.DRV.S.D.txt
Normal file
758
DRV/PPPSSC.DRV.S.D.txt
Normal file
@ -0,0 +1,758 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
* Driver Code
|
||||
*--------------------------------------
|
||||
INBUF.SIZE .EQ 4096
|
||||
*--------------------------------------
|
||||
ZPIOCTL .EQ ZPDRV
|
||||
ZPBufPtr .EQ ZPDRV+2
|
||||
ZPCount .EQ ZPDRV+4
|
||||
ZPnCount .EQ ZPDRV+6
|
||||
ZPFCS .EQ ZPDRV+8
|
||||
*--------------------------------------
|
||||
DRV.CS.START cld
|
||||
jmp (.1,x)
|
||||
.1 .DA STATUS
|
||||
.DA A2osX.BADCALL
|
||||
.DA A2osX.BADCALL
|
||||
.DA A2osX.BADCALL
|
||||
.DA CONTROL
|
||||
.DA A2osX.BADCALL
|
||||
.DA OPEN
|
||||
.DA CLOSE
|
||||
.DA READ
|
||||
.DA WRITE
|
||||
.DA 0 end or relocation
|
||||
*--------------------------------------
|
||||
STATUS jsr STATUS.CONTROL.Init
|
||||
ldy #S.IOCTL.S
|
||||
lda (ZPIOCTL),y
|
||||
beq .1
|
||||
|
||||
cmp #S.IOCTL.S.GETDIB
|
||||
bne STATUS.DCB
|
||||
|
||||
ldy #S.DIB-1
|
||||
.HS 2C bit abs
|
||||
.1 ldy #3
|
||||
|
||||
.2 lda DIB,y
|
||||
sta (ZPBufPtr),y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
STATUS.DCB cmp #S.IOCTL.S.GETDCB
|
||||
bne .3
|
||||
|
||||
ldy #S.DCB.NIC-1
|
||||
|
||||
.2 lda DCB,y
|
||||
sta (ZPBufPtr),y
|
||||
dey
|
||||
bpl .2
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.3 cmp #S.IOCTL.S.EOF
|
||||
bne STATUS.9
|
||||
|
||||
lda DIB+S.DIB.S
|
||||
and #S.DIB.S.OPENED
|
||||
beq OPEN.E
|
||||
|
||||
lda INBUF.CNT
|
||||
ora INBUF.CNT+1
|
||||
bne .8 NO DATA? eof = TRUE
|
||||
|
||||
lda #1
|
||||
clc
|
||||
rts
|
||||
|
||||
.8 lda #0
|
||||
clc
|
||||
rts
|
||||
|
||||
STATUS.9 lda #MLI.E.BADCTL
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CONTROL jsr STATUS.CONTROL.Init
|
||||
|
||||
ldy #S.IOCTL.C
|
||||
lda (ZPIOCTL),y
|
||||
cmp #S.IOCTL.C.SETDCB
|
||||
bne STATUS.9
|
||||
|
||||
ldy #S.DCB.NIC-1
|
||||
|
||||
.2 lda (ZPBufPtr),y
|
||||
sta DCB,y
|
||||
dey
|
||||
bpl .2
|
||||
*--------------------------------------
|
||||
OPEN lda DIB+S.DIB.S
|
||||
bit #S.DIB.S.OPENED
|
||||
beq OPEN.1
|
||||
|
||||
OPEN.E lda #MLI.E.OPEN
|
||||
sec
|
||||
rts
|
||||
|
||||
OPEN.1 >LDYAI INBUF.SIZE
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
|
||||
stx hINBUF
|
||||
sta INBUF.BASEH
|
||||
|
||||
>STYA READ.BUF+1
|
||||
>STYA READ.SSC.BUF+1
|
||||
|
||||
stz INBUF.TAIL
|
||||
stz INBUF.TAIL+1
|
||||
stz INBUF.HEAD
|
||||
stz INBUF.HEAD+1
|
||||
stz INBUF.CNT
|
||||
stz INBUF.CNT+1
|
||||
|
||||
ldx DEVSLOTn08F
|
||||
lda #C.XOFF
|
||||
jsr WRITE.Byte
|
||||
|
||||
lda #S.DIB.S.OPENED
|
||||
tsb DIB+S.DIB.S
|
||||
|
||||
clc
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CLOSE php
|
||||
sei
|
||||
|
||||
ldx DEVSLOTn08F
|
||||
stz SSC.RESET-$8F,x
|
||||
|
||||
lda #S.DIB.S.OPENED
|
||||
trb DIB+S.DIB.S
|
||||
|
||||
lda hINBUF
|
||||
>SYSCALL2 FreeMem
|
||||
|
||||
plp
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
READ >STYA ZPIOCTL
|
||||
|
||||
jsr READ.SSC
|
||||
bcs .99
|
||||
|
||||
.1 jsr READ.Sync
|
||||
bcs .98
|
||||
|
||||
cmp #$C0 C021 = LCP
|
||||
beq .6
|
||||
|
||||
tay 0021 = IP
|
||||
bne .1
|
||||
|
||||
jsr READ.GetByteEsc
|
||||
bcs .98
|
||||
|
||||
cmp #$21
|
||||
bne .1
|
||||
|
||||
jsr READ.GetByteEsc
|
||||
bcs .98
|
||||
|
||||
cmp #$45 45 = S.IP.V.IHL
|
||||
bne .1
|
||||
|
||||
jsr READ.GetByteEsc
|
||||
bcs .98
|
||||
|
||||
* tay ignore DSCP.ECN
|
||||
* bne .1
|
||||
|
||||
jsr READ.GetByteEsc HHLL = S.IP.TOTAL.LENGTH
|
||||
bcs .98
|
||||
|
||||
sta ZPCount+1
|
||||
eor #$ff
|
||||
sta ZPnCount+1
|
||||
|
||||
jsr READ.GetByteEsc
|
||||
bcs .98
|
||||
|
||||
sta ZPCount
|
||||
eor #$ff
|
||||
* clc
|
||||
adc #4 already 4 bytes read
|
||||
sta ZPnCount
|
||||
bcc .2
|
||||
|
||||
inc ZPnCount+1
|
||||
|
||||
.2 jsr READ.NewFrame
|
||||
bcs .99
|
||||
|
||||
phx hFrame
|
||||
|
||||
jsr READ.GetFrame
|
||||
|
||||
pla
|
||||
bcc .99
|
||||
|
||||
>SYSCALL2 FreeMem
|
||||
|
||||
lda #MLI.E.IO
|
||||
sec
|
||||
rts
|
||||
|
||||
.6 jsr READ.GetByteEsc
|
||||
bcs .98
|
||||
|
||||
cmp #$21
|
||||
bne .1
|
||||
|
||||
jsr READ.GetByteEsc
|
||||
bcs .98
|
||||
|
||||
cmp #$09
|
||||
bne .1
|
||||
|
||||
jsr READ.SendEchoRep
|
||||
bra .1
|
||||
|
||||
.98 lda #E.NODATA
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
READ.SSC php
|
||||
sei
|
||||
|
||||
ldx DEVSLOTn08F
|
||||
|
||||
lda SSC.STATUS-$8F,x
|
||||
bit #SSC.STATUS.nDCD true when 0
|
||||
bne READ.SSC.98
|
||||
|
||||
lda #C.XON
|
||||
jsr WRITE.Byte
|
||||
|
||||
READ.SSC.1 ldy #0
|
||||
|
||||
READ.SSC.2 lda SSC.STATUS-$8F,x
|
||||
and #SSC.STATUS.RDRF
|
||||
bne READ.SSC.3
|
||||
|
||||
iny
|
||||
bne READ.SSC.2
|
||||
|
||||
lda #C.XOFF
|
||||
jsr WRITE.Byte
|
||||
|
||||
plp
|
||||
clc
|
||||
rts
|
||||
|
||||
READ.SSC.3 lda SSC.DATA-$8F,x
|
||||
|
||||
READ.SSC.BUF sta $FFFF SELF MODIFIED
|
||||
|
||||
inc READ.SSC.BUF+1
|
||||
bne .1
|
||||
|
||||
inc READ.SSC.BUF+2
|
||||
|
||||
.1 inc INBUF.CNT
|
||||
bne .2
|
||||
|
||||
inc INBUF.CNT+1
|
||||
|
||||
.2 inc INBUF.HEAD
|
||||
bne READ.SSC.1
|
||||
|
||||
inc INBUF.HEAD+1
|
||||
|
||||
lda INBUF.HEAD+1
|
||||
cmp /INBUF.SIZE
|
||||
bne READ.SSC.1
|
||||
|
||||
stz INBUF.HEAD+1
|
||||
lda INBUF.BASEH
|
||||
sta READ.SSC.BUF+2
|
||||
bra READ.SSC.1
|
||||
|
||||
READ.SSC.98 lda #MLI.E.IO
|
||||
plp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
READ.NewFrame lda ZPCount
|
||||
clc
|
||||
adc #S.ETH.EII
|
||||
|
||||
ldy #S.IOCTL.BYTECNT
|
||||
sta (ZPIOCTL),y
|
||||
pha
|
||||
|
||||
lda ZPCount+1
|
||||
adc /S.ETH.EII
|
||||
iny
|
||||
sta (ZPIOCTL),y
|
||||
|
||||
ply
|
||||
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPBufPtr
|
||||
|
||||
phy
|
||||
ldy #S.IOCTL.BUFPTR+1
|
||||
sta (ZPIOCTL),y
|
||||
dey
|
||||
pla
|
||||
sta (ZPIOCTL),y
|
||||
|
||||
ldy #S.ETH.EII.TYPE
|
||||
lda /S.ETH.EII.TYPE.IP
|
||||
sta (ZPBufPtr),y
|
||||
|
||||
iny
|
||||
|
||||
lda #S.ETH.EII.TYPE.IP
|
||||
sta (ZPBufPtr),y
|
||||
|
||||
ldy #S.IP.V.IHL.DSCP.ECN
|
||||
lda #$45
|
||||
sta (ZPBufPtr),y
|
||||
|
||||
iny
|
||||
|
||||
lda #0
|
||||
sta (ZPBufPtr),y
|
||||
|
||||
iny S.IP.TOTAL.LENGTH
|
||||
|
||||
lda ZPCount+1
|
||||
sta (ZPBufPtr),y
|
||||
|
||||
iny
|
||||
|
||||
lda ZPCount
|
||||
sta (ZPBufPtr),y
|
||||
|
||||
iny
|
||||
tya
|
||||
|
||||
* clc
|
||||
adc ZPBufPtr
|
||||
sta ZPBufPtr
|
||||
bcc .8
|
||||
|
||||
inc ZPBufPtr+1
|
||||
clc
|
||||
.8
|
||||
* clc
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
READ.GetFrame inc ZPnCount
|
||||
bne .1
|
||||
|
||||
inc ZPnCount+1
|
||||
beq .2
|
||||
|
||||
.1 jsr READ.GetByteEsc
|
||||
bcs .9
|
||||
|
||||
sta (ZPBufPtr)
|
||||
inc ZPBufPtr
|
||||
bne READ.GetFrame
|
||||
|
||||
inc ZPBufPtr+1
|
||||
bra READ.GetFrame
|
||||
|
||||
.2 jsr READ.GetByteEsc skip FCS HI
|
||||
bcs .9
|
||||
|
||||
jsr READ.GetByteEsc skip FCS LO
|
||||
bcs .9
|
||||
|
||||
jsr READ.GetByte
|
||||
bcs .9
|
||||
|
||||
eor #$7E
|
||||
beq .9
|
||||
|
||||
sec
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
READ.Sync jsr READ.GetByte
|
||||
bcs READ.GetByte.RTS
|
||||
|
||||
.1 cmp #$7E
|
||||
bne READ.Sync
|
||||
|
||||
jsr READ.GetByte
|
||||
bcs READ.GetByte.RTS
|
||||
|
||||
cmp #$FF
|
||||
bne .1
|
||||
|
||||
jsr READ.GetByteEsc
|
||||
bcs READ.GetByte.RTS
|
||||
|
||||
cmp #$03
|
||||
bne .1
|
||||
*--------------------------------------
|
||||
READ.GetByteEsc jsr READ.GetByte
|
||||
bcs READ.GetByte.9
|
||||
|
||||
cmp #$7D
|
||||
bne READ.GetByte.8
|
||||
|
||||
jsr READ.GetByte
|
||||
bcs READ.GetByte.9
|
||||
|
||||
eor #%00100000
|
||||
* clc
|
||||
rts
|
||||
|
||||
READ.GetByte lda INBUF.CNT
|
||||
bne READ.GetByte.1
|
||||
|
||||
lda INBUF.CNT+1
|
||||
beq READ.GetByte.9
|
||||
|
||||
dec INBUF.CNT+1
|
||||
|
||||
READ.GetByte.1 dec INBUF.CNT
|
||||
|
||||
READ.BUF lda $FFFF SELF MODIFIED
|
||||
inc READ.BUF+1
|
||||
bne READ.GetByte.8
|
||||
|
||||
inc READ.BUF+2
|
||||
|
||||
inc INBUF.TAIL+1
|
||||
ldy INBUF.TAIL+1
|
||||
cpy /INBUF.SIZE
|
||||
bne READ.GetByte.8
|
||||
|
||||
stz INBUF.TAIL+1
|
||||
ldy INBUF.BASEH
|
||||
sty READ.BUF+2
|
||||
|
||||
READ.GetByte.8 clc
|
||||
rts
|
||||
|
||||
READ.GetByte.9 sec
|
||||
READ.GetByte.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
READ.SendEchoRep
|
||||
ldx DEVSLOTn08F
|
||||
|
||||
lda #$7E
|
||||
jsr WRITE.Byte
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 lda PPP.EchoRep,y
|
||||
phy
|
||||
jsr WRITE.ByteEsc
|
||||
ply
|
||||
iny
|
||||
cpy #PPP.EchoRep.TOTAL
|
||||
bne .1
|
||||
|
||||
lda #$7E
|
||||
jmp WRITE.Byte
|
||||
*--------------------------------------
|
||||
* 7E FF 03 00 21 ... FCS FCS 7E
|
||||
*--------------------------------------
|
||||
WRITE >STYA ZPIOCTL
|
||||
|
||||
ldy #S.IOCTL.BUFPTR
|
||||
lda (ZPIOCTL),y
|
||||
clc
|
||||
adc #S.ETH.EII
|
||||
sta ZPBufPtr
|
||||
|
||||
iny
|
||||
|
||||
lda (ZPIOCTL),y
|
||||
adc /S.ETH.EII
|
||||
sta ZPBufPtr+1
|
||||
|
||||
iny #S.IOCTL.BYTECNT
|
||||
|
||||
lda (ZPIOCTL),y
|
||||
sec
|
||||
sbc #S.ETH.EII
|
||||
eor #$ff
|
||||
sta ZPCount
|
||||
|
||||
iny
|
||||
|
||||
lda (ZPIOCTL),y
|
||||
sbc /S.ETH.EII
|
||||
eor #$ff
|
||||
sta ZPCount+1
|
||||
|
||||
ldx DEVSLOTn08F
|
||||
|
||||
php
|
||||
sei
|
||||
|
||||
lda SSC.STATUS-$8F,x
|
||||
bit #SSC.STATUS.nDCD true when 0
|
||||
bne .9
|
||||
|
||||
lda #$ff
|
||||
sta ZPFCS
|
||||
sta ZPFCS+1
|
||||
|
||||
lda #$7E
|
||||
jsr WRITE.Byte
|
||||
|
||||
lda #$FF
|
||||
jsr WRITE.ByteEscFCS
|
||||
|
||||
lda #$03
|
||||
jsr WRITE.ByteEscFCS
|
||||
|
||||
lda #$00
|
||||
jsr WRITE.ByteEscFCS
|
||||
|
||||
lda #$21
|
||||
jsr WRITE.ByteEscFCS
|
||||
|
||||
.1 inc ZPCount
|
||||
bne .2
|
||||
|
||||
inc ZPCount+1
|
||||
beq .8
|
||||
|
||||
.2 lda (ZPBufPtr)
|
||||
jsr WRITE.ByteEscFCS
|
||||
|
||||
inc ZPBufPtr
|
||||
bne .1
|
||||
|
||||
inc ZPBufPtr+1
|
||||
bra .1
|
||||
|
||||
.8 lda ZPFCS
|
||||
eor #$ff
|
||||
jsr WRITE.ByteEsc
|
||||
|
||||
lda ZPFCS+1
|
||||
eor #$ff
|
||||
jsr WRITE.ByteEsc
|
||||
|
||||
lda #$7E
|
||||
jsr WRITE.Byte
|
||||
|
||||
plp
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #MLI.E.IO
|
||||
plp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
WRITE.ByteEscFCS
|
||||
pha
|
||||
eor ZPFCS
|
||||
tay
|
||||
lda FCS.LO,y
|
||||
eor ZPFCS+1
|
||||
sta ZPFCS
|
||||
|
||||
lda FCS.HI,y
|
||||
sta ZPFCS+1
|
||||
|
||||
pla
|
||||
*--------------------------------------
|
||||
WRITE.ByteEsc cmp #$7D
|
||||
beq .1
|
||||
|
||||
cmp #$7E
|
||||
beq .1
|
||||
|
||||
cmp #$20
|
||||
bcs WRITE.Byte
|
||||
|
||||
* pha
|
||||
* and #7
|
||||
* tay bit mask
|
||||
* lda ACCM.BIT2MASK,y
|
||||
* sta .10+1
|
||||
|
||||
* pla
|
||||
* pha
|
||||
* lsr
|
||||
* lsr
|
||||
* lsr
|
||||
* tay
|
||||
* lda ACCM.OUT,y
|
||||
|
||||
*.10 and #$FF SELF MODIFIED
|
||||
* beq WRITE.Byte.1
|
||||
|
||||
* pla
|
||||
|
||||
.1 eor #%00100000
|
||||
pha
|
||||
|
||||
lda #$7D
|
||||
jsr WRITE.Byte
|
||||
|
||||
.HS 89 BIT imm
|
||||
|
||||
WRITE.Byte pha
|
||||
|
||||
WRITE.Byte.1 lda SSC.STATUS-$8F,x
|
||||
bit #SSC.STATUS.TDRE Register Empty ?
|
||||
beq WRITE.Byte.1
|
||||
|
||||
pla
|
||||
sta SSC.DATA-$8F,x
|
||||
rts
|
||||
*--------------------------------------
|
||||
STATUS.CONTROL.Init
|
||||
>STYA ZPIOCTL
|
||||
|
||||
ldy #S.IOCTL.BUFPTR
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr
|
||||
iny
|
||||
lda (ZPIOCTL),y
|
||||
sta ZPBufPtr+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
DRV.CS.END
|
||||
*--------------------------------------
|
||||
DEVSLOTn08F .BS 1
|
||||
hINBUF .BS 1
|
||||
INBUF.BASEH .BS 1
|
||||
INBUF.TAIL .BS 2
|
||||
INBUF.HEAD .BS 2
|
||||
INBUF.CNT .BS 2
|
||||
*--------------------------------------
|
||||
DIB .DA #0
|
||||
.DA #0,#0,#0 size
|
||||
>PSTR "SSC/PPP Driver "
|
||||
.DA #S.DIB.T.NIC
|
||||
.DA #0
|
||||
.DA K.VER
|
||||
*--------------------------------------
|
||||
DCB .DA #S.DCB.T.NIC
|
||||
.DA #S.DCB.NIC.FLAGS.ARPOFFLOAD
|
||||
.DA #S.DCB.NIC.LINK.OK+S.DCB.NIC.LINK.FD
|
||||
.DA #S.DCB.NIC.SPEED.10
|
||||
.HS 000A1A123456 MAC
|
||||
DCB.IP .BS 4
|
||||
DCB.MASK .HS FF.FF.FF.FF
|
||||
DCB.GW .BS 4
|
||||
*--------------------------------------
|
||||
ACCM.IN .HS 000A0000
|
||||
ACCM.OUT .HS FFFFFFFF
|
||||
*--------------------------------------
|
||||
ACCM.BIT2MASK .HS 0102040810204080
|
||||
*--------------------------------------
|
||||
PPP.EchoRep .HS FF03
|
||||
.HS C021 LCP
|
||||
PPP.EchoRep.DATA
|
||||
.HS 0A Echo-Reply
|
||||
.HS FF ID
|
||||
.DA /PPP.EchoRep.LEN,#PPP.EchoRep.LEN
|
||||
.HS 05.06.EA4C2B41 MAGIC
|
||||
PPP.EchoRep.LEN .EQ *-PPP.EchoRep.DATA
|
||||
.BS 2 FCS
|
||||
PPP.EchoRep.TOTAL .EQ *-PPP.EchoRep
|
||||
*--------------------------------------
|
||||
FCS.LO .DA #$0000,#$1189,#$2312,#$329b,#$4624,#$57ad,#$6536,#$74bf
|
||||
.DA #$8c48,#$9dc1,#$af5a,#$bed3,#$ca6c,#$dbe5,#$e97e,#$f8f7
|
||||
.DA #$1081,#$0108,#$3393,#$221a,#$56a5,#$472c,#$75b7,#$643e
|
||||
.DA #$9cc9,#$8d40,#$bfdb,#$ae52,#$daed,#$cb64,#$f9ff,#$e876
|
||||
.DA #$2102,#$308b,#$0210,#$1399,#$6726,#$76af,#$4434,#$55bd
|
||||
.DA #$ad4a,#$bcc3,#$8e58,#$9fd1,#$eb6e,#$fae7,#$c87c,#$d9f5
|
||||
.DA #$3183,#$200a,#$1291,#$0318,#$77a7,#$662e,#$54b5,#$453c
|
||||
.DA #$bdcb,#$ac42,#$9ed9,#$8f50,#$fbef,#$ea66,#$d8fd,#$c974
|
||||
.DA #$4204,#$538d,#$6116,#$709f,#$0420,#$15a9,#$2732,#$36bb
|
||||
.DA #$ce4c,#$dfc5,#$ed5e,#$fcd7,#$8868,#$99e1,#$ab7a,#$baf3
|
||||
.DA #$5285,#$430c,#$7197,#$601e,#$14a1,#$0528,#$37b3,#$263a
|
||||
.DA #$decd,#$cf44,#$fddf,#$ec56,#$98e9,#$8960,#$bbfb,#$aa72
|
||||
.DA #$6306,#$728f,#$4014,#$519d,#$2522,#$34ab,#$0630,#$17b9
|
||||
.DA #$ef4e,#$fec7,#$cc5c,#$ddd5,#$a96a,#$b8e3,#$8a78,#$9bf1
|
||||
.DA #$7387,#$620e,#$5095,#$411c,#$35a3,#$242a,#$16b1,#$0738
|
||||
.DA #$ffcf,#$ee46,#$dcdd,#$cd54,#$b9eb,#$a862,#$9af9,#$8b70
|
||||
.DA #$8408,#$9581,#$a71a,#$b693,#$c22c,#$d3a5,#$e13e,#$f0b7
|
||||
.DA #$0840,#$19c9,#$2b52,#$3adb,#$4e64,#$5fed,#$6d76,#$7cff
|
||||
.DA #$9489,#$8500,#$b79b,#$a612,#$d2ad,#$c324,#$f1bf,#$e036
|
||||
.DA #$18c1,#$0948,#$3bd3,#$2a5a,#$5ee5,#$4f6c,#$7df7,#$6c7e
|
||||
.DA #$a50a,#$b483,#$8618,#$9791,#$e32e,#$f2a7,#$c03c,#$d1b5
|
||||
.DA #$2942,#$38cb,#$0a50,#$1bd9,#$6f66,#$7eef,#$4c74,#$5dfd
|
||||
.DA #$b58b,#$a402,#$9699,#$8710,#$f3af,#$e226,#$d0bd,#$c134
|
||||
.DA #$39c3,#$284a,#$1ad1,#$0b58,#$7fe7,#$6e6e,#$5cf5,#$4d7c
|
||||
.DA #$c60c,#$d785,#$e51e,#$f497,#$8028,#$91a1,#$a33a,#$b2b3
|
||||
.DA #$4a44,#$5bcd,#$6956,#$78df,#$0c60,#$1de9,#$2f72,#$3efb
|
||||
.DA #$d68d,#$c704,#$f59f,#$e416,#$90a9,#$8120,#$b3bb,#$a232
|
||||
.DA #$5ac5,#$4b4c,#$79d7,#$685e,#$1ce1,#$0d68,#$3ff3,#$2e7a
|
||||
.DA #$e70e,#$f687,#$c41c,#$d595,#$a12a,#$b0a3,#$8238,#$93b1
|
||||
.DA #$6b46,#$7acf,#$4854,#$59dd,#$2d62,#$3ceb,#$0e70,#$1ff9
|
||||
.DA #$f78f,#$e606,#$d49d,#$c514,#$b1ab,#$a022,#$92b9,#$8330
|
||||
.DA #$7bc7,#$6a4e,#$58d5,#$495c,#$3de3,#$2c6a,#$1ef1,#$0f78
|
||||
*--------------------------------------
|
||||
FCS.HI .DA /$0000,/$1189,/$2312,/$329b,/$4624,/$57ad,/$6536,/$74bf
|
||||
.DA /$8c48,/$9dc1,/$af5a,/$bed3,/$ca6c,/$dbe5,/$e97e,/$f8f7
|
||||
.DA /$1081,/$0108,/$3393,/$221a,/$56a5,/$472c,/$75b7,/$643e
|
||||
.DA /$9cc9,/$8d40,/$bfdb,/$ae52,/$daed,/$cb64,/$f9ff,/$e876
|
||||
.DA /$2102,/$308b,/$0210,/$1399,/$6726,/$76af,/$4434,/$55bd
|
||||
.DA /$ad4a,/$bcc3,/$8e58,/$9fd1,/$eb6e,/$fae7,/$c87c,/$d9f5
|
||||
.DA /$3183,/$200a,/$1291,/$0318,/$77a7,/$662e,/$54b5,/$453c
|
||||
.DA /$bdcb,/$ac42,/$9ed9,/$8f50,/$fbef,/$ea66,/$d8fd,/$c974
|
||||
.DA /$4204,/$538d,/$6116,/$709f,/$0420,/$15a9,/$2732,/$36bb
|
||||
.DA /$ce4c,/$dfc5,/$ed5e,/$fcd7,/$8868,/$99e1,/$ab7a,/$baf3
|
||||
.DA /$5285,/$430c,/$7197,/$601e,/$14a1,/$0528,/$37b3,/$263a
|
||||
.DA /$decd,/$cf44,/$fddf,/$ec56,/$98e9,/$8960,/$bbfb,/$aa72
|
||||
.DA /$6306,/$728f,/$4014,/$519d,/$2522,/$34ab,/$0630,/$17b9
|
||||
.DA /$ef4e,/$fec7,/$cc5c,/$ddd5,/$a96a,/$b8e3,/$8a78,/$9bf1
|
||||
.DA /$7387,/$620e,/$5095,/$411c,/$35a3,/$242a,/$16b1,/$0738
|
||||
.DA /$ffcf,/$ee46,/$dcdd,/$cd54,/$b9eb,/$a862,/$9af9,/$8b70
|
||||
.DA /$8408,/$9581,/$a71a,/$b693,/$c22c,/$d3a5,/$e13e,/$f0b7
|
||||
.DA /$0840,/$19c9,/$2b52,/$3adb,/$4e64,/$5fed,/$6d76,/$7cff
|
||||
.DA /$9489,/$8500,/$b79b,/$a612,/$d2ad,/$c324,/$f1bf,/$e036
|
||||
.DA /$18c1,/$0948,/$3bd3,/$2a5a,/$5ee5,/$4f6c,/$7df7,/$6c7e
|
||||
.DA /$a50a,/$b483,/$8618,/$9791,/$e32e,/$f2a7,/$c03c,/$d1b5
|
||||
.DA /$2942,/$38cb,/$0a50,/$1bd9,/$6f66,/$7eef,/$4c74,/$5dfd
|
||||
.DA /$b58b,/$a402,/$9699,/$8710,/$f3af,/$e226,/$d0bd,/$c134
|
||||
.DA /$39c3,/$284a,/$1ad1,/$0b58,/$7fe7,/$6e6e,/$5cf5,/$4d7c
|
||||
.DA /$c60c,/$d785,/$e51e,/$f497,/$8028,/$91a1,/$a33a,/$b2b3
|
||||
.DA /$4a44,/$5bcd,/$6956,/$78df,/$0c60,/$1de9,/$2f72,/$3efb
|
||||
.DA /$d68d,/$c704,/$f59f,/$e416,/$90a9,/$8120,/$b3bb,/$a232
|
||||
.DA /$5ac5,/$4b4c,/$79d7,/$685e,/$1ce1,/$0d68,/$3ff3,/$2e7a
|
||||
.DA /$e70e,/$f687,/$c41c,/$d595,/$a12a,/$b0a3,/$8238,/$93b1
|
||||
.DA /$6b46,/$7acf,/$4854,/$59dd,/$2d62,/$3ceb,/$0e70,/$1ff9
|
||||
.DA /$f78f,/$e606,/$d49d,/$c514,/$b1ab,/$a022,/$92b9,/$8330
|
||||
.DA /$7bc7,/$6a4e,/$58d5,/$495c,/$3de3,/$2c6a,/$1ef1,/$0f78
|
||||
*--------------------------------------
|
||||
DRV.END
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/drv/pppssc.drv.s.d
|
||||
LOAD usr/src/drv/pppssc.drv.s
|
||||
ASM
|
270
DRV/PPPSSC.DRV.S.E.txt
Normal file
270
DRV/PPPSSC.DRV.S.E.txt
Normal file
@ -0,0 +1,270 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
PPP.ETCFILE >PUSHW L.ETCFILE
|
||||
>PUSHBI O.RDONLY
|
||||
>PUSHBI 0
|
||||
>PUSHWZ
|
||||
>SYSCALL FOpen
|
||||
bcs .99
|
||||
|
||||
sta hETCFILE
|
||||
|
||||
>PUSHW L.MSG.ETCFILE
|
||||
>PUSHW L.ETCFILE
|
||||
>PUSHBI 2
|
||||
>SYSCALL PrintF
|
||||
|
||||
.1 >PUSHB hETCFILE
|
||||
>PUSHW L.IN.Buf
|
||||
>PUSHWI 255
|
||||
>SYSCALL FGetS
|
||||
bcs .8
|
||||
|
||||
lda IN.Buf
|
||||
beq .1
|
||||
|
||||
cmp #'#'
|
||||
beq .1
|
||||
|
||||
>LDYA L.IN.Buf
|
||||
>SYSCALL PutS
|
||||
|
||||
lda IN.Buf
|
||||
cmp #'>'
|
||||
bne .2
|
||||
|
||||
>LDYA L.IN.Bufp1
|
||||
jsr SSC.Write
|
||||
bcs .9
|
||||
|
||||
.10 bra .1
|
||||
|
||||
.99 rts
|
||||
|
||||
.2 cmp #'?'
|
||||
bne .7
|
||||
*--------------------------------------
|
||||
.3 jsr SSC.Read
|
||||
bcs .9
|
||||
|
||||
tya
|
||||
beq .3
|
||||
|
||||
lda #0
|
||||
sta IN.Buf,y
|
||||
|
||||
>LDYA L.IN.Buf
|
||||
>STYA ZPPtr2
|
||||
|
||||
.4 jsr PPP.SkipCRLFPtr2
|
||||
bcs .3
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.5 iny
|
||||
lda IN.Buf+1,y skip !
|
||||
beq .10
|
||||
|
||||
.6 cmp (ZPPtr2),y
|
||||
beq .5
|
||||
|
||||
lda (ZPPtr2),y
|
||||
beq .60
|
||||
|
||||
cmp #C.CR
|
||||
beq .60
|
||||
|
||||
jsr PPP.ETCFILE.ERR1
|
||||
bra .9
|
||||
|
||||
.60 jsr PPP.NextStrPtr2
|
||||
lda (ZPPtr2)
|
||||
bne .4
|
||||
|
||||
.7 jsr PPP.ETCFILE.ERR2
|
||||
bra .9
|
||||
|
||||
.8 cmp #MLI.E.EOF
|
||||
sec
|
||||
bne .9
|
||||
|
||||
lda #0
|
||||
clc
|
||||
|
||||
.9 php
|
||||
pha
|
||||
lda hETCFILE
|
||||
>SYSCALL FClose
|
||||
pla
|
||||
plp
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
PPP.SkipCRLFPtr2
|
||||
.1 lda (ZPPtr2)
|
||||
beq .9
|
||||
|
||||
cmp #C.CR
|
||||
bne .8
|
||||
|
||||
ldy #1
|
||||
lda (ZPPtr2),y
|
||||
beq .9
|
||||
|
||||
cmp #C.LF
|
||||
bne .2
|
||||
|
||||
iny
|
||||
|
||||
.2 tya
|
||||
clc
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .1
|
||||
|
||||
inc ZPPtr2+1
|
||||
bra .1
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
PPP.NextStrPtr2 ldy #$ff
|
||||
|
||||
.1 iny
|
||||
lda (ZPPtr2),y
|
||||
beq .2
|
||||
|
||||
cmp #C.CR
|
||||
bne .1
|
||||
|
||||
.2 tya
|
||||
clc
|
||||
adc ZPPtr2
|
||||
sta ZPPtr2
|
||||
bcc .8
|
||||
|
||||
inc ZPPtr2+1
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
PPP.ETCFILE.ERR1
|
||||
>PUSHW L.MSG.UNEXPECTED
|
||||
>PUSHW L.IN.Buf
|
||||
bra PPP.ETCFILE.ERR
|
||||
*--------------------------------------
|
||||
PPP.ETCFILE.ERR2
|
||||
>PUSHW L.MSG.SYNTAX
|
||||
>PUSHW L.IN.Buf
|
||||
|
||||
PPP.ETCFILE.ERR >PUSHBI 2
|
||||
>SYSCALL PrintF
|
||||
lda #MLI.E.IO
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
SSC.Write >STYA ZPPtr1
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.10 iny
|
||||
lda (ZPPtr1),y
|
||||
bne .10
|
||||
|
||||
lda #C.CR
|
||||
sta (ZPPtr1),y
|
||||
iny
|
||||
|
||||
lda #C.LF
|
||||
sta (ZPPtr1),y
|
||||
iny
|
||||
|
||||
sty Len
|
||||
|
||||
php
|
||||
sei
|
||||
|
||||
ldx DEVSLOTn08F
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 phy
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda SSC.STATUS-$8F,x
|
||||
bit #SSC.STATUS.nDCD true when 0
|
||||
bne .9
|
||||
|
||||
bit #SSC.STATUS.TDRE Register Empty ?
|
||||
bne .3
|
||||
|
||||
iny
|
||||
bne .2
|
||||
|
||||
.9 pla
|
||||
lda #MLI.E.IO
|
||||
plp
|
||||
sec
|
||||
rts
|
||||
|
||||
.3 ply
|
||||
|
||||
lda (ZPPtr1),y
|
||||
.6 sta SSC.DATA-$8F,x
|
||||
iny
|
||||
cpy Len
|
||||
bne .1
|
||||
|
||||
plp
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
SSC.Read php
|
||||
sei
|
||||
|
||||
ldx DEVSLOTn08F
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 phy
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda SSC.STATUS-$8F,x
|
||||
bit #SSC.STATUS.nDCD true when 0
|
||||
bne .9
|
||||
|
||||
bit #SSC.STATUS.RDRF incoming char?
|
||||
bne .3
|
||||
|
||||
iny
|
||||
bne .2
|
||||
|
||||
ply
|
||||
|
||||
plp
|
||||
clc
|
||||
rts
|
||||
|
||||
.3 ply
|
||||
|
||||
lda SSC.DATA-$8F,x
|
||||
sta IN.Buf,y
|
||||
iny
|
||||
|
||||
bra .1
|
||||
|
||||
.9 lda #MLI.E.IO
|
||||
plp
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/drv/pppssc.drv.s.e
|
||||
LOAD usr/src/drv/pppssc.drv.s
|
||||
ASM
|
1377
DRV/PPPSSC.DRV.S.txt
1377
DRV/PPPSSC.DRV.S.txt
File diff suppressed because it is too large
Load Diff
@ -25,7 +25,7 @@ PSCTX.SIZE .EQ $100-pCode
|
||||
A2osX.ZCALL .EQ $0000
|
||||
*--------------------------------------
|
||||
* A2osX GLOBAL PAGE
|
||||
* $BC00->$BC0F : Public Vetors
|
||||
* $BC00->$BC0F : Public Vectors
|
||||
*--------------------------------------
|
||||
A2osX.SYSCALL .EQ $BC00
|
||||
A2osX.LIBCALL .EQ $BC03
|
||||
|
@ -1,38 +1,57 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
LIBTUI.Open .EQ 4
|
||||
LIBTUI.Close .EQ 6
|
||||
LIBTUI.LBOXNew .EQ 8
|
||||
LIBTUI.Init .EQ 4
|
||||
LIBTUI.GetEvent .EQ 6
|
||||
LIBTUI.Dispatch .EQ 8
|
||||
LIBTUI.Close .EQ 10
|
||||
LIBTUI.New .EQ 12
|
||||
LIBTUI.Destroy .EQ 14
|
||||
LIBTUI.Run .EQ 16
|
||||
LIBTUI.Draw .EQ 18
|
||||
LIBTUI.GetProp .EQ 20
|
||||
LIBTUI.SetProp .EQ 22
|
||||
LIBTUI.Activate .EQ 24
|
||||
LIBTUI.Deactivate .EQ 26
|
||||
*--------------------------------------
|
||||
S.OBJ.T .EQ 0
|
||||
S.OBJ.T.SCRN .EQ 0
|
||||
S.OBJ.T.LBOX .EQ 2
|
||||
S.OBJ.P .EQ 1
|
||||
S.OBJ.F .EQ 2
|
||||
S.OBJ.T.TBOX .EQ 2
|
||||
S.OBJ.T.LBOX .EQ 4
|
||||
S.OBJ.F .EQ 1
|
||||
S.OBJ.F.bTITLE .EQ %10000000
|
||||
S.OBJ.F.bMENU .EQ %01000000
|
||||
S.OBJ.F.bSTATUS .EQ %00100000
|
||||
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.P .EQ 2
|
||||
S.OBJ.S .EQ 3
|
||||
S.OBJ.S.bVISIBLE .EQ %10000000
|
||||
S.OBJ.S.bACTIVE .EQ %01000000
|
||||
S.OBJ.S.bACTIVE .EQ %10000000
|
||||
S.OBJ.S.bVISIBLE .EQ %01000000
|
||||
S.OBJ.X1 .EQ 4
|
||||
S.OBJ.Y1 .EQ 5
|
||||
S.OBJ.W .EQ 6
|
||||
S.OBJ.H .EQ 7
|
||||
*--------------------------------------
|
||||
S.OBJ.X2 .EQ 8
|
||||
S.OBJ.Y2 .EQ 9
|
||||
S.OBJ.pTITLE .EQ 10
|
||||
S.OBJ.pMENU .EQ 12
|
||||
S.OBJ.pSTATUS .EQ 14
|
||||
S.OBJ.InnerX .EQ 10
|
||||
S.OBJ.InnerY .EQ 11
|
||||
S.OBJ.InnerW .EQ 12
|
||||
S.OBJ.InnerH .EQ 13
|
||||
S.OBJ.ActChild .EQ 14
|
||||
*
|
||||
S.OBJ.InnerX .EQ 16
|
||||
S.OBJ.InnerY .EQ 17
|
||||
S.OBJ.InnerW .EQ 18
|
||||
S.OBJ.InnerH .EQ 19
|
||||
*--------------------------------------
|
||||
S.OBJ.pTITLE .EQ 16
|
||||
S.OBJ.pMENU .EQ 18
|
||||
S.OBJ.pSTATUS .EQ 20
|
||||
S.OBJ.fRESIZE .EQ 22
|
||||
*
|
||||
*
|
||||
*--------------------------------------
|
||||
S.OBJ.Childs .EQ 32
|
||||
*
|
||||
S.OBJ .EQ 48
|
||||
@ -44,11 +63,23 @@ S.SCRN.EndBuf .EQ S.OBJ+15
|
||||
*
|
||||
S.SCRN .EQ S.OBJ+16
|
||||
*--------------------------------------
|
||||
S.TBOX.hBuf .EQ S.OBJ+0
|
||||
*
|
||||
S.TBOX.CurX .EQ S.OBJ+2
|
||||
S.TBOX.CurY .EQ S.OBJ+3
|
||||
S.TBOX.DocX .EQ S.OBJ+4
|
||||
S.TBOX.DocY .EQ S.OBJ+6
|
||||
|
||||
*
|
||||
S.TBOX .EQ S.OBJ+16
|
||||
*--------------------------------------
|
||||
S.LBOX.pL .EQ S.OBJ+0
|
||||
S.LBOX.Idx .EQ S.OBJ+2
|
||||
S.LBOX.Cnt .EQ S.OBJ+4
|
||||
S.LBOX.VScroll .EQ S.OBJ+3
|
||||
*
|
||||
S.LBOX .EQ S.OBJ+16
|
||||
*--------------------------------------
|
||||
EV.RESIZE .EQ $80
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE inc/libtui.i
|
||||
|
@ -1,6 +1,10 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
CFG.GET >LDYA L.IPCFG
|
||||
clc
|
||||
CFG.GET.RTS rts
|
||||
*--------------------------------------
|
||||
CFG.SET >PULLW ZPTmpPtr1 IPCFG
|
||||
|
||||
ldy #S.IPCFG-1
|
||||
@ -10,29 +14,6 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
ldx #5
|
||||
|
||||
.2 lda IPCFG+S.NETCFG.MAC,x
|
||||
sta ARP.REQ.SRCMAC,x
|
||||
sta ARP.REQ.SHA,x
|
||||
sta ARP.REP.SRCMAC,x
|
||||
sta ARP.REP.SHA,x
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
ldx #3
|
||||
|
||||
.3 lda IPCFG+S.IPCFG.IP,x
|
||||
sta SA.LOCAL+S.SOCKADDR.ADDR,x
|
||||
sta ARP.REQ.SPA,x
|
||||
sta ARP.REP.SPA,x
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
lda IPCFG+S.NETCFG.DevFlags
|
||||
and #S.DCB.NIC.FLAGS.ARPOFFLOAD
|
||||
beq .5
|
||||
|
||||
>LDYA L.DCB.NIC
|
||||
>STYA IOCTL+S.IOCTL.BUFPTR
|
||||
|
||||
@ -40,43 +21,72 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
|
||||
sta IOCTL+S.IOCTL.S
|
||||
|
||||
ldx #IOCTL.STATUS
|
||||
jsr CFG.SET.IOCTL
|
||||
bcs .9
|
||||
jsr CFG.IOCTL
|
||||
bcs CFG.GET.RTS
|
||||
|
||||
ldx #11 IP/MASK/GW
|
||||
|
||||
.4 lda IPCFG+S.IPCFG.IP,x
|
||||
lda IPCFG+S.IPCFG.IP
|
||||
bne .3
|
||||
|
||||
lda DCB.NIC+S.DCB.NIC.IP
|
||||
beq .6
|
||||
|
||||
.2 lda DCB.NIC+S.DCB.NIC.IP,x
|
||||
sta IPCFG+S.IPCFG.IP,x
|
||||
dex
|
||||
bpl .2
|
||||
|
||||
lda #S.IPCFG.STATUS.OK
|
||||
sta IPCFG
|
||||
|
||||
bra .6
|
||||
|
||||
.3 lda IPCFG+S.IPCFG.IP,x
|
||||
sta DCB.NIC+S.DCB.NIC.IP,x
|
||||
dex
|
||||
bpl .4
|
||||
bpl .3
|
||||
|
||||
lda #S.IOCTL.C.SETDCB
|
||||
.6 lda #S.IOCTL.C.SETDCB
|
||||
sta IOCTL+S.IOCTL.C
|
||||
|
||||
ldx #IOCTL.CONTROL
|
||||
jsr CFG.SET.IOCTL
|
||||
bcs .9
|
||||
ldx #IOCTL.CONTROL NIC driver may wants IP config....
|
||||
jsr CFG.IOCTL
|
||||
* bcs CFG.GET.RTS .....or not
|
||||
|
||||
.5 stz SA.LOCAL+S.SOCKADDR.PORT
|
||||
ldx #5
|
||||
|
||||
.7 lda IPCFG+S.NETCFG.MAC,x
|
||||
sta ARP.REQ.SRCMAC,x
|
||||
sta ARP.REQ.SHA,x
|
||||
sta ARP.REP.SRCMAC,x
|
||||
sta ARP.REP.SHA,x
|
||||
dex
|
||||
bpl .7
|
||||
|
||||
ldx #3
|
||||
|
||||
.8 lda IPCFG+S.IPCFG.IP,x
|
||||
sta SA.LOCAL+S.SOCKADDR.ADDR,x
|
||||
sta ARP.REQ.SPA,x
|
||||
sta ARP.REP.SPA,x
|
||||
dex
|
||||
bpl .8
|
||||
|
||||
stz SA.LOCAL+S.SOCKADDR.PORT
|
||||
stz SA.LOCAL+S.SOCKADDR.PORT+1
|
||||
|
||||
>PUSHB hDNSSocket
|
||||
>PUSHW L.SA.LOCAL
|
||||
jmp SKT.Bind
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CFG.SET.IOCTL >PUSHB IPCFG+S.NETCFG.DevID
|
||||
CFG.IOCTL >PUSHB IPCFG+S.NETCFG.DevID
|
||||
txa
|
||||
>PUSHA
|
||||
>PUSHW L.IOCTL
|
||||
>SYSCALL2 IOCTL
|
||||
rts
|
||||
*--------------------------------------
|
||||
CFG.GET >LDYA L.IPCFG
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libtcpip.s.cfg
|
||||
LOAD usr/src/lib/libtcpip.s
|
||||
|
129
LIB/LIBTUI.S.LBOX.txt
Normal file
129
LIB/LIBTUI.S.LBOX.txt
Normal file
@ -0,0 +1,129 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
LBOX.New
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
LBOX.Destroy
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
LBOX.Run lda (pStack) Event
|
||||
cmp #C.LF
|
||||
bne .5
|
||||
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.5 cmp #C.VT
|
||||
bne .9
|
||||
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
LBOX.Draw ldy #S.LBOX.VScroll
|
||||
lda (ZPObjPtr),y
|
||||
clc
|
||||
adc (pStack) Relative Y
|
||||
|
||||
tax
|
||||
jsr LBOX.GetLineX
|
||||
bcs .5
|
||||
|
||||
txa
|
||||
ldy #S.LBOX.Idx
|
||||
cmp (ZPObjPtr),y
|
||||
bne .1
|
||||
|
||||
ldx #SEQ.INVERSE-SEQS
|
||||
jsr LIB.LineBufSeqOut
|
||||
|
||||
.1 ldy #S.OBJ.InnerW
|
||||
lda (ZPObjPtr),y
|
||||
tax
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda (ZPPtr1),y
|
||||
beq .3
|
||||
|
||||
jsr LIB.LineBufCOut
|
||||
iny
|
||||
dex
|
||||
bne .2
|
||||
|
||||
.3 txa
|
||||
beq .8
|
||||
|
||||
bra .6
|
||||
|
||||
.5 ldy #S.OBJ.InnerW
|
||||
lda (ZPObjPtr),y
|
||||
|
||||
tax
|
||||
|
||||
.6 lda #C.SPACE
|
||||
|
||||
.7 jsr LIB.LineBufCOut
|
||||
dex
|
||||
bne .7
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
LBOX.GetLineX stz TempI
|
||||
|
||||
ldy #S.LBOX.pL
|
||||
lda (ZPObjPtr),y
|
||||
sta ZPPtr1
|
||||
iny
|
||||
lda (ZPObjPtr),y
|
||||
sta ZPPtr1+1
|
||||
|
||||
.1 cpx TempI
|
||||
beq .8
|
||||
|
||||
.2 inc TempI
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.4 iny
|
||||
lda (ZPPtr1),y
|
||||
bne .4
|
||||
|
||||
tya
|
||||
beq .9
|
||||
|
||||
sec
|
||||
adc ZPPtr1
|
||||
sta ZPPtr1
|
||||
bcc .1
|
||||
|
||||
inc ZPPtr1+1
|
||||
bra .1
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
LBOX.Activate
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
LBOX.Deactivate
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libtui.s.lbox
|
||||
LOAD usr/src/lib/libtui.s
|
||||
ASM
|
585
LIB/LIBTUI.S.OBJ.txt
Normal file
585
LIB/LIBTUI.S.OBJ.txt
Normal file
@ -0,0 +1,585 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
OBJ.New >PULLW ZPPtr1 Params
|
||||
|
||||
>PULLB TempW hParent
|
||||
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtr2
|
||||
|
||||
ldy #S.OBJ.Childs
|
||||
|
||||
.10 lda (ZPPtr2),y
|
||||
beq .11
|
||||
|
||||
iny
|
||||
cpy #S.OBJ
|
||||
bcc .10
|
||||
|
||||
lda #E.OOH
|
||||
* sec
|
||||
rts
|
||||
|
||||
.11 sty TempW+1
|
||||
|
||||
lda (ZPPtr1) S.OBJ.T
|
||||
tax
|
||||
|
||||
ldy OBJ.SIZES,x
|
||||
lda #0
|
||||
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPObjPtr
|
||||
|
||||
phx
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 lda (ZPPtr1),y
|
||||
sta (ZPObjPtr),y
|
||||
iny
|
||||
cpy #S.OBJ.H+1
|
||||
bne .1
|
||||
|
||||
lda (ZPPtr1) S.OBJ.T
|
||||
tax
|
||||
|
||||
ldy OBJ.SIZES,x
|
||||
|
||||
lda #0
|
||||
|
||||
.2 dey
|
||||
sta (ZPObjPtr),y
|
||||
cpy #S.OBJ.pTITLE
|
||||
bne .2
|
||||
|
||||
lda TempW
|
||||
ldy #S.OBJ.P
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
>LDYA ZPObjPtr
|
||||
jsr LIB.SetObjX2Y2
|
||||
|
||||
pla
|
||||
ldy TempW+1
|
||||
sta (ZPPtr2),y
|
||||
pha
|
||||
|
||||
jsr .7
|
||||
|
||||
bcs .99
|
||||
|
||||
pla
|
||||
|
||||
rts
|
||||
|
||||
.7 lda (ZPObjPtr) S.OBJ.T
|
||||
tax
|
||||
jmp (J.ObjNew,x)
|
||||
|
||||
.99 plx
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
OBJ.Destroy ldx ZPObjPtr
|
||||
phx
|
||||
ldx ZPObjPtr+1
|
||||
phx
|
||||
|
||||
pha
|
||||
jsr LIB.GetObj
|
||||
|
||||
ldy #S.OBJ.Childs
|
||||
|
||||
.1 lda (ZPObjPtr),y
|
||||
beq .2
|
||||
|
||||
phy
|
||||
jsr OBJ.Destroy
|
||||
ply
|
||||
|
||||
.2 iny
|
||||
cpy #S.OBJ
|
||||
bcc .1
|
||||
|
||||
pla
|
||||
pha
|
||||
jsr LIB.GetObj
|
||||
|
||||
jsr .7
|
||||
|
||||
pla
|
||||
>SYSCALL2 FreeMem
|
||||
|
||||
plx
|
||||
stx ZPObjPtr+1
|
||||
plx
|
||||
stx ZPObjPtr
|
||||
|
||||
rts
|
||||
|
||||
.7 lda (ZPObjPtr) S.OBJ.T
|
||||
tax
|
||||
jmp (J.ObjDestroy,x)
|
||||
*--------------------------------------
|
||||
OBJ.Run ldx ZPObjPtr
|
||||
phx
|
||||
ldx ZPObjPtr+1
|
||||
phx
|
||||
|
||||
ldy #1
|
||||
lda (pStack),y
|
||||
jsr LIB.GetObj
|
||||
|
||||
ldy #S.OBJ.S
|
||||
lda (ZPObjPtr),y
|
||||
bpl .9 S.OBJ.S.bACTIVE
|
||||
|
||||
ldy #1
|
||||
lda (pStack),y hOBJ
|
||||
>PUSHA
|
||||
lda (pStack),y Event
|
||||
>PUSHA
|
||||
jsr .80
|
||||
|
||||
bcc .8
|
||||
|
||||
ldy #S.OBJ.Childs
|
||||
|
||||
.1 lda (ZPObjPtr),y
|
||||
beq .5
|
||||
|
||||
phy
|
||||
>PUSHA hChild
|
||||
ldy #1
|
||||
lda (pStack),y Event
|
||||
>PUSHA
|
||||
jsr OBJ.Run
|
||||
|
||||
ply
|
||||
|
||||
bcc .8
|
||||
|
||||
.5 iny
|
||||
cpy #S.OBJ
|
||||
bne .1
|
||||
|
||||
.9 sec
|
||||
|
||||
.8 plx
|
||||
stx ZPObjPtr+1
|
||||
plx
|
||||
stx ZPObjPtr
|
||||
|
||||
rts
|
||||
|
||||
.80 lda (ZPObjPtr) S.OBJ.T
|
||||
tax
|
||||
jmp (J.ObjRun,x)
|
||||
*--------------------------------------
|
||||
OBJ.Draw >PUSHA hObj
|
||||
|
||||
jsr OBJ.Draw.Top
|
||||
bcs .9
|
||||
|
||||
jsr OBJ.Draw.Body
|
||||
bcs .9
|
||||
|
||||
jsr OBJ.Draw.Bottom
|
||||
bcs .9
|
||||
|
||||
lda #S.OBJ.Childs
|
||||
>PUSHA
|
||||
|
||||
.6 ldy #1
|
||||
lda (pStack),y
|
||||
jsr LIB.GetObj
|
||||
|
||||
lda (pStack)
|
||||
tay
|
||||
lda (ZPObjPtr),y
|
||||
beq .7
|
||||
|
||||
jsr OBJ.Draw
|
||||
bcs .99
|
||||
|
||||
.7 lda (pStack)
|
||||
inc
|
||||
sta (pStack)
|
||||
cmp #S.OBJ
|
||||
bne .6
|
||||
|
||||
clc
|
||||
|
||||
.99 inc pStack
|
||||
|
||||
.9 inc pStack
|
||||
|
||||
OBJ.Draw.RTS rts
|
||||
*--------------------------------------
|
||||
OBJ.Draw.Top lda (pStack)
|
||||
jsr LIB.GetObj
|
||||
|
||||
ldy #S.OBJ.F
|
||||
lda (ZPObjPtr),y
|
||||
and #S.OBJ.F.bTITLE+S.OBJ.F.bHBorder
|
||||
* clc
|
||||
beq OBJ.Draw.RTS
|
||||
|
||||
jsr LIB.LineBufInit
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
lda (ZPObjPtr),y
|
||||
tax
|
||||
ldy #S.OBJ.Y1
|
||||
lda (ZPObjPtr),y
|
||||
tay
|
||||
jsr LIB.GotoXY
|
||||
|
||||
ldy #S.OBJ.F
|
||||
lda (ZPObjPtr),y
|
||||
and #S.OBJ.F.bVBorder
|
||||
beq .1
|
||||
|
||||
lda (ZPObjPtr)
|
||||
jsr LIB.SetColor
|
||||
|
||||
ldx #SEQ.BORDERTL-SEQS
|
||||
jsr LIB.LineBufSeqOut
|
||||
|
||||
.1 ldy #S.OBJ.F
|
||||
lda (ZPObjPtr),y
|
||||
bpl .4
|
||||
|
||||
ldx #SEQ.BAR-SEQS
|
||||
jsr LIB.LineBufSeqOut
|
||||
|
||||
ldy #S.OBJ.InnerW
|
||||
lda (ZPObjPtr),y
|
||||
tax
|
||||
|
||||
ldy #S.OBJ.pTITLE
|
||||
lda (ZPObjPtr),y
|
||||
sta ZPPtr1
|
||||
iny
|
||||
lda (ZPObjPtr),y
|
||||
sta ZPPtr1+1
|
||||
beq .3
|
||||
|
||||
lda #C.SI
|
||||
jsr LIB.LineBufCOut
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda (ZPPtr1),y
|
||||
beq .3
|
||||
|
||||
jsr LIB.LineBufCOut
|
||||
iny
|
||||
dex
|
||||
bne .2
|
||||
|
||||
.3 txa
|
||||
beq .31
|
||||
|
||||
lda #C.SPACE
|
||||
|
||||
.30 jsr LIB.LineBufCOut
|
||||
dex
|
||||
bne .30
|
||||
|
||||
.31 ldx #SEQ.BAREND-SEQS
|
||||
jsr LIB.LineBufSeqOut
|
||||
bra .6
|
||||
|
||||
.4 ldy #S.OBJ.InnerW
|
||||
lda (ZPObjPtr),y
|
||||
tax
|
||||
|
||||
lda #'q'
|
||||
|
||||
.5 jsr LIB.LineBufCOut
|
||||
dex
|
||||
bne .5
|
||||
|
||||
.6 ldy #S.OBJ.F
|
||||
lda (ZPObjPtr),y
|
||||
and #S.OBJ.F.bVBorder
|
||||
beq .7
|
||||
|
||||
lda (ZPObjPtr)
|
||||
jsr LIB.SetColor
|
||||
|
||||
ldx #SEQ.BORDERTR-SEQS
|
||||
jsr LIB.LineBufSeqOut
|
||||
|
||||
.7 jmp LIB.LineBufOut
|
||||
*--------------------------------------
|
||||
OBJ.Draw.Body lda (pStack)
|
||||
jsr LIB.GetObj
|
||||
|
||||
ldy #S.OBJ.InnerY
|
||||
lda (ZPObjPtr),y
|
||||
>PUSHA
|
||||
|
||||
ldy #S.OBJ.InnerH
|
||||
lda (ZPObjPtr),y
|
||||
>PUSHA Count
|
||||
|
||||
>PUSHBI 0 Relative Y
|
||||
|
||||
.1 jsr LIB.LineBufInit
|
||||
|
||||
ldy #3 hObj
|
||||
lda (pStack),y
|
||||
jsr LIB.GetObj
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
lda (ZPObjPtr),y
|
||||
tax
|
||||
|
||||
ldy #2 InnerY
|
||||
lda (pStack),y
|
||||
tay
|
||||
jsr LIB.GotoXY
|
||||
|
||||
lda (ZPObjPtr)
|
||||
jsr LIB.SetColor
|
||||
|
||||
ldy #S.OBJ.F
|
||||
lda (ZPObjPtr),y
|
||||
and #S.OBJ.F.bVBorder
|
||||
php
|
||||
beq .2
|
||||
|
||||
ldx #SEQ.BORDERV-SEQS
|
||||
jsr LIB.LineBufSeqOut
|
||||
|
||||
.2 jsr OBJ.Draw.Body.JMP
|
||||
|
||||
ldx #SEQ.NORMAL-SEQS
|
||||
jsr LIB.LineBufSeqOut
|
||||
|
||||
plp
|
||||
beq .4
|
||||
|
||||
ldy #S.OBJ.X2
|
||||
lda (ZPObjPtr),y
|
||||
tax
|
||||
|
||||
ldy #2 InnerY
|
||||
lda (pStack),y
|
||||
tay
|
||||
jsr LIB.GotoXY
|
||||
|
||||
lda (ZPObjPtr)
|
||||
jsr LIB.SetColor
|
||||
|
||||
ldx #SEQ.BORDERV-SEQS
|
||||
jsr LIB.LineBufSeqOut
|
||||
|
||||
.4 jsr LIB.LineBufOut
|
||||
bcs .9
|
||||
|
||||
lda (pStack) Relative Y
|
||||
inc
|
||||
sta (pStack)
|
||||
|
||||
ldy #2 InnerY
|
||||
lda (pStack),y
|
||||
inc
|
||||
sta (pStack),y
|
||||
|
||||
dey
|
||||
|
||||
lda (pStack),y Count
|
||||
dec
|
||||
sta (pStack),y
|
||||
bne .1
|
||||
|
||||
* clc
|
||||
|
||||
.9 >POP 3
|
||||
|
||||
OBJ.Draw.Body.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
OBJ.Draw.Body.JMP
|
||||
lda (ZPObjPtr)
|
||||
tax
|
||||
jmp (J.ObjDraw,x)
|
||||
*--------------------------------------
|
||||
OBJ.Draw.Bottom lda (pStack)
|
||||
jsr LIB.GetObj
|
||||
|
||||
ldy #S.OBJ.F
|
||||
lda (ZPObjPtr),y
|
||||
and #S.OBJ.F.bSTATUS+S.OBJ.F.bHBorder
|
||||
* clc
|
||||
beq OBJ.Draw.Body.RTS
|
||||
|
||||
jsr LIB.LineBufInit
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
lda (ZPObjPtr),y
|
||||
tax
|
||||
ldy #S.OBJ.Y2
|
||||
lda (ZPObjPtr),y
|
||||
tay
|
||||
jsr LIB.GotoXY
|
||||
|
||||
ldy #S.OBJ.F
|
||||
lda (ZPObjPtr),y
|
||||
and #S.OBJ.F.bVBorder
|
||||
beq .1
|
||||
|
||||
lda (ZPObjPtr)
|
||||
jsr LIB.SetColor
|
||||
|
||||
ldx #SEQ.BORDERBL-SEQS
|
||||
jsr LIB.LineBufSeqOut
|
||||
|
||||
.1 ldy #S.OBJ.F
|
||||
lda (ZPObjPtr),y
|
||||
and #S.OBJ.F.bSTATUS
|
||||
beq .4
|
||||
|
||||
ldx #SEQ.BAR-SEQS
|
||||
jsr LIB.LineBufSeqOut
|
||||
|
||||
ldy #S.OBJ.InnerW
|
||||
lda (ZPObjPtr),y
|
||||
tax
|
||||
|
||||
ldy #S.OBJ.pSTATUS
|
||||
lda (ZPObjPtr),y
|
||||
sta ZPPtr1
|
||||
iny
|
||||
lda (ZPObjPtr),y
|
||||
sta ZPPtr1+1
|
||||
beq .3
|
||||
|
||||
lda #C.SI
|
||||
jsr LIB.LineBufCOut
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda (ZPPtr1),y
|
||||
beq .3
|
||||
|
||||
jsr LIB.LineBufCOut
|
||||
iny
|
||||
dex
|
||||
bne .2
|
||||
|
||||
.3 txa
|
||||
beq .31
|
||||
|
||||
lda #C.SPACE
|
||||
|
||||
.30 jsr LIB.LineBufCOut
|
||||
dex
|
||||
bne .30
|
||||
|
||||
.31 ldx #SEQ.BAREND-SEQS
|
||||
jsr LIB.LineBufSeqOut
|
||||
bra .6
|
||||
|
||||
.4 ldy #S.OBJ.InnerW
|
||||
lda (ZPObjPtr),y
|
||||
tax
|
||||
|
||||
lda #'q'
|
||||
|
||||
.5 jsr LIB.LineBufCOut
|
||||
dex
|
||||
bne .5
|
||||
|
||||
.6 ldy #S.OBJ.F
|
||||
lda (ZPObjPtr),y
|
||||
and #S.OBJ.F.bVBorder
|
||||
beq .7
|
||||
|
||||
lda (ZPObjPtr)
|
||||
jsr LIB.SetColor
|
||||
|
||||
ldx #SEQ.BORDERBR-SEQS
|
||||
jsr LIB.LineBufSeqOut
|
||||
|
||||
.7 jmp LIB.LineBufOut
|
||||
*--------------------------------------
|
||||
OBJ.GetProp ldy #1 hObj
|
||||
lda (pStack),y
|
||||
jsr LIB.GetObj
|
||||
|
||||
>PULLA
|
||||
tay prop
|
||||
|
||||
lda (ZPObjPtr),y
|
||||
pha
|
||||
iny
|
||||
lda (ZPObjPtr),y
|
||||
ply
|
||||
|
||||
inc pStack
|
||||
* clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
OBJ.SetProp ldy #3 hObj
|
||||
lda (pStack),y
|
||||
jsr LIB.GetObj
|
||||
|
||||
ldy #2
|
||||
lda (pStack),y
|
||||
tay prop
|
||||
|
||||
>PULLA
|
||||
sta (ZPObjPtr),y
|
||||
iny
|
||||
>PULLA
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
inc pStack
|
||||
inc pStack
|
||||
* clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
OBJ.Activate pha
|
||||
|
||||
jsr LIB.FindActive
|
||||
bcs .1
|
||||
|
||||
jsr OBJ.Deactivate
|
||||
|
||||
.1 pla
|
||||
*--------------------------------------
|
||||
OBJ.Activate2 jsr LIB.GetObj
|
||||
|
||||
ldy #S.OBJ.S
|
||||
lda (ZPObjPtr),y
|
||||
ora #S.OBJ.S.bACTIVE
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
lda (ZPObjPtr)
|
||||
tax
|
||||
jmp (J.ObjActivate,x)
|
||||
*--------------------------------------
|
||||
OBJ.Deactivate jsr LIB.GetObj
|
||||
|
||||
ldy #S.OBJ.S
|
||||
lda (ZPObjPtr),y
|
||||
and #S.OBJ.S.bACTIVE^$ff
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
lda (ZPObjPtr)
|
||||
tax
|
||||
jmp (J.ObjDeactivate,x)
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libtui.s.obj
|
||||
LOAD usr/src/lib/libtui.s
|
||||
ASM
|
82
LIB/LIBTUI.S.SCRN.txt
Normal file
82
LIB/LIBTUI.S.SCRN.txt
Normal file
@ -0,0 +1,82 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
SCRN.New
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
SCRN.Destroy
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
SCRN.Run lda (pStack) Event
|
||||
cmp #C.TAB
|
||||
bne .9
|
||||
|
||||
ldy #1
|
||||
lda (pStack),y hObj
|
||||
jsr LIB.FindActive
|
||||
bcs .9
|
||||
|
||||
>PUSHA hActive
|
||||
|
||||
phy index
|
||||
|
||||
ldy #2
|
||||
lda (pStack),y hObj
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
ply
|
||||
|
||||
.1 iny
|
||||
cpy #S.OBJ
|
||||
bne .2
|
||||
|
||||
ldy #S.OBJ.Childs
|
||||
|
||||
.2 lda (ZPPtr1),y
|
||||
beq .1
|
||||
|
||||
cmp (pStack)
|
||||
beq .8
|
||||
|
||||
jsr OBJ.Activate2
|
||||
|
||||
lda (pStack)
|
||||
jsr OBJ.Deactivate
|
||||
|
||||
.8 inc pStack discard hActive
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
SCRN.Draw ldy #S.OBJ.InnerW
|
||||
lda (ZPObjPtr),y
|
||||
|
||||
tax
|
||||
lda #C.SPACE
|
||||
|
||||
.1 jsr LIB.LineBufCOut
|
||||
dex
|
||||
bne .1
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
SCRN.Activate
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
SCRN.Deactivate
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libtui.s.scrn
|
||||
LOAD usr/src/lib/libtui.s
|
||||
ASM
|
93
LIB/LIBTUI.S.TBOX.txt
Normal file
93
LIB/LIBTUI.S.TBOX.txt
Normal file
@ -0,0 +1,93 @@
|
||||
NEW
|
||||
AUTO 3,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
TBOX.New >LDYAI 1024
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA ZPPtr1
|
||||
txa
|
||||
|
||||
ldy #S.TBOX.hBuf
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
lda #0
|
||||
sta (ZPPtr1)
|
||||
|
||||
ldy #S.TBOX.CurX
|
||||
|
||||
.1 sta (ZPObjPtr),y
|
||||
iny
|
||||
cpy #S.TBOX.DocY+1
|
||||
bne .1
|
||||
|
||||
clc
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
TBOX.Destroy ldy #S.TBOX.hBuf
|
||||
lda (ZPObjPtr),y
|
||||
beq .8
|
||||
|
||||
>SYSCALL2 FreeMem
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
TBOX.Run lda (pStack) Event
|
||||
cmp #C.SPACE
|
||||
bcc .8
|
||||
|
||||
|
||||
.9 sec
|
||||
|
||||
.8
|
||||
rts
|
||||
*--------------------------------------
|
||||
TBOX.Draw ldy #S.OBJ.InnerW
|
||||
lda (ZPObjPtr),y
|
||||
|
||||
tax
|
||||
lda #C.SPACE
|
||||
|
||||
.1 jsr LIB.LineBufCOut
|
||||
dex
|
||||
bne .1
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
TBOX.Activate jsr LIB.LineBufInit
|
||||
|
||||
ldy #S.OBJ.InnerX
|
||||
lda (ZPObjPtr),y
|
||||
clc
|
||||
ldy #S.TBOX.CurX
|
||||
adc (ZPObjPtr),y
|
||||
tax
|
||||
|
||||
ldy #S.OBJ.InnerY
|
||||
lda (ZPObjPtr),y
|
||||
clc
|
||||
ldy #S.TBOX.CurY
|
||||
adc (ZPObjPtr),y
|
||||
tay
|
||||
jsr LIB.GotoXY
|
||||
|
||||
ldx #SEQ.CURON-SEQS
|
||||
jsr LIB.LineBufSeqOut
|
||||
|
||||
jmp LIB.LineBufOut
|
||||
*--------------------------------------
|
||||
TBOX.Deactivate jsr LIB.LineBufInit
|
||||
|
||||
ldx #SEQ.CUROFF-SEQS
|
||||
jsr LIB.LineBufSeqOut
|
||||
|
||||
jmp LIB.LineBufOut
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libtui.s.tbox
|
||||
LOAD usr/src/lib/libtui.s
|
||||
ASM
|
711
LIB/LIBTUI.S.txt
711
LIB/LIBTUI.S.txt
@ -12,11 +12,20 @@ NEW
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPLIB
|
||||
hScrn .BS 1
|
||||
.BS 1
|
||||
|
||||
ZPScrnPtr .BS 2
|
||||
ZPObjPtr .BS 2
|
||||
|
||||
ZPLineBufPtr .BS 2
|
||||
ZPLineBufCnt .BS 2
|
||||
|
||||
ZPPtr1 .BS 2
|
||||
ZPPtr2 .BS 2
|
||||
TempW .BS 2
|
||||
TempC .BS 2
|
||||
TempI .BS 2
|
||||
bResize .BS 1
|
||||
|
||||
.ED
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
@ -35,22 +44,58 @@ CS.START cld
|
||||
*--------------------------------------
|
||||
.1 .DA LIB.LOAD
|
||||
.DA LIB.UNLOAD
|
||||
.DA LIB.Open
|
||||
.DA LIB.Init
|
||||
.DA LIB.GetEvent
|
||||
.DA LIB.Dispatch
|
||||
.DA LIB.Close
|
||||
.DA LIB.LBOXNew
|
||||
.DA OBJ.New
|
||||
.DA OBJ.Destroy
|
||||
.DA OBJ.Run
|
||||
.DA OBJ.Draw
|
||||
.DA OBJ.GetProp
|
||||
.DA OBJ.SetProp
|
||||
.DA OBJ.Activate
|
||||
.DA OBJ.Deactivate
|
||||
*--------------------------------------
|
||||
J.ObjNew .DA SCRN.New
|
||||
.DA TBOX.New
|
||||
.DA LBOX.New
|
||||
*--------------------------------------
|
||||
J.ObjDestroy .DA SCRN.Destroy
|
||||
.DA TBOX.Destroy
|
||||
.DA LBOX.Destroy
|
||||
*--------------------------------------
|
||||
J.ObjRun .DA SCRN.Run
|
||||
.DA TBOX.Run
|
||||
.DA LBOX.Run
|
||||
*--------------------------------------
|
||||
J.ObjDraw .DA SCRN.Draw
|
||||
.DA TBOX.Draw
|
||||
.DA LBOX.Draw
|
||||
*--------------------------------------
|
||||
J.ObjActivate .DA SCRN.Activate
|
||||
.DA TBOX.Activate
|
||||
.DA LBOX.Activate
|
||||
*--------------------------------------
|
||||
J.ObjDeactivate .DA SCRN.Deactivate
|
||||
.DA TBOX.Deactivate
|
||||
.DA LBOX.Deactivate
|
||||
*--------------------------------------
|
||||
L.SEQ.TERMCAP .DA SEQ.TERMCAP
|
||||
L.SEQ.INIT .DA SEQ.INIT
|
||||
L.SEQ.GOTOXY .DA SEQ.GOTOXY
|
||||
L.SEQ.COLOR .DA SEQ.COLOR
|
||||
L.SEQ.CLOSE .DA SEQ.CLOSE
|
||||
L.FMT.ESCCSI.R .DA FMT.ESCCSI.R
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
LIB.LOAD lda LibCnt
|
||||
bne .8
|
||||
|
||||
>LDYAI 256
|
||||
>LDYAI 512
|
||||
>SYSCALL2 GetMem
|
||||
bcs .9
|
||||
|
||||
>STYA LineBuf
|
||||
stx hLineBuf
|
||||
|
||||
|
||||
@ -68,15 +113,18 @@ LIB.UNLOAD dec LibCnt
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
LIB.Open >LDYAI S.SCRN
|
||||
LIB.Init sta TempW F
|
||||
|
||||
>LDYAI S.SCRN
|
||||
>SYSCALL2 GetMem
|
||||
bcs .99
|
||||
|
||||
>STYA ZPScrnPtr
|
||||
txa
|
||||
>PUSHA
|
||||
>PUSHA hScrn
|
||||
|
||||
lda #0
|
||||
>PUSHA Init Counter
|
||||
|
||||
ldy #S.SCRN-1
|
||||
|
||||
@ -84,27 +132,32 @@ LIB.Open >LDYAI S.SCRN
|
||||
dey
|
||||
bpl .10
|
||||
|
||||
jsr CheckCh.Reset
|
||||
lda TempW
|
||||
ldy #S.OBJ.F
|
||||
sta (ZPScrnPtr),y
|
||||
|
||||
>LDYA L.SEQ.TERMCAP
|
||||
>SYSCALL2 puts
|
||||
jsr LIB.GetC.Reset
|
||||
|
||||
lda #0
|
||||
>PUSHA
|
||||
>LDYA L.SEQ.INIT
|
||||
jsr LIB.YAOut
|
||||
bcs .98
|
||||
|
||||
.1 >SLEEP
|
||||
|
||||
ldy #1
|
||||
ldy #1 hScrn
|
||||
lda (pStack),y
|
||||
jsr GetScrn
|
||||
|
||||
jsr CheckCh
|
||||
bcs .97
|
||||
jsr LIB.GetC
|
||||
bcs .98
|
||||
|
||||
beq .2
|
||||
|
||||
>SYSCALL2 PutChar
|
||||
bcs .97
|
||||
>SYSCALL PutChar
|
||||
bcs .98
|
||||
|
||||
ldy #1 hScrn
|
||||
lda (pStack),y
|
||||
jsr LIB.GetScrn
|
||||
|
||||
.2 ldy #S.OBJ.W
|
||||
lda (ZPScrnPtr),y
|
||||
@ -124,115 +177,297 @@ LIB.Open >LDYAI S.SCRN
|
||||
iny S.OBJ.H
|
||||
sta (ZPScrnPtr),y
|
||||
|
||||
.8 inc pStack
|
||||
|
||||
>LDYA ZPScrnPtr
|
||||
.8 >LDYA ZPScrnPtr
|
||||
jsr LIB.SetObjX2Y2
|
||||
|
||||
ldy #S.OBJ.S
|
||||
lda #S.OBJ.S.bACTIVE
|
||||
sta (ZPScrnPtr),y
|
||||
|
||||
inc pStack Discard counter
|
||||
>PULLA hScrn
|
||||
clc
|
||||
rts
|
||||
|
||||
.97 inc pStack
|
||||
inc pStack
|
||||
.99 rts
|
||||
|
||||
.98 pha
|
||||
lda hScrn
|
||||
inc pStack Discard counter
|
||||
>PULLA hScrn
|
||||
>SYSCALL2 FreeMem
|
||||
pla
|
||||
sec
|
||||
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
LIB.Close >SYSCALL2 FreeMem
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
LIB.LBOXNew >PULLW ZPPtr1 Params
|
||||
LIB.GetEvent stz bResize
|
||||
|
||||
>PULLA hScrn
|
||||
jsr GetScrn
|
||||
>PUSHA hScrn
|
||||
|
||||
>LDYAI S.LBOX
|
||||
>SYSCALL2 GetMem
|
||||
jsr LIB.GetC
|
||||
bcs .9
|
||||
|
||||
>STYA ZPObjPtr
|
||||
bit bResize
|
||||
bpl .8
|
||||
|
||||
lda #S.OBJ.T.LBOX
|
||||
sta (ZPObjPtr)
|
||||
lda (pStack)
|
||||
jsr LIB.GetScrn
|
||||
|
||||
ldy #S.OBJ.P
|
||||
lda hScrn
|
||||
sta (ZPObjPtr),y
|
||||
ldy #S.OBJ.fRESIZE
|
||||
lda (ZPScrnPtr),y
|
||||
sta ZPPtr1
|
||||
|
||||
iny #S.OBJ.F
|
||||
lda #S.OBJ.F.bHBorder+S.OBJ.F.bVBorder
|
||||
sta (ZPObjPtr),y
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
|
||||
.1 lda (ZPPtr1),y
|
||||
sta (ZPObjPtr),y
|
||||
iny
|
||||
cpy #S.OBJ.H+1
|
||||
lda (ZPScrnPtr),y
|
||||
sta ZPPtr1+1
|
||||
|
||||
jsr .10
|
||||
|
||||
stz bResize
|
||||
|
||||
lda #0
|
||||
clc
|
||||
.8
|
||||
.9 inc pStack
|
||||
|
||||
rts
|
||||
|
||||
.10 jmp (ZPPtr1)
|
||||
*--------------------------------------
|
||||
LIB.Dispatch jsr OBJ.Run
|
||||
bcc .8
|
||||
|
||||
lda (pStack)
|
||||
cmp #3 Ctrl-C
|
||||
beq .9
|
||||
|
||||
clc
|
||||
|
||||
.8
|
||||
|
||||
.9 inc pStack Destroy Event
|
||||
inc pStack on Stack
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
LIB.Close jsr OBJ.Destroy
|
||||
|
||||
>LDYA L.SEQ.CLOSE
|
||||
jsr LIB.YAOut
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
LIB.FindActive ldx ZPObjPtr
|
||||
phx
|
||||
ldx ZPObjPtr+1
|
||||
phx
|
||||
|
||||
jsr LIB.GetObj
|
||||
|
||||
* ldy #S.OBJ.P
|
||||
* lda (ZPObjPtr),y
|
||||
* sec
|
||||
* beq .80
|
||||
|
||||
ldy #S.OBJ.Childs
|
||||
|
||||
.1 phy
|
||||
lda (ZPObjPtr),y
|
||||
beq .7
|
||||
|
||||
pha
|
||||
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
ldy #S.OBJ.S
|
||||
lda (ZPPtr1),y
|
||||
and #S.OBJ.S.bACTIVE
|
||||
bne .8
|
||||
|
||||
pla
|
||||
|
||||
.7 ply
|
||||
iny
|
||||
cpy #S.OBJ
|
||||
bne .1
|
||||
|
||||
* sec
|
||||
bra .80
|
||||
|
||||
|
||||
.8 txa
|
||||
.8 pla
|
||||
ply
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
.80 plx
|
||||
stx ZPObjPtr+1
|
||||
plx
|
||||
stx ZPObjPtr
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
LIB.LBOXSetData >SYSCALL2 GetMemPtr
|
||||
LIB.GotoXY >PUSHW ZPLineBufPtr
|
||||
>PUSHW L.SEQ.GOTOXY
|
||||
|
||||
tya
|
||||
inc
|
||||
>PUSHA
|
||||
|
||||
txa
|
||||
inc
|
||||
>PUSHA
|
||||
|
||||
>PUSHBI 2
|
||||
jmp LIB.LineBufPrintF
|
||||
*--------------------------------------
|
||||
LIB.SetColor tax
|
||||
>PUSHW ZPLineBufPtr
|
||||
>PUSHW L.SEQ.COLOR
|
||||
|
||||
>PUSHB OBJ.COLORS,x
|
||||
>PUSHB OBJ.COLORS+1,x
|
||||
|
||||
>PUSHBI 2
|
||||
jmp LIB.LineBufPrintF
|
||||
*--------------------------------------
|
||||
LIB.GetScrn >SYSCALL2 GetMemPtr
|
||||
>STYA ZPScrnPtr
|
||||
rts
|
||||
*--------------------------------------
|
||||
LIB.GetObj >SYSCALL2 GetMemPtr
|
||||
>STYA ZPObjPtr
|
||||
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
LIB.LBOXFocus
|
||||
*--------------------------------------
|
||||
LIB.LBOXRun
|
||||
*--------------------------------------
|
||||
LIB.LBOXClose
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
LIB.SetObjX2Y2 >STYA ZPObjPtr
|
||||
LIB.SetObjX2Y2 >STYA ZPPtr1
|
||||
|
||||
ldy #S.OBJ.X1
|
||||
jsr .1
|
||||
jsr .7
|
||||
|
||||
ldy #S.OBJ.Y1
|
||||
jsr .7
|
||||
|
||||
.1 clc
|
||||
ldy #S.OBJ.F
|
||||
lda (ZPPtr1),y
|
||||
and #S.OBJ.F.bHBorder
|
||||
beq .1
|
||||
|
||||
ldy #S.OBJ.InnerX
|
||||
lda (ZPPtr1),y
|
||||
inc
|
||||
sta (ZPPtr1),y
|
||||
|
||||
iny
|
||||
iny
|
||||
|
||||
lda (ZPPtr1),y S.OBJ.InnerW
|
||||
dec
|
||||
dec
|
||||
sta (ZPPtr1),y
|
||||
|
||||
.1 ldx #0
|
||||
|
||||
ldy #S.OBJ.F
|
||||
lda (ZPPtr1),y
|
||||
bit #S.OBJ.F.bVBorder+S.OBJ.F.bTITLE
|
||||
beq .2
|
||||
|
||||
dex
|
||||
|
||||
.2 bit #S.OBJ.F.bVBorder+S.OBJ.F.bSTATUS
|
||||
beq .3
|
||||
|
||||
dex
|
||||
|
||||
.3 txa
|
||||
beq .4
|
||||
|
||||
ldy #S.OBJ.InnerY
|
||||
lda (ZPPtr1),y
|
||||
inc
|
||||
sta (ZPPtr1),y
|
||||
|
||||
txa
|
||||
|
||||
iny
|
||||
iny
|
||||
|
||||
clc
|
||||
adc (ZPPtr1),y S.OBJ.InnerH
|
||||
sta (ZPPtr1),y
|
||||
|
||||
.4 ldy #S.OBJ.F
|
||||
lda (ZPPtr1),y
|
||||
bit #S.OBJ.F.bMENU
|
||||
beq .5
|
||||
|
||||
ldy #S.OBJ.InnerY
|
||||
lda (ZPPtr1),y
|
||||
inc
|
||||
sta (ZPPtr1),y
|
||||
|
||||
iny
|
||||
iny
|
||||
|
||||
lda (ZPPtr1),y S.OBJ.InnerH
|
||||
dec
|
||||
sta (ZPPtr1),y
|
||||
|
||||
.5 rts
|
||||
*--------------------------------------
|
||||
.7 lda (ZPPtr1),y S.OBJ.X1/Y1
|
||||
tax
|
||||
|
||||
lda (ZPObjPtr),y
|
||||
iny
|
||||
iny S.OBJ.W/H
|
||||
adc (ZPObjPtr),y
|
||||
phy
|
||||
|
||||
clc
|
||||
adc (ZPPtr1),y
|
||||
dec
|
||||
iny
|
||||
iny S.OBJ.X2/Y2
|
||||
sta (ZPObjPtr),y
|
||||
sta (ZPPtr1),y
|
||||
iny
|
||||
iny
|
||||
|
||||
txa
|
||||
sta (ZPPtr1),y S.OBJ.InnerX/Y
|
||||
|
||||
ply S.OBJ.W/H
|
||||
lda (ZPPtr1),y
|
||||
iny
|
||||
iny
|
||||
iny
|
||||
iny
|
||||
iny
|
||||
iny
|
||||
sta (ZPPtr1),y S.OBJ.InnerW/H
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
LIB.DrawFrame
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CheckCh ldy #S.PS.hStdIn
|
||||
LIB.GetC >PUSHA hScrn
|
||||
|
||||
ldy #S.PS.hStdIn
|
||||
lda (pPS),y
|
||||
>SYSCALL2 FEOF
|
||||
bcs .9
|
||||
|
||||
tay
|
||||
bne .18
|
||||
beq .10
|
||||
|
||||
>SYSCALL2 GetChar
|
||||
bcs .9
|
||||
inc pStack
|
||||
bra .18
|
||||
|
||||
tax
|
||||
.10 >SYSCALL2 GetChar
|
||||
bcc .11
|
||||
|
||||
.9 inc pStack
|
||||
rts
|
||||
|
||||
.11 pha
|
||||
|
||||
>PULLA
|
||||
jsr LIB.GetScrn
|
||||
|
||||
plx
|
||||
|
||||
ldy #S.SCRN.bEscMode
|
||||
lda (ZPScrnPtr),y
|
||||
@ -244,19 +479,19 @@ CheckCh ldy #S.PS.hStdIn
|
||||
lda (ZPScrnPtr),y
|
||||
|
||||
cpx #'[' CSI ?
|
||||
bne .10
|
||||
bne .12
|
||||
|
||||
cmp #S.SCRN.InBufPtr
|
||||
bne .49 buffer not empty...bad SEQ
|
||||
|
||||
.10 jsr CheckCh.ToBuf
|
||||
.12 jsr LIB.GetC.ToBuf
|
||||
bcs .49 Buffer Full
|
||||
|
||||
cpx #'['
|
||||
beq .18
|
||||
|
||||
cpx #64
|
||||
bcs CheckCh.ESCSEQ if CC, not a letter...SEQ is incomplete
|
||||
bcs LIB.GetC.ESCSEQ if CC, not a letter...SEQ is incomplete
|
||||
|
||||
.18 lda #0
|
||||
clc
|
||||
@ -267,25 +502,24 @@ CheckCh ldy #S.PS.hStdIn
|
||||
|
||||
inc A = $01
|
||||
|
||||
jsr CheckCh.SetMode
|
||||
|
||||
lda #0
|
||||
clc
|
||||
rts
|
||||
bra .31
|
||||
*--------------------------------------
|
||||
.30 cpx #IAC
|
||||
bne .38
|
||||
|
||||
dec A = $FF
|
||||
jsr CheckCh.SetMode
|
||||
|
||||
inx X = 0
|
||||
.31 jsr LIB.GetC.SetMode
|
||||
|
||||
.38 txa
|
||||
lda #0
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
.40 jsr CheckCh.ToBuf
|
||||
.38 txa
|
||||
clc
|
||||
.39 rts
|
||||
*--------------------------------------
|
||||
.40 jsr LIB.GetC.ToBuf
|
||||
bcs .49 Buffer Full
|
||||
|
||||
cpy #S.SCRN.InBuf First char...
|
||||
@ -293,21 +527,21 @@ CheckCh ldy #S.PS.hStdIn
|
||||
|
||||
ldy #S.SCRN.InBuf
|
||||
lda (ZPScrnPtr),y
|
||||
cmp #SB
|
||||
bne CheckCh.IACSEQ
|
||||
cmp #SB First char is SB ?
|
||||
bne LIB.GetC.IACSEQ no ...
|
||||
|
||||
cpx #SE
|
||||
cpx #SE is SE after SB ..... ?
|
||||
bne .48
|
||||
|
||||
bra CheckCh.IACSEQ
|
||||
bra LIB.GetC.IACSEQ yes, we have IAC SB .....SE
|
||||
|
||||
.49 jsr CheckCh.Reset
|
||||
.49 jsr LIB.GetC.Reset
|
||||
|
||||
.48 lda #0
|
||||
clc
|
||||
.9 rts
|
||||
rts
|
||||
*--------------------------------------
|
||||
CheckCh.ESCSEQ cmp #S.SCRN.InBuf+2
|
||||
LIB.GetC.ESCSEQ cmp #S.SCRN.InBuf+2
|
||||
bcs .2
|
||||
|
||||
ldy #ESC.Out-ESC.In-1
|
||||
@ -327,17 +561,17 @@ CheckCh.ESCSEQ cmp #S.SCRN.InBuf+2
|
||||
bne .6
|
||||
|
||||
lda #S.SCRN.InBuf+1 skip ESC [
|
||||
jsr GetScrnOfs
|
||||
jsr LIB.GetC.GetScrnOfs
|
||||
>PUSHYA
|
||||
|
||||
>PUSHW L.FMT.ESCCSI.R
|
||||
|
||||
lda #S.OBJ.H
|
||||
jsr GetScrnOfs
|
||||
jsr LIB.GetC.GetScrnOfs
|
||||
>PUSHYA
|
||||
|
||||
lda #S.OBJ.W
|
||||
jsr GetScrnOfs
|
||||
jsr LIB.GetC.GetScrnOfs
|
||||
>PUSHYA
|
||||
|
||||
>PUSHBI 4 2 pointers
|
||||
@ -348,23 +582,73 @@ CheckCh.ESCSEQ cmp #S.SCRN.InBuf+2
|
||||
|
||||
.7 ldx ESC.Out,y
|
||||
|
||||
.8 jsr CheckCh.Reset
|
||||
.8 jsr LIB.GetC.Reset
|
||||
|
||||
txa
|
||||
clc
|
||||
.9 rts
|
||||
rts
|
||||
*--------------------------------------
|
||||
CheckCh.IACSEQ
|
||||
>DEBUG
|
||||
jsr CheckCh.Reset
|
||||
* IAC SB TN.O.NAWS ww ww hh hh IAC SE
|
||||
*--------------------------------------
|
||||
LIB.GetC.IACSEQ ldy #S.SCRN.InBuf
|
||||
lda (ZPScrnPtr),y
|
||||
cmp #SB
|
||||
bne .8
|
||||
|
||||
iny
|
||||
lda (ZPScrnPtr),y
|
||||
cmp #TN.O.NAWS
|
||||
bne .8
|
||||
|
||||
iny
|
||||
lda (ZPScrnPtr),y
|
||||
bne .8
|
||||
|
||||
iny
|
||||
lda (ZPScrnPtr),y
|
||||
cmp #80
|
||||
bcs .1
|
||||
|
||||
lda #80
|
||||
|
||||
.1 tax
|
||||
|
||||
iny
|
||||
lda (ZPScrnPtr),y
|
||||
bne .8
|
||||
|
||||
iny
|
||||
lda (ZPScrnPtr),y
|
||||
cmp #24
|
||||
bcs .2
|
||||
|
||||
lda #24
|
||||
|
||||
.2 ldy #S.OBJ.H
|
||||
|
||||
sta (ZPScrnPtr),y
|
||||
|
||||
dey S.OBJ.W
|
||||
|
||||
txa
|
||||
sta (ZPScrnPtr),y
|
||||
|
||||
>LDYA ZPScrnPtr
|
||||
jsr LIB.SetObjX2Y2
|
||||
|
||||
sec
|
||||
ror bResize
|
||||
|
||||
.8 jsr LIB.GetC.Reset
|
||||
|
||||
lda #0
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CheckCh.Reset lda #0
|
||||
LIB.GetC.Reset lda #0
|
||||
|
||||
CheckCh.SetMode ldy #S.SCRN.bEscMode
|
||||
LIB.GetC.SetMode
|
||||
ldy #S.SCRN.bEscMode
|
||||
sta (ZPScrnPtr),y
|
||||
|
||||
iny Y = S.SCRN.InBufPtr
|
||||
@ -373,7 +657,15 @@ CheckCh.SetMode ldy #S.SCRN.bEscMode
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
CheckCh.ToBuf ldy #S.SCRN.InBufPtr
|
||||
LIB.GetC.GetScrnOfs
|
||||
clc
|
||||
adc ZPScrnPtr
|
||||
tay
|
||||
lda ZPScrnPtr+1
|
||||
adc #0
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
LIB.GetC.ToBuf ldy #S.SCRN.InBufPtr
|
||||
lda (ZPScrnPtr),y
|
||||
|
||||
cmp #S.SCRN.EndBuf buffer full
|
||||
@ -392,39 +684,198 @@ CheckCh.ToBuf ldy #S.SCRN.InBufPtr
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
GetScrn sta hScrn
|
||||
>SYSCALL2 GetMemPtr
|
||||
>STYA ZPScrnPtr
|
||||
LIB.LineBufInit >LDYA LineBuf
|
||||
>STYA ZPLineBufPtr
|
||||
stz ZPLineBufCnt
|
||||
stz ZPLineBufCnt+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
GetScrnOfs clc
|
||||
adc ZPScrnPtr
|
||||
tay
|
||||
lda ZPScrnPtr+1
|
||||
adc #0
|
||||
.9 rts
|
||||
LIB.LineBufSeqOut
|
||||
.1 lda SEQS,x
|
||||
beq .8
|
||||
|
||||
jsr LIB.LineBufCOut
|
||||
inx
|
||||
bra .1
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
LIB.LineBufYAOut
|
||||
ldx #0
|
||||
*--------------------------------------
|
||||
LIB.LineBufYAOutX
|
||||
>STYA ZPPtr1 X = MaxLen
|
||||
|
||||
ldy #$ff
|
||||
|
||||
.1 iny
|
||||
lda (ZPPtr1),y
|
||||
beq .8
|
||||
|
||||
jsr LIB.LineBufCOut
|
||||
dex
|
||||
bne .1
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
LIB.LineBufPrintF
|
||||
>SYSCALL2 SPrintF
|
||||
tya
|
||||
|
||||
clc
|
||||
adc ZPLineBufPtr
|
||||
sta ZPLineBufPtr
|
||||
bcc .1
|
||||
|
||||
inc ZPLineBufPtr+1
|
||||
clc
|
||||
|
||||
.1 tya
|
||||
adc ZPLineBufCnt
|
||||
sta ZPLineBufCnt
|
||||
bcc .8
|
||||
|
||||
inc ZPLineBufCnt+1
|
||||
clc
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
LIB.LineBufHOut pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
jsr .1
|
||||
|
||||
pla
|
||||
and #$0F
|
||||
|
||||
.1 ora #$30
|
||||
cmp #'9'+1
|
||||
bcc LIB.LineBufCOut
|
||||
|
||||
adc #6
|
||||
*--------------------------------------
|
||||
LIB.LineBufCOut sta (ZPLineBufPtr)
|
||||
inc ZPLineBufPtr
|
||||
bne .1
|
||||
|
||||
inc ZPLineBufPtr+1
|
||||
|
||||
.1 inc ZPLineBufCnt
|
||||
bne .8
|
||||
|
||||
inc ZPLineBufCnt+1
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
LIB.LineBufOut ldy #S.PS.hStdOut
|
||||
lda (pPS),y
|
||||
>PUSHA
|
||||
>PUSHW LineBuf
|
||||
>PUSHW ZPLineBufCnt
|
||||
>SYSCALL fwrite
|
||||
rts
|
||||
*--------------------------------------
|
||||
LIB.YAOut dec pStack
|
||||
>PUSHYA
|
||||
ldy #S.PS.hStdOut
|
||||
lda (pPS),y
|
||||
ldy #2
|
||||
sta (pStack),y
|
||||
>SYSCALL fputs
|
||||
rts
|
||||
*--------------------------------------
|
||||
.INB usr/src/lib/libtui.s.obj
|
||||
.INB usr/src/lib/libtui.s.lbox
|
||||
.INB usr/src/lib/libtui.s.scrn
|
||||
.INB usr/src/lib/libtui.s.tbox
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
LibCnt .BS 1
|
||||
hLineBuf .BS 1
|
||||
LineBuf .BS 2
|
||||
*--------------------------------------
|
||||
ESC.In .AS "DBAC"
|
||||
ESC.Out .HS 080A0B15
|
||||
ESC.Out .DA #C.BS,#C.LF,#C.VT,#C.FS
|
||||
*--------------------------------------
|
||||
FMT.ESCCSI.R .AZ "%d;%d"
|
||||
*--------------------------------------
|
||||
SEQ.TERMCAP .DA #C.ESC
|
||||
OBJ.SIZES .DA S.SCRN,S.TBOX,S.LBOX
|
||||
*--------------------------------------
|
||||
OBJ.COLORS .DA #93,#44 SCRN
|
||||
.DA #93,#104 TBOX
|
||||
.DA #93,#104 LBOX
|
||||
*--------------------------------------
|
||||
SEQ.INIT .DA #C.ESC
|
||||
.AS "c" FF
|
||||
.DA #C.ESC
|
||||
.AS "[999;999H" Set Cursor Pos to 999,999
|
||||
.DA #C.ESC
|
||||
.AZ "[6n" then query Cursor Pos
|
||||
SEQ.INIT .AS "\ec\e(B\e)0"
|
||||
SEQ.SCROLLRGN .AZ "\e[?7l\e[2;%dr"
|
||||
SEQ.SCROLLCURUP .AS "\e[?7l\e[%d;%dr"
|
||||
SEQ.SCROLLUP .AZ "\eD"
|
||||
SEQ.SCROLLCURDN .AS "\e[?7l\e[%d;%dr"
|
||||
SEQ.SCROLLDN .AZ "\eM"
|
||||
SEQ.CLOSE .AZ "\ec"
|
||||
.AS "[6n" then query Cursor Pos
|
||||
.DA #C.ESC
|
||||
.AS "(B" font select
|
||||
.DA #C.ESC
|
||||
.AS ")0" font select
|
||||
.DA #C.ESC
|
||||
.AS "[?7l" Disable Line Wrap
|
||||
.DA #C.ESC
|
||||
.AS "[?25l" Hide Cursor
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
SEQ.GOTOXY .AZ "\e[%d;%dH"
|
||||
*--------------------------------------
|
||||
SEQ.COLOR .AZ "\e[%d;%dm"
|
||||
*--------------------------------------
|
||||
SEQS .EQ *
|
||||
*--------------------------------------
|
||||
SEQ.CURON .DA #C.ESC
|
||||
.AS "[?25h" Show Cursor
|
||||
.DA #0
|
||||
SEQ.CUROFF .DA #C.ESC
|
||||
.AS "[?25l" Hide Cursor
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
SEQ.BAR .DA #C.ESC
|
||||
.AS "[1m" BOLD
|
||||
.DA #C.ESC
|
||||
.AS "[7m" INVERSE
|
||||
.DA #C.ESC
|
||||
.AS "[37;40m"
|
||||
.DA #0
|
||||
SEQ.BAREND .DA #C.ESC
|
||||
.AS "[0m"
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
SEQ.BORDERTL .DA #C.SO,#'l'
|
||||
.DA #0
|
||||
SEQ.BORDERTR .DA #C.SO,#'k',#C.SI
|
||||
.DA #0
|
||||
SEQ.BORDERBL .DA #C.SO,#'m'
|
||||
.DA #0
|
||||
SEQ.BORDERBR .DA #C.SO,#'j',#C.SI
|
||||
.DA #0
|
||||
*SEQ.BORDERH .DA #C.SO,#'q',#C.SI
|
||||
* .DA #0
|
||||
SEQ.BORDERV .DA #C.SO,#'x',#C.SI
|
||||
.DA #0
|
||||
SEQ.INVERSE .DA #C.ESC
|
||||
.AS "[7m"
|
||||
.DA #0
|
||||
SEQ.NORMAL .DA #C.ESC
|
||||
.AS "[0m"
|
||||
.DA #0
|
||||
*--------------------------------------
|
||||
*SEQ.SCROLLCURUP .AS "\e[?7l\e[%d;%dr"
|
||||
*SEQ.SCROLLUP .AZ "\eD"
|
||||
*SEQ.SCROLLCURDN .AS "\e[?7l\e[%d;%dr"
|
||||
*SEQ.SCROLLDN .AZ "\eM"
|
||||
*--------------------------------------
|
||||
SEQ.CLOSE .DA #C.ESC
|
||||
.AS "c"
|
||||
.DA #C.ESC
|
||||
.AZ "[?7h" Enable Line Wrap
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE usr/src/lib/libtui.s
|
||||
|
@ -148,7 +148,7 @@ CS.IOCTL lda DevID
|
||||
>PUSHA
|
||||
>PUSHW L.IOCTL
|
||||
>SYSCALL IOCTL
|
||||
rts
|
||||
CS.IOCTL.RTS rts
|
||||
*--------------------------------------
|
||||
* pBuf = DCB.NIC
|
||||
*--------------------------------------
|
||||
@ -166,14 +166,14 @@ CS.INIT.LIB phy
|
||||
|
||||
>SYSCALL LoadLib
|
||||
jsr CS.RUN.CheckErr
|
||||
bcs .9
|
||||
bcs CS.IOCTL.RTS
|
||||
|
||||
ldy LibCnt
|
||||
sta hLIBs,y
|
||||
tay
|
||||
ldx #LIBNET.GETCFG
|
||||
jsr A2osX.LIBCALL
|
||||
bcs .9
|
||||
bcs CS.IOCTL.RTS
|
||||
|
||||
>STYA pNETCFG
|
||||
|
||||
@ -211,11 +211,7 @@ CS.INIT.LIB phy
|
||||
ldy hLIBs,x
|
||||
|
||||
ldx #LIBNET.SETCFG
|
||||
jsr A2osX.LIBCALL
|
||||
|
||||
* clc
|
||||
|
||||
.9 rts
|
||||
jmp A2osX.LIBCALL
|
||||
*--------------------------------------
|
||||
CS.INIT.CONF >PUSHW L.ETCNETWORK
|
||||
>PUSHBI O.RDONLY+O.TEXT
|
||||
|
@ -163,8 +163,11 @@ CORE.UpdPPS tax save RC From INIT or RUN
|
||||
|
||||
>STYA ZPPtr1
|
||||
lda (ZPPtr1) Parent PS is HOLD?
|
||||
bit #S.PS.F.HOLD
|
||||
beq .8 no...
|
||||
|
||||
* bit #S.PS.F.HOLD
|
||||
* beq .8 no...
|
||||
|
||||
bpl .8
|
||||
|
||||
ldy #S.PS.CPID
|
||||
lda (ZPPtr1),y
|
||||
@ -175,6 +178,7 @@ CORE.UpdPPS tax save RC From INIT or RUN
|
||||
txa waiting for this PS to terminate....
|
||||
ldy #S.PS.RC give it RC
|
||||
sta (ZPPtr1),y
|
||||
|
||||
lda (ZPPtr1)
|
||||
eor #S.PS.F.HOLD release Parent PS HOLD...
|
||||
sta (ZPPtr1)
|
||||
|
@ -125,9 +125,7 @@ TERMX.CONTROL lda (ZPDCBPtr) #S.DCB.TTY.DEVID
|
||||
jsr TERMX.SCRCPY
|
||||
|
||||
lda #0
|
||||
ldy #S.DCB.TTY.bCURON
|
||||
sta (ZPDCBPtr),y
|
||||
iny #S.DCB.TTY.bTITLE
|
||||
ldy #S.DCB.TTY.bTITLE
|
||||
sta (ZPDCBPtr),y
|
||||
clc
|
||||
rts
|
||||
@ -159,6 +157,7 @@ TERMX.ISOPENED ldy #S.DCB.TTY.S
|
||||
*--------------------------------------
|
||||
TERMX.READ bit bActive is screen active?
|
||||
bpl .6 no....go check flush...
|
||||
|
||||
jsr TERMX.CBLNK
|
||||
|
||||
bit OPENAPPLE
|
||||
@ -198,6 +197,7 @@ TERMX.READ bit bActive is screen active?
|
||||
bpl .7
|
||||
|
||||
lda #C.LF
|
||||
|
||||
.21 jsr TERMX.COUT no remap....send char....
|
||||
bra .7 and flush
|
||||
|
||||
@ -534,6 +534,10 @@ TERMX.CSI.Exec stz CsiH
|
||||
.DA Csi.CLRL K
|
||||
.DA Csi.Home H
|
||||
*--------------------------------------
|
||||
* CRLF : ESC [ 20
|
||||
* LINEWRAP : ESC [ ? 7
|
||||
* CUR : ESC [ ? 25
|
||||
*--------------------------------------
|
||||
Csi.SetM sec
|
||||
.HS 90 BCC
|
||||
*--------------------------------------
|
||||
@ -545,32 +549,46 @@ Csi.ResetM clc
|
||||
dex
|
||||
bne .99
|
||||
|
||||
ldx CsiH
|
||||
|
||||
lda CsiP
|
||||
ldx CsiH
|
||||
php
|
||||
|
||||
cmp #20 bCRLF
|
||||
bne .1
|
||||
|
||||
txa
|
||||
cmp #20 bCRLF
|
||||
bne .98
|
||||
|
||||
ldy #S.DCB.TTY.bCRLF
|
||||
bra .8
|
||||
|
||||
.1 cmp #7
|
||||
*--------------------------------------
|
||||
.1 cpx #'?'
|
||||
bne .98
|
||||
|
||||
cpx #'?'
|
||||
bne .98
|
||||
cmp #7
|
||||
bne .2
|
||||
|
||||
ldy #S.DCB.TTY.bLINEWRAP
|
||||
bra .8
|
||||
|
||||
.2 cmp #25
|
||||
bne .98
|
||||
|
||||
ldy #S.DCB.TTY.bCURON
|
||||
plp
|
||||
lda #0
|
||||
ror
|
||||
sta (ZPDCBPtr),y
|
||||
bmi .80
|
||||
|
||||
jsr TERMX.CUROFF
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.8 plp
|
||||
ror
|
||||
sta (ZPDCBPtr),y
|
||||
clc
|
||||
|
||||
.80 clc
|
||||
rts
|
||||
|
||||
.98 plp
|
||||
@ -912,11 +930,13 @@ RESET.MODE lda #0
|
||||
rts
|
||||
*--------------------------------------
|
||||
RESET ldy #S.DCB.TTY.M
|
||||
|
||||
.1 lda RESET.VALUES-S.DCB.TTY.M,y
|
||||
sta (ZPDCBPtr),y
|
||||
iny
|
||||
cpy #S.DCB.TTY.INBUF+1
|
||||
bne .1
|
||||
|
||||
jmp TERMX.CLRSCR
|
||||
*--------------------------------------
|
||||
RESETATTR lda #$80
|
||||
@ -933,6 +953,7 @@ ENQ ldx #0
|
||||
inx
|
||||
cpx #ENQ.String.Len
|
||||
bne .1
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -1030,6 +1051,7 @@ SCROLL.UP ldy #S.DCB.TTY.SCROLLTOP
|
||||
ldy #S.DCB.TTY.SCROLLBOT
|
||||
cmp (ZPDCBPtr),y
|
||||
bne .1
|
||||
|
||||
bra CLRLINE
|
||||
*--------------------------------------
|
||||
SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT
|
||||
@ -1050,51 +1072,61 @@ SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
TERMX.CBLNK bit bActive
|
||||
bpl .9
|
||||
TERMX.CBLNK jsr TERMX.CCheck
|
||||
bcs TERMX.RTS
|
||||
|
||||
lda DevMgr.Timer
|
||||
and #CURSOR.BLINK.SPEED
|
||||
ldy #S.DCB.TTY.bCURON
|
||||
eor (ZPDCBPtr),y
|
||||
bne TERMX.CBLNK.1
|
||||
asl
|
||||
beq TERMX.RTS
|
||||
|
||||
.9 rts
|
||||
|
||||
TERMX.CUROFF bit bActive
|
||||
bpl TERMX.RTS
|
||||
ldy #S.DCB.TTY.bCURON
|
||||
lda (ZPDCBPtr),y
|
||||
beq TERMX.RTS
|
||||
|
||||
TERMX.CBLNK.1 lda (ZPDCBPtr),y
|
||||
bne TERMX.CBLNK.OFF
|
||||
eor #CURSOR.BLINK.SPEED
|
||||
sta (ZPDCBPtr),y
|
||||
asl
|
||||
beq TERMX.CUROFF.1
|
||||
|
||||
jsr GetCharAtCurPos
|
||||
bcs TERMX.RTS Out of screen
|
||||
|
||||
and #$80
|
||||
eor #" "
|
||||
jmp SetCharAtY.SCR
|
||||
*--------------------------------------
|
||||
TERMX.CUROFF jsr TERMX.CCheck
|
||||
bcs TERMX.RTS
|
||||
|
||||
TERMX.CBLNK.SET
|
||||
jsr SetCharAtY.SCR
|
||||
ldy #S.DCB.TTY.bCURON
|
||||
lda (ZPDCBPtr),y
|
||||
eor #CURSOR.BLINK.SPEED
|
||||
sta (ZPDCBPtr),y
|
||||
rts
|
||||
asl
|
||||
beq TERMX.RTS already off
|
||||
|
||||
TERMX.CBLNK.OFF
|
||||
jsr GetCharAtCurPos
|
||||
bcc TERMX.CBLNK.SET if not Out of screen
|
||||
TERMX.CUROFF.1 jsr GetCharAtCurPos
|
||||
bcs TERMX.RTS Out of screen
|
||||
|
||||
jmp SetCharAtY.SCR
|
||||
|
||||
TERMX.RTS rts
|
||||
*--------------------------------------
|
||||
TERMX.CCheck sec
|
||||
|
||||
bit bActive
|
||||
bpl .9
|
||||
|
||||
ldy #S.DCB.TTY.bCURON
|
||||
lda (ZPDCBPtr),y
|
||||
bpl .9
|
||||
|
||||
clc
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
DecOut jsr MATH.A2STR10NP
|
||||
|
||||
ldx #0
|
||||
|
||||
.1 lda FOUTBuf,x
|
||||
beq TERMX.RTS
|
||||
|
||||
inx
|
||||
jsr TERMX.COUT
|
||||
bra .1
|
||||
@ -1107,11 +1139,13 @@ TERMX.COUT pha save char
|
||||
inc
|
||||
cmp #S.DCB.TTY.OUTBUF.MAX
|
||||
bne .1
|
||||
|
||||
lda #S.DCB.TTY.OUTBUF
|
||||
|
||||
.1 dey OUTTAIL
|
||||
cmp (ZPDCBPtr),y HEAD+1 = TAIL ?
|
||||
beq .9 CS, full!
|
||||
|
||||
iny
|
||||
sta (ZPDCBPtr),y new head
|
||||
ply old head
|
||||
@ -1119,6 +1153,7 @@ TERMX.COUT pha save char
|
||||
sta (ZPDCBPtr),y
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 pla
|
||||
pla
|
||||
rts
|
||||
@ -1128,6 +1163,7 @@ Char.Out.Get ldy #S.DCB.TTY.OUTTAIL
|
||||
iny OUTHEAD
|
||||
cmp (ZPDCBPtr),y
|
||||
beq .9 CS
|
||||
|
||||
tay
|
||||
lda (ZPDCBPtr),y
|
||||
pha
|
||||
@ -1135,6 +1171,7 @@ Char.Out.Get ldy #S.DCB.TTY.OUTTAIL
|
||||
inc
|
||||
cmp #S.DCB.TTY.OUTBUF.MAX
|
||||
bne .1
|
||||
|
||||
lda #S.DCB.TTY.OUTBUF
|
||||
|
||||
.1 ldy #S.DCB.TTY.OUTTAIL
|
||||
@ -1182,6 +1219,7 @@ TERMX.CLRSCR.2 sty .1+1
|
||||
|
||||
.1 cpx #$ff SELF MODIFIED
|
||||
beq .9
|
||||
|
||||
jsr TERMX.SETUP.L1X
|
||||
lda #" "
|
||||
|
||||
@ -1204,9 +1242,11 @@ TERMX.CLRSCR.2 sty .1+1
|
||||
bra .1
|
||||
|
||||
.7 ldy #39
|
||||
|
||||
.8 sta (ZPScrBL1),y
|
||||
dey
|
||||
bpl .8
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
TERMX.Title.ON ldy #S.DCB.TTY.bTITLE
|
||||
@ -1228,8 +1268,10 @@ TERMX.Title.ON ldy #S.DCB.TTY.bTITLE
|
||||
|
||||
cmp #$40
|
||||
bcc .2
|
||||
|
||||
cmp #$60
|
||||
bcs .2
|
||||
|
||||
and #$1F remap UPPERCASE
|
||||
|
||||
.2 phy
|
||||
@ -1480,7 +1522,7 @@ RESET.VALUES .DA #0 MODE
|
||||
.DA #0 CV.SAVE
|
||||
.DA #0 SCROLLTOP
|
||||
.DA #23 SCROLLBOT
|
||||
.DA #0 bCURON
|
||||
.DA #$80 bCURON
|
||||
.DA #0 bTITLE
|
||||
|
||||
.DA #$80 bNORMAL
|
||||
@ -1501,10 +1543,10 @@ TERMX.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
|
||||
.DA #0
|
||||
.DA K.VER
|
||||
*--------------------------------------
|
||||
* ` a b c d e f g h i j k l m n o
|
||||
REMAP.E0.FF .HS 5B4142434445464748495FA0DF544e4f
|
||||
* p q r s t u v w x y z { | } ~ DEL
|
||||
.HS 50DF5253545556575F595a5b5c5d5e5f
|
||||
* ` a b c d e f g h i j k l m n o
|
||||
REMAP.E0.FF .HS 5B.41.42.43.44.45.46.47.48.49.20.5e.5a.5a.4e.4f
|
||||
* p q r s t u v w x y z { | } ~ DEL
|
||||
.HS 50.5c.52.53.54.55.56.57.5a.59.5a.5b.5c.5d.5e.5f
|
||||
*--------------------------------------
|
||||
SCR.BL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0
|
||||
SCR.BH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07
|
||||
|
@ -13,6 +13,7 @@ NEW
|
||||
*--------------------------------------
|
||||
TmpPtr1 .EQ $0
|
||||
TmpPtr2 .EQ $2
|
||||
Type .EQ $4
|
||||
*--------------------------------------
|
||||
RW.SAVEZP0 .EQ $800
|
||||
RW.SAVEZP1 .EQ $900
|
||||
@ -21,18 +22,24 @@ RW.BLOCK .EQ $A00
|
||||
*--------------------------------------
|
||||
* A2OSX.SYSTEM relocated at $1000 !!!
|
||||
*--------------------------------------
|
||||
SEBankSelect .EQ $C071
|
||||
RWBankSelect .EQ $C073
|
||||
*--------------------------------------
|
||||
RW.Init >LDYAI RW.MSG
|
||||
jsr PrintFYA
|
||||
jsr RW.Detect1
|
||||
jsr RW.DetectRAM3
|
||||
bcs .10
|
||||
|
||||
>LDYAI RW.MSG.OK
|
||||
jsr PrintFYA
|
||||
rts
|
||||
|
||||
.10 jsr RW.Detect2
|
||||
.10 lda #RWBankSelect
|
||||
jsr RW.DetectHW
|
||||
bcc .1
|
||||
|
||||
lda #SEBankSelect
|
||||
jsr RW.DetectHW
|
||||
bcc .1
|
||||
|
||||
>LDYAI RW.MSG.KO1
|
||||
@ -88,7 +95,7 @@ RW.Init >LDYAI RW.MSG
|
||||
.9 jsr PrintFYA
|
||||
rts
|
||||
*--------------------------------------
|
||||
RW.Detect1 jsr MLI
|
||||
RW.DetectRAM3 jsr MLI
|
||||
.DA #MLIONLINE
|
||||
.DA RW.ONLINE
|
||||
rts
|
||||
@ -98,8 +105,13 @@ RW.ONLINE .DA #2
|
||||
.DA RW.ONLINEBUFFER
|
||||
RW.ONLINEBUFFER .BS 16
|
||||
*--------------------------------------
|
||||
RW.Detect2 php
|
||||
RW.DetectHW php
|
||||
sei
|
||||
sta Type
|
||||
sta .1+1
|
||||
sta .2+1
|
||||
sta .3+1
|
||||
sta .6+1
|
||||
|
||||
sta SETALTZP
|
||||
|
||||
@ -199,7 +211,12 @@ RW.Install lda RRAMWRAMBNK1
|
||||
ror
|
||||
sta RWDRV.MAXLO+1
|
||||
|
||||
lda Type
|
||||
sta RWDRV.IO1+1
|
||||
sta RWDRV.EXIT+1
|
||||
|
||||
lda RROMBNK1
|
||||
|
||||
sta SETWRITEAUX
|
||||
|
||||
ldx #RWDRVX.SIZE
|
||||
@ -209,6 +226,11 @@ RW.Install lda RRAMWRAMBNK1
|
||||
dex
|
||||
bne .2
|
||||
|
||||
lda Type
|
||||
sta RWDRVX.XM.IO1+1
|
||||
sta RWDRVX.XM.IO2+1
|
||||
sta RWDRVX.XM.IO3+1
|
||||
|
||||
sta CLRWRITEAUX
|
||||
inc DEVCNT
|
||||
ldx DEVCNT
|
||||
@ -391,7 +413,7 @@ RW.BLOCK2.END .EQ *
|
||||
*--------------------------------------
|
||||
.INB usr/src/shared/x.printf.s
|
||||
*--------------------------------------
|
||||
RW.MSG .AZ "RAMWorks (I,II,III,z-Ram) Driver For A2osX\n"
|
||||
RW.MSG .AZ "SuperExpander E, RAMWorks (I,II,III,z-Ram) Driver For A2osX\n"
|
||||
RW.MSG.OK .AZ "/RAM3 Device Already Installed.\n"
|
||||
RW.MSG.OK1 .AZ "%D KB Detected (%d Pages), %D KB (%d Pages) Available for RamDrive.\n"
|
||||
RW.MSG.KO1 .AZ "Not Detected.\n"
|
||||
@ -451,7 +473,7 @@ RWDRV.START ldy DRV.COMMAND 0 = Status ?
|
||||
*--------------------------------------
|
||||
* X=Page($02 -> $BF),A=Bank,Y=CMD
|
||||
*--------------------------------------
|
||||
sta RWBankSelect Select RAMWorks Bank
|
||||
RWDRV.IO1 sta RWBankSelect Select RAMWorks Bank
|
||||
|
||||
inx second 256 bytes first
|
||||
stx DRV.A2H Use DRV.A1L/H for RAM PTR
|
||||
@ -616,7 +638,7 @@ RWDRVX.XM.COPY sta CLRALTZP
|
||||
|
||||
jsr RWDRV.XM.RUN+RWDRVX.XM.SRCLC-RWDRVX.XM.START
|
||||
sta $C000,x select proper Main/Aux ZP/LC
|
||||
sta RWBankSelect
|
||||
RWDRVX.XM.IO1 sta RWBankSelect
|
||||
|
||||
ldx #0
|
||||
|
||||
@ -629,7 +651,7 @@ RWDRVX.XM.SRC lda $FFFF,x
|
||||
|
||||
jsr RWDRV.XM.RUN+RWDRVX.XM.DSTLC-RWDRVX.XM.START
|
||||
sta $C000,x select proper Main/Aux ZP/LC
|
||||
sta RWBankSelect
|
||||
RWDRVX.XM.IO2 sta RWBankSelect
|
||||
|
||||
ldx #0
|
||||
|
||||
@ -644,7 +666,7 @@ RWDRVX.XM.DST sta $FFFF,x
|
||||
bne RWDRVX.XM.COPY
|
||||
|
||||
sta CLRALTZP
|
||||
stz RWBankSelect
|
||||
RWDRVX.XM.IO3 stz RWBankSelect
|
||||
*--------------------------------------
|
||||
RWDRVX.XM.MNLC bit RRAMWRAMBNK1 ProDOS always uses LCBANK1
|
||||
|
||||
|
@ -195,6 +195,7 @@ VSDRIVE.Ping lda TmpPtr1+1 A=SlotCN
|
||||
tya
|
||||
|
||||
.9 stz SSC.RESET-$8F,x
|
||||
stz SSC.CMD-$8F,x Applewin Bug ???
|
||||
plp
|
||||
sec
|
||||
rts
|
||||
|
Loading…
x
Reference in New Issue
Block a user