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 bpl .1
rts rts
*--------------------------------------- *---------------------------------------
EXP.OP.LOW jsr EXP.OP.SUB EXP.OP.EQU ldx #0 ARG-ACC->ACC
lda #0
rol
jmp EXP.SetAccA
*---------------------------------------
EXP.OP.EQU ldx #0 ARG-ACC->ACC
ldy #4 ldy #4
clc if not Equals, return 0 clc if not Equals, return 0
.1 lda SRC.ARG,x .1 lda SRC.ARG,x
eor SRC.ACC,x eor SRC.ACC,x
@ -334,20 +328,47 @@ EXP.OP.EQU ldx #0 ARG-ACC->ACC
dey dey
bne .1 bne .1
sec equals, return 1 sec equals, return 1
.2 lda #0 .2 lda #0
rol rol
jmp EXP.SetAccA 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 rol
eor #1
jmp EXP.SetAccA 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 ldy #4
clc clc
@ -364,7 +385,17 @@ EXP.OP.ADD ldx #0 ARG-ACC->ACC
lda #E.VAL.TOO.BIG lda #E.VAL.TOO.BIG
.8 rts .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 ldy #4
sec sec
@ -375,14 +406,7 @@ EXP.OP.SUB ldx #0 ARG-ACC->ACC
inx inx
dey dey
bne .1 bne .1
bcs .8
lda #E.VAL.TOO.BIG
sec
rts
.8 clc
rts rts
*--------------------------------------- *---------------------------------------
EXP.OP.MUL >PUSHL SRC.ARG 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.ORA .DA EXP.OP.ORA
.DA EXP.OP.AND .DA EXP.OP.AND
.DA EXP.OP.LOW .DA EXP.OP.LWR
.DA EXP.OP.EQU .DA EXP.OP.EQU
.DA EXP.OP.GRT .DA EXP.OP.GRT
.DA EXP.OP.ADD .DA EXP.OP.ADD

View File

@ -29,7 +29,6 @@ ZPReqBufPtr .BS 2
ZPReqBufLen .BS 2 ZPReqBufLen .BS 2
bHeader .BS 1 bHeader .BS 1
TimeOut .BS 1 TimeOut .BS 1
bURI .BS 1
hEncodedBuf .BS 1 hEncodedBuf .BS 1
ZPEncodedBufPtr .BS 2 ZPEncodedBufPtr .BS 2
@ -174,8 +173,8 @@ CS.RUN.HOSTOK jsr CS.RUN.GETNEXTARG
.11 cmp #'U' .11 cmp #'U'
bne .2 bne .2
bit bURI lda ZPReqBufPtr+1
bmi CS.RUN.ESYN bne CS.RUN.ESYN
jsr CS.RUN.GETNEXTARG jsr CS.RUN.GETNEXTARG
@ -184,15 +183,13 @@ CS.RUN.HOSTOK jsr CS.RUN.GETNEXTARG
>STYA ZPReqBufPtr >STYA ZPReqBufPtr
>SYSCALL StrLen >SYSCALL StrLen
>STYA ZPReqBufLen >STYA ZPReqBufLen
sec
ror bURI
bra CS.RUN.HOSTOK bra CS.RUN.HOSTOK
.2 cmp #'F' .2 cmp #'F'
bne .3 bne .3
bit bURI lda ZPReqBufPtr+1
bmi CS.RUN.ESYN bne CS.RUN.ESYN
jsr CS.RUN.GETNEXTARG jsr CS.RUN.GETNEXTARG
bcs .9 bcs .9
@ -205,28 +202,28 @@ CS.RUN.HOSTOK jsr CS.RUN.GETNEXTARG
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPReqBufPtr >STYA ZPReqBufPtr
sec
ror bURI
jmp CS.RUN.HOSTOK jmp CS.RUN.HOSTOK
.3 cmp #'O' .3 cmp #'O'
bne .9 bne .9
lda ZPFileName+1
bne CS.RUN.ESYN2
inc ArgIndex jsr CS.RUN.GETNEXTARG
lda ArgIndex
>SYSCALL ArgV
bcs .9 bcs .9
>STYA ZPFileName >STYA ZPFileName
jmp CS.RUN.HOSTOK jmp CS.RUN.HOSTOK
*-------------------------------------- *--------------------------------------
CS.RUN.GETNEXTARG CS.RUN.ESYN2 lda #E.SYN
inc ArgIndex sec
lda ArgIndex
>SYSCALL ArgV
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.ARGSOK >PUSHW L.MSG.CONNECT CS.RUN.ARGSOK lda ZPReqBufPtr+1
beq CS.RUN.ESYN2
>PUSHW L.MSG.CONNECT
ldx #0 ldx #0
.1 >PUSHB SA.REMOTE+S.SOCKADDR.ADDR,x .1 >PUSHB SA.REMOTE+S.SOCKADDR.ADDR,x
@ -325,7 +322,11 @@ CS.RUN.GET jsr CS.RUN.ENCODE
*-------------------------------------- *--------------------------------------
CS.RUN.SKTERR pha CS.RUN.SKTERR pha
>PUSHW L.MSG.SKTERR >PUSHW L.MSG.SKTERR
pla bra CS.RUN.ERR
*--------------------------------------
CS.RUN.IOERR pha
>PUSHW L.MSG.IOERR
CS.RUN.ERR pla
pha pha
>PUSHA >PUSHA
>PUSHBI 1 >PUSHBI 1
@ -334,15 +335,10 @@ CS.RUN.SKTERR pha
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.IOERR pha CS.RUN.GETNEXTARG
>PUSHW L.MSG.IOERR inc ArgIndex
pla lda ArgIndex
pha >SYSCALL ArgV
>PUSHA
>PUSHBI 1
>SYSCALL PrintF
pla
sec
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.ENCODE >LDYA ZPReqBufPtr 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 CS.END
MSG0 .DA #C.ESC 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" MSG1 .AZ "%3d %3d %3d %3d %3d\% %6s %s %3d"
MSG2 .AS " %s" MSG2 .AS " %s"
MSG3 .DA #0 MSG3 .DA #0

View File

@ -12,9 +12,10 @@ NEW
.DUMMY .DUMMY
.OR ZPBIN .OR ZPBIN
ZS.START ZS.START
ZPPtr1 .BS 2 ZPPtr1 .BS 2
hScreen .BS 1 hSCRN .BS 1
hListBox .BS 1 hTBOX1 .BS 1
hLBOX1 .BS 1
ZS.END .ED ZS.END .ED
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -27,7 +28,7 @@ CS.START cld
.DA #0 .DA #0
.DA CS.END-CS.START Code Size (without Constants) .DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data Segment Size .DA DS.END-DS.START Data Segment Size
.DA #32 Stack Size .DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size .DA #ZS.END-ZS.START Zero Page Size
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
@ -36,92 +37,194 @@ CS.START cld
.DA CS.DOEVENT .DA CS.DOEVENT
.DA CS.QUIT .DA CS.QUIT
L.LIBTUI .DA LIBTUI 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.LBOX1 .DA LBOX1
L.MSG.Screen .DA MSG.Screen L.LBOX1.L .DA LBOX1.L
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT >LDYA L.LIBTUI CS.INIT >LDYA L.LIBTUI
>SYSCALL LoadLib >SYSCALL LoadLib
bcs .9 bcs CS.INIT.RTS
sta hLIBTUI sta hLIBTUI
.9 clc * clc
rts
CS.INIT.RTS rts
*-------------------------------------- *--------------------------------------
CS.RUN >LIBCALL hLIBTUI,LIBTUI.Open CS.RUN lda #S.OBJ.F.bTITLE+S.OBJ.F.bSTATUS
bcs .9 >LIBCALL hLIBTUI,LIBTUI.Init
bcs CS.INIT.RTS
sta hScreen sta hSCRN
>SYSCALL GetMemPtr
>STYA ZPPtr1
>PUSHW L.MSG.Screen
ldy #S.OBJ.X1
.1 lda (ZPPtr1),y
>PUSHA >PUSHA
iny >PUSHBI S.OBJ.pTITLE
cpy #S.OBJ.Y2+1 >PUSHEA.G SCRN.Buf
bne .1 >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 lda hTBOX1
>SYSCALL printf >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 >PUSHW L.LBOX1
>LIBCALL hLIBTUI,LIBTUI.LBOXNew >LIBCALL hLIBTUI,LIBTUI.New
bcs .9 bcs .9
sta hListBox sta hLBOX1
.2 >SYSCALL GetChar >PUSHA
bcs .9 >PUSHBI S.LBOX.pL
>PUSHW L.LBOX1.L
cmp #3 >LIBCALL hLIBTUI,LIBTUI.SetProp
beq .9
>SYSCALL putchar
bcc .2
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CS.DOEVENT sec do not discard TIMER event CS.DOEVENT sec do not discard TIMER event
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT lda hScreen CS.QUIT lda hLIBTUI
beq .1
>LIBCALL hLIBTUI,LIBTUI.Close
.1 lda hLIBTUI
beq .8 beq .8
>SYSCALL UnloadLib >SYSCALL UnloadLib
.8 clc .8 clc
rts 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 CS.END
*-------------------------------------- *--------------------------------------
LIBTUI .AZ "libtui" LIBTUI .AZ "libtui"
hLIBTUI .BS 1 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 LBOX1 .DA #S.OBJ.T.LBOX T
.BS 3 .DA #S.OBJ.F.bHBorder+S.OBJ.F.bVBorder
.DA #10 X1 .BS 2
.DA #50 X1
.DA #4 Y1 .DA #4 Y1
.DA #20 W .DA #20 W
.DA #10 H .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 .DUMMY
.OR 0 .OR 0
DS.START DS.START
SCRN.Buf .BS 80
DS.END .ED DS.END .ED
*-------------------------------------- *--------------------------------------
MAN 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.ZCALL .EQ $0000
*-------------------------------------- *--------------------------------------
* A2osX GLOBAL PAGE * A2osX GLOBAL PAGE
* $BC00->$BC0F : Public Vetors * $BC00->$BC0F : Public Vectors
*-------------------------------------- *--------------------------------------
A2osX.SYSCALL .EQ $BC00 A2osX.SYSCALL .EQ $BC00
A2osX.LIBCALL .EQ $BC03 A2osX.LIBCALL .EQ $BC03

View File

@ -1,38 +1,57 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
LIBTUI.Open .EQ 4 LIBTUI.Init .EQ 4
LIBTUI.Close .EQ 6 LIBTUI.GetEvent .EQ 6
LIBTUI.LBOXNew .EQ 8 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 .EQ 0
S.OBJ.T.SCRN .EQ 0 S.OBJ.T.SCRN .EQ 0
S.OBJ.T.LBOX .EQ 2 S.OBJ.T.TBOX .EQ 2
S.OBJ.P .EQ 1 S.OBJ.T.LBOX .EQ 4
S.OBJ.F .EQ 2 S.OBJ.F .EQ 1
S.OBJ.F.bTITLE .EQ %10000000 S.OBJ.F.bTITLE .EQ %10000000
S.OBJ.F.bMENU .EQ %01000000 S.OBJ.F.bMENU .EQ %01000000
S.OBJ.F.bSTATUS .EQ %00100000 S.OBJ.F.bSTATUS .EQ %00100000
S.OBJ.F.bHBorder .EQ %00010000 S.OBJ.F.bHBorder .EQ %00010000
S.OBJ.F.bVBorder .EQ %00001000 S.OBJ.F.bVBorder .EQ %00001000
S.OBJ.F.bHScroll .EQ %00000100
S.OBJ.F.bVScroll .EQ %00000010
S.OBJ.F.bCursor .EQ %00000001
S.OBJ.P .EQ 2
S.OBJ.S .EQ 3 S.OBJ.S .EQ 3
S.OBJ.S.bVISIBLE .EQ %10000000 S.OBJ.S.bACTIVE .EQ %10000000
S.OBJ.S.bACTIVE .EQ %01000000 S.OBJ.S.bVISIBLE .EQ %01000000
S.OBJ.X1 .EQ 4 S.OBJ.X1 .EQ 4
S.OBJ.Y1 .EQ 5 S.OBJ.Y1 .EQ 5
S.OBJ.W .EQ 6 S.OBJ.W .EQ 6
S.OBJ.H .EQ 7 S.OBJ.H .EQ 7
*--------------------------------------
S.OBJ.X2 .EQ 8 S.OBJ.X2 .EQ 8
S.OBJ.Y2 .EQ 9 S.OBJ.Y2 .EQ 9
S.OBJ.pTITLE .EQ 10 S.OBJ.InnerX .EQ 10
S.OBJ.pMENU .EQ 12 S.OBJ.InnerY .EQ 11
S.OBJ.pSTATUS .EQ 14 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.pTITLE .EQ 16
S.OBJ.InnerW .EQ 18 S.OBJ.pMENU .EQ 18
S.OBJ.InnerH .EQ 19 S.OBJ.pSTATUS .EQ 20
S.OBJ.fRESIZE .EQ 22
* *
*
*--------------------------------------
S.OBJ.Childs .EQ 32 S.OBJ.Childs .EQ 32
* *
S.OBJ .EQ 48 S.OBJ .EQ 48
@ -44,11 +63,23 @@ S.SCRN.EndBuf .EQ S.OBJ+15
* *
S.SCRN .EQ S.OBJ+16 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.pL .EQ S.OBJ+0
S.LBOX.Idx .EQ S.OBJ+2 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 S.LBOX .EQ S.OBJ+16
*-------------------------------------- *--------------------------------------
EV.RESIZE .EQ $80
*--------------------------------------
MAN MAN
SAVE inc/libtui.i SAVE inc/libtui.i

View File

@ -1,6 +1,10 @@
NEW NEW
AUTO 3,1 AUTO 3,1
*-------------------------------------- *--------------------------------------
CFG.GET >LDYA L.IPCFG
clc
CFG.GET.RTS rts
*--------------------------------------
CFG.SET >PULLW ZPTmpPtr1 IPCFG CFG.SET >PULLW ZPTmpPtr1 IPCFG
ldy #S.IPCFG-1 ldy #S.IPCFG-1
@ -10,29 +14,6 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
dey dey
bpl .1 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 >LDYA L.DCB.NIC
>STYA IOCTL+S.IOCTL.BUFPTR >STYA IOCTL+S.IOCTL.BUFPTR
@ -40,43 +21,72 @@ CFG.SET >PULLW ZPTmpPtr1 IPCFG
sta IOCTL+S.IOCTL.S sta IOCTL+S.IOCTL.S
ldx #IOCTL.STATUS ldx #IOCTL.STATUS
jsr CFG.SET.IOCTL jsr CFG.IOCTL
bcs .9 bcs CFG.GET.RTS
ldx #11 IP/MASK/GW 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 sta DCB.NIC+S.DCB.NIC.IP,x
dex dex
bpl .4 bpl .3
lda #S.IOCTL.C.SETDCB .6 lda #S.IOCTL.C.SETDCB
sta IOCTL+S.IOCTL.C sta IOCTL+S.IOCTL.C
ldx #IOCTL.CONTROL ldx #IOCTL.CONTROL NIC driver may wants IP config....
jsr CFG.SET.IOCTL jsr CFG.IOCTL
bcs .9 * 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 stz SA.LOCAL+S.SOCKADDR.PORT+1
>PUSHB hDNSSocket >PUSHB hDNSSocket
>PUSHW L.SA.LOCAL >PUSHW L.SA.LOCAL
jmp SKT.Bind jmp SKT.Bind
.9 rts
*-------------------------------------- *--------------------------------------
CFG.SET.IOCTL >PUSHB IPCFG+S.NETCFG.DevID CFG.IOCTL >PUSHB IPCFG+S.NETCFG.DevID
txa txa
>PUSHA >PUSHA
>PUSHW L.IOCTL >PUSHW L.IOCTL
>SYSCALL2 IOCTL >SYSCALL2 IOCTL
rts rts
*-------------------------------------- *--------------------------------------
CFG.GET >LDYA L.IPCFG
clc
rts
*--------------------------------------
MAN MAN
SAVE usr/src/lib/libtcpip.s.cfg SAVE usr/src/lib/libtcpip.s.cfg
LOAD usr/src/lib/libtcpip.s LOAD usr/src/lib/libtcpip.s

View File

@ -218,7 +218,7 @@ INCOMING sta hFrameIn
dey dey
dex dex
bpl .1 bpl .1
ldy #S.ETH.EII.TYPE ldy #S.ETH.EII.TYPE
lda (ZPFrameInPtr),y lda (ZPFrameInPtr),y
cmp /S.ETH.EII.TYPE.IP 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 >PUSHA
>PUSHW L.IOCTL >PUSHW L.IOCTL
>SYSCALL IOCTL >SYSCALL IOCTL
rts CS.IOCTL.RTS rts
*-------------------------------------- *--------------------------------------
* pBuf = DCB.NIC * pBuf = DCB.NIC
*-------------------------------------- *--------------------------------------
@ -166,14 +166,14 @@ CS.INIT.LIB phy
>SYSCALL LoadLib >SYSCALL LoadLib
jsr CS.RUN.CheckErr jsr CS.RUN.CheckErr
bcs .9 bcs CS.IOCTL.RTS
ldy LibCnt ldy LibCnt
sta hLIBs,y sta hLIBs,y
tay tay
ldx #LIBNET.GETCFG ldx #LIBNET.GETCFG
jsr A2osX.LIBCALL jsr A2osX.LIBCALL
bcs .9 bcs CS.IOCTL.RTS
>STYA pNETCFG >STYA pNETCFG
@ -183,7 +183,7 @@ CS.INIT.LIB phy
ldy #S.DCB.NIC.FLAGS ldy #S.DCB.NIC.FLAGS
lda (pBuf),y lda (pBuf),y
ldy #S.NETCFG.DevFlags ldy #S.NETCFG.DevFlags
sta (pNETCFG),y sta (pNETCFG),y
@ -211,11 +211,7 @@ CS.INIT.LIB phy
ldy hLIBs,x ldy hLIBs,x
ldx #LIBNET.SETCFG ldx #LIBNET.SETCFG
jsr A2osX.LIBCALL jmp A2osX.LIBCALL
* clc
.9 rts
*-------------------------------------- *--------------------------------------
CS.INIT.CONF >PUSHW L.ETCNETWORK CS.INIT.CONF >PUSHW L.ETCNETWORK
>PUSHBI O.RDONLY+O.TEXT >PUSHBI O.RDONLY+O.TEXT

View File

@ -163,8 +163,11 @@ CORE.UpdPPS tax save RC From INIT or RUN
>STYA ZPPtr1 >STYA ZPPtr1
lda (ZPPtr1) Parent PS is HOLD? 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 ldy #S.PS.CPID
lda (ZPPtr1),y lda (ZPPtr1),y
@ -175,6 +178,7 @@ CORE.UpdPPS tax save RC From INIT or RUN
txa waiting for this PS to terminate.... txa waiting for this PS to terminate....
ldy #S.PS.RC give it RC ldy #S.PS.RC give it RC
sta (ZPPtr1),y sta (ZPPtr1),y
lda (ZPPtr1) lda (ZPPtr1)
eor #S.PS.F.HOLD release Parent PS HOLD... eor #S.PS.F.HOLD release Parent PS HOLD...
sta (ZPPtr1) sta (ZPPtr1)

View File

@ -123,11 +123,9 @@ TERMX.CONTROL lda (ZPDCBPtr) #S.DCB.TTY.DEVID
sta CLRMIXED sta CLRMIXED
jsr TERMX.SCRCPY jsr TERMX.SCRCPY
lda #0 lda #0
ldy #S.DCB.TTY.bCURON ldy #S.DCB.TTY.bTITLE
sta (ZPDCBPtr),y
iny #S.DCB.TTY.bTITLE
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
clc clc
rts rts
@ -159,6 +157,7 @@ TERMX.ISOPENED ldy #S.DCB.TTY.S
*-------------------------------------- *--------------------------------------
TERMX.READ bit bActive is screen active? TERMX.READ bit bActive is screen active?
bpl .6 no....go check flush... bpl .6 no....go check flush...
jsr TERMX.CBLNK jsr TERMX.CBLNK
bit OPENAPPLE bit OPENAPPLE
@ -198,6 +197,7 @@ TERMX.READ bit bActive is screen active?
bpl .7 bpl .7
lda #C.LF lda #C.LF
.21 jsr TERMX.COUT no remap....send char.... .21 jsr TERMX.COUT no remap....send char....
bra .7 and flush bra .7 and flush
@ -534,6 +534,10 @@ TERMX.CSI.Exec stz CsiH
.DA Csi.CLRL K .DA Csi.CLRL K
.DA Csi.Home H .DA Csi.Home H
*-------------------------------------- *--------------------------------------
* CRLF : ESC [ 20
* LINEWRAP : ESC [ ? 7
* CUR : ESC [ ? 25
*--------------------------------------
Csi.SetM sec Csi.SetM sec
.HS 90 BCC .HS 90 BCC
*-------------------------------------- *--------------------------------------
@ -545,32 +549,46 @@ Csi.ResetM clc
dex dex
bne .99 bne .99
ldx CsiH
lda CsiP lda CsiP
ldx CsiH
php php
cmp #20 bCRLF
bne .1 bne .1
txa cmp #20 bCRLF
bne .98 bne .98
ldy #S.DCB.TTY.bCRLF ldy #S.DCB.TTY.bCRLF
bra .8 bra .8
*--------------------------------------
.1 cmp #7 .1 cpx #'?'
bne .98 bne .98
cpx #'?' cmp #7
bne .98 bne .2
ldy #S.DCB.TTY.bLINEWRAP 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 .8 plp
ror ror
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
clc
.80 clc
rts rts
.98 plp .98 plp
@ -912,11 +930,13 @@ RESET.MODE lda #0
rts rts
*-------------------------------------- *--------------------------------------
RESET ldy #S.DCB.TTY.M RESET ldy #S.DCB.TTY.M
.1 lda RESET.VALUES-S.DCB.TTY.M,y .1 lda RESET.VALUES-S.DCB.TTY.M,y
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
iny iny
cpy #S.DCB.TTY.INBUF+1 cpy #S.DCB.TTY.INBUF+1
bne .1 bne .1
jmp TERMX.CLRSCR jmp TERMX.CLRSCR
*-------------------------------------- *--------------------------------------
RESETATTR lda #$80 RESETATTR lda #$80
@ -933,6 +953,7 @@ ENQ ldx #0
inx inx
cpx #ENQ.String.Len cpx #ENQ.String.Len
bne .1 bne .1
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
@ -1030,6 +1051,7 @@ SCROLL.UP ldy #S.DCB.TTY.SCROLLTOP
ldy #S.DCB.TTY.SCROLLBOT ldy #S.DCB.TTY.SCROLLBOT
cmp (ZPDCBPtr),y cmp (ZPDCBPtr),y
bne .1 bne .1
bra CLRLINE bra CLRLINE
*-------------------------------------- *--------------------------------------
SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT
@ -1050,51 +1072,61 @@ SCROLL.DN ldy #S.DCB.TTY.SCROLLBOT
clc clc
rts rts
*-------------------------------------- *--------------------------------------
TERMX.CBLNK bit bActive TERMX.CBLNK jsr TERMX.CCheck
bpl .9 bcs TERMX.RTS
lda DevMgr.Timer lda DevMgr.Timer
and #CURSOR.BLINK.SPEED and #CURSOR.BLINK.SPEED
ldy #S.DCB.TTY.bCURON
eor (ZPDCBPtr),y 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 lda (ZPDCBPtr),y
beq TERMX.RTS eor #CURSOR.BLINK.SPEED
sta (ZPDCBPtr),y
TERMX.CBLNK.1 lda (ZPDCBPtr),y asl
bne TERMX.CBLNK.OFF beq TERMX.CUROFF.1
jsr GetCharAtCurPos jsr GetCharAtCurPos
bcs TERMX.RTS Out of screen bcs TERMX.RTS Out of screen
and #$80 and #$80
eor #" " eor #" "
jmp SetCharAtY.SCR
*--------------------------------------
TERMX.CUROFF jsr TERMX.CCheck
bcs TERMX.RTS
TERMX.CBLNK.SET asl
jsr SetCharAtY.SCR beq TERMX.RTS already off
ldy #S.DCB.TTY.bCURON
lda (ZPDCBPtr),y TERMX.CUROFF.1 jsr GetCharAtCurPos
eor #CURSOR.BLINK.SPEED bcs TERMX.RTS Out of screen
sta (ZPDCBPtr),y
rts
TERMX.CBLNK.OFF jmp SetCharAtY.SCR
jsr GetCharAtCurPos
bcc TERMX.CBLNK.SET if not Out of screen
TERMX.RTS rts 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 DecOut jsr MATH.A2STR10NP
ldx #0 ldx #0
.1 lda FOUTBuf,x .1 lda FOUTBuf,x
beq TERMX.RTS beq TERMX.RTS
inx inx
jsr TERMX.COUT jsr TERMX.COUT
bra .1 bra .1
@ -1107,11 +1139,13 @@ TERMX.COUT pha save char
inc inc
cmp #S.DCB.TTY.OUTBUF.MAX cmp #S.DCB.TTY.OUTBUF.MAX
bne .1 bne .1
lda #S.DCB.TTY.OUTBUF lda #S.DCB.TTY.OUTBUF
.1 dey OUTTAIL .1 dey OUTTAIL
cmp (ZPDCBPtr),y HEAD+1 = TAIL ? cmp (ZPDCBPtr),y HEAD+1 = TAIL ?
beq .9 CS, full! beq .9 CS, full!
iny iny
sta (ZPDCBPtr),y new head sta (ZPDCBPtr),y new head
ply old head ply old head
@ -1119,6 +1153,7 @@ TERMX.COUT pha save char
sta (ZPDCBPtr),y sta (ZPDCBPtr),y
clc clc
rts rts
.9 pla .9 pla
pla pla
rts rts
@ -1128,6 +1163,7 @@ Char.Out.Get ldy #S.DCB.TTY.OUTTAIL
iny OUTHEAD iny OUTHEAD
cmp (ZPDCBPtr),y cmp (ZPDCBPtr),y
beq .9 CS beq .9 CS
tay tay
lda (ZPDCBPtr),y lda (ZPDCBPtr),y
pha pha
@ -1135,6 +1171,7 @@ Char.Out.Get ldy #S.DCB.TTY.OUTTAIL
inc inc
cmp #S.DCB.TTY.OUTBUF.MAX cmp #S.DCB.TTY.OUTBUF.MAX
bne .1 bne .1
lda #S.DCB.TTY.OUTBUF lda #S.DCB.TTY.OUTBUF
.1 ldy #S.DCB.TTY.OUTTAIL .1 ldy #S.DCB.TTY.OUTTAIL
@ -1182,6 +1219,7 @@ TERMX.CLRSCR.2 sty .1+1
.1 cpx #$ff SELF MODIFIED .1 cpx #$ff SELF MODIFIED
beq .9 beq .9
jsr TERMX.SETUP.L1X jsr TERMX.SETUP.L1X
lda #" " lda #" "
@ -1204,9 +1242,11 @@ TERMX.CLRSCR.2 sty .1+1
bra .1 bra .1
.7 ldy #39 .7 ldy #39
.8 sta (ZPScrBL1),y .8 sta (ZPScrBL1),y
dey dey
bpl .8 bpl .8
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
TERMX.Title.ON ldy #S.DCB.TTY.bTITLE TERMX.Title.ON ldy #S.DCB.TTY.bTITLE
@ -1228,8 +1268,10 @@ TERMX.Title.ON ldy #S.DCB.TTY.bTITLE
cmp #$40 cmp #$40
bcc .2 bcc .2
cmp #$60 cmp #$60
bcs .2 bcs .2
and #$1F remap UPPERCASE and #$1F remap UPPERCASE
.2 phy .2 phy
@ -1480,7 +1522,7 @@ RESET.VALUES .DA #0 MODE
.DA #0 CV.SAVE .DA #0 CV.SAVE
.DA #0 SCROLLTOP .DA #0 SCROLLTOP
.DA #23 SCROLLBOT .DA #23 SCROLLBOT
.DA #0 bCURON .DA #$80 bCURON
.DA #0 bTITLE .DA #0 bTITLE
.DA #$80 bNORMAL .DA #$80 bNORMAL
@ -1501,10 +1543,10 @@ TERMX.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ
.DA #0 .DA #0
.DA K.VER .DA K.VER
*-------------------------------------- *--------------------------------------
* ` a b c d e f g h i j k l m n o * ` a b c d e f g h i j k l m n o
REMAP.E0.FF .HS 5B4142434445464748495FA0DF544e4f 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 * p q r s t u v w x y z { | } ~ DEL
.HS 50DF5253545556575F595a5b5c5d5e5f .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.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 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 TmpPtr1 .EQ $0
TmpPtr2 .EQ $2 TmpPtr2 .EQ $2
Type .EQ $4
*-------------------------------------- *--------------------------------------
RW.SAVEZP0 .EQ $800 RW.SAVEZP0 .EQ $800
RW.SAVEZP1 .EQ $900 RW.SAVEZP1 .EQ $900
@ -21,18 +22,24 @@ RW.BLOCK .EQ $A00
*-------------------------------------- *--------------------------------------
* A2OSX.SYSTEM relocated at $1000 !!! * A2OSX.SYSTEM relocated at $1000 !!!
*-------------------------------------- *--------------------------------------
SEBankSelect .EQ $C071
RWBankSelect .EQ $C073 RWBankSelect .EQ $C073
*-------------------------------------- *--------------------------------------
RW.Init >LDYAI RW.MSG RW.Init >LDYAI RW.MSG
jsr PrintFYA jsr PrintFYA
jsr RW.Detect1 jsr RW.DetectRAM3
bcs .10 bcs .10
>LDYAI RW.MSG.OK >LDYAI RW.MSG.OK
jsr PrintFYA jsr PrintFYA
rts rts
.10 jsr RW.Detect2 .10 lda #RWBankSelect
jsr RW.DetectHW
bcc .1
lda #SEBankSelect
jsr RW.DetectHW
bcc .1 bcc .1
>LDYAI RW.MSG.KO1 >LDYAI RW.MSG.KO1
@ -88,7 +95,7 @@ RW.Init >LDYAI RW.MSG
.9 jsr PrintFYA .9 jsr PrintFYA
rts rts
*-------------------------------------- *--------------------------------------
RW.Detect1 jsr MLI RW.DetectRAM3 jsr MLI
.DA #MLIONLINE .DA #MLIONLINE
.DA RW.ONLINE .DA RW.ONLINE
rts rts
@ -98,9 +105,14 @@ RW.ONLINE .DA #2
.DA RW.ONLINEBUFFER .DA RW.ONLINEBUFFER
RW.ONLINEBUFFER .BS 16 RW.ONLINEBUFFER .BS 16
*-------------------------------------- *--------------------------------------
RW.Detect2 php RW.DetectHW php
sei sei
sta Type
sta .1+1
sta .2+1
sta .3+1
sta .6+1
sta SETALTZP sta SETALTZP
ldx #0 start detection at page $00 ldx #0 start detection at page $00
@ -199,7 +211,12 @@ RW.Install lda RRAMWRAMBNK1
ror ror
sta RWDRV.MAXLO+1 sta RWDRV.MAXLO+1
lda Type
sta RWDRV.IO1+1
sta RWDRV.EXIT+1
lda RROMBNK1 lda RROMBNK1
sta SETWRITEAUX sta SETWRITEAUX
ldx #RWDRVX.SIZE ldx #RWDRVX.SIZE
@ -209,6 +226,11 @@ RW.Install lda RRAMWRAMBNK1
dex dex
bne .2 bne .2
lda Type
sta RWDRVX.XM.IO1+1
sta RWDRVX.XM.IO2+1
sta RWDRVX.XM.IO3+1
sta CLRWRITEAUX sta CLRWRITEAUX
inc DEVCNT inc DEVCNT
ldx DEVCNT ldx DEVCNT
@ -391,7 +413,7 @@ RW.BLOCK2.END .EQ *
*-------------------------------------- *--------------------------------------
.INB usr/src/shared/x.printf.s .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.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.OK1 .AZ "%D KB Detected (%d Pages), %D KB (%d Pages) Available for RamDrive.\n"
RW.MSG.KO1 .AZ "Not Detected.\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 * 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 inx second 256 bytes first
stx DRV.A2H Use DRV.A1L/H for RAM PTR 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 jsr RWDRV.XM.RUN+RWDRVX.XM.SRCLC-RWDRVX.XM.START
sta $C000,x select proper Main/Aux ZP/LC sta $C000,x select proper Main/Aux ZP/LC
sta RWBankSelect RWDRVX.XM.IO1 sta RWBankSelect
ldx #0 ldx #0
@ -629,7 +651,7 @@ RWDRVX.XM.SRC lda $FFFF,x
jsr RWDRV.XM.RUN+RWDRVX.XM.DSTLC-RWDRVX.XM.START jsr RWDRV.XM.RUN+RWDRVX.XM.DSTLC-RWDRVX.XM.START
sta $C000,x select proper Main/Aux ZP/LC sta $C000,x select proper Main/Aux ZP/LC
sta RWBankSelect RWDRVX.XM.IO2 sta RWBankSelect
ldx #0 ldx #0
@ -644,7 +666,7 @@ RWDRVX.XM.DST sta $FFFF,x
bne RWDRVX.XM.COPY bne RWDRVX.XM.COPY
sta CLRALTZP sta CLRALTZP
stz RWBankSelect RWDRVX.XM.IO3 stz RWBankSelect
*-------------------------------------- *--------------------------------------
RWDRVX.XM.MNLC bit RRAMWRAMBNK1 ProDOS always uses LCBANK1 RWDRVX.XM.MNLC bit RRAMWRAMBNK1 ProDOS always uses LCBANK1

View File

@ -195,6 +195,7 @@ VSDRIVE.Ping lda TmpPtr1+1 A=SlotCN
tya tya
.9 stz SSC.RESET-$8F,x .9 stz SSC.RESET-$8F,x
stz SSC.CMD-$8F,x Applewin Bug ???
plp plp
sec sec
rts rts