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:
burniouf 2021-09-07 14:32:31 +02:00
parent 5d6d37223a
commit c693892ce0
25 changed files with 3556 additions and 1662 deletions

Binary file not shown.

Binary file not shown.

View File

@ -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
@ -375,14 +406,7 @@ EXP.OP.SUB ldx #0 ARG-ACC->ACC
inx
dey
bne .1
bcs .8
lda #E.VAL.TOO.BIG
sec
rts
.8 clc
rts
*---------------------------------------
EXP.OP.MUL >PUSHL SRC.ARG

View File

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

View File

@ -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
lda ZPFileName+1
bne CS.RUN.ESYN2
inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
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

View File

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

View File

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

View File

@ -12,9 +12,10 @@ NEW
.DUMMY
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2
hScreen .BS 1
hListBox .BS 1
ZPPtr1 .BS 2
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,92 +37,194 @@ 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
>PUSHB hSCRN
>PUSHBI S.OBJ.pSTATUS
>PUSHW L.SCRN.Status
>LIBCALL hLIBTUI,LIBTUI.SetProp
>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
>PUSHBI 6
>SYSCALL printf
lda hTBOX1
>LIBCALL hLIBTUI,LIBTUI.Activate
*--------------------------------------
CS.RUN.LOOP >SLEEP
lda hSCRN
>LIBCALL hLIBTUI,LIBTUI.GetEvent
bcs .9
tay
beq CS.RUN.LOOP
>PUSHB hScreen
>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
.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
View 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
View 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

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

@ -218,7 +218,7 @@ INCOMING sta hFrameIn
dey
dex
bpl .1
ldy #S.ETH.EII.TYPE
lda (ZPFrameInPtr),y
cmp /S.ETH.EII.TYPE.IP

129
LIB/LIBTUI.S.LBOX.txt Normal file
View 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
View 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
View 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
View 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

File diff suppressed because it is too large Load Diff

View File

@ -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
@ -183,7 +183,7 @@ CS.INIT.LIB phy
ldy #S.DCB.NIC.FLAGS
lda (pBuf),y
ldy #S.NETCFG.DevFlags
sta (pNETCFG),y
@ -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

View File

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

View File

@ -123,11 +123,9 @@ TERMX.CONTROL lda (ZPDCBPtr) #S.DCB.TTY.DEVID
sta CLRMIXED
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.CUROFF.1 jsr GetCharAtCurPos
bcs TERMX.RTS Out of screen
TERMX.CBLNK.OFF
jsr GetCharAtCurPos
bcc TERMX.CBLNK.SET if not 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

View File

@ -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,9 +105,14 @@ 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
ldx #0 start detection at page $00
@ -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

View File

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