mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-29 02:49:54 +00:00
459 lines
10 KiB
Plaintext
459 lines
10 KiB
Plaintext
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
|