diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 64188a7f..59dc59b2 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index 4f1033c6..abccde38 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/BIN/ASM.S.EXP.txt b/BIN/ASM.S.EXP.txt index 9d840a71..99e1f6cc 100644 --- a/BIN/ASM.S.EXP.txt +++ b/BIN/ASM.S.EXP.txt @@ -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 diff --git a/BIN/ASM.S.txt b/BIN/ASM.S.txt index 715cbbe0..5f281e31 100644 --- a/BIN/ASM.S.txt +++ b/BIN/ASM.S.txt @@ -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 diff --git a/BIN/HTTPGET.S.txt b/BIN/HTTPGET.S.txt index f5326a7c..e1477a97 100644 --- a/BIN/HTTPGET.S.txt +++ b/BIN/HTTPGET.S.txt @@ -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 diff --git a/BIN/PPPTEST.S.txt b/BIN/PPPTEST.S.txt deleted file mode 100644 index 21ff78e7..00000000 --- a/BIN/PPPTEST.S.txt +++ /dev/null @@ -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 diff --git a/BIN/PS.S.txt b/BIN/PS.S.txt index 586f6c20..17cb3bfa 100644 --- a/BIN/PS.S.txt +++ b/BIN/PS.S.txt @@ -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 diff --git a/BIN/TUITEST.S.txt b/BIN/TUITEST.S.txt index 9aa090ae..9e1a0a3b 100644 --- a/BIN/TUITEST.S.txt +++ b/BIN/TUITEST.S.txt @@ -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 diff --git a/DRV/PPPSSC.DRV.S.D.txt b/DRV/PPPSSC.DRV.S.D.txt new file mode 100644 index 00000000..4ac4d857 --- /dev/null +++ b/DRV/PPPSSC.DRV.S.D.txt @@ -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 diff --git a/DRV/PPPSSC.DRV.S.E.txt b/DRV/PPPSSC.DRV.S.E.txt new file mode 100644 index 00000000..8e65ee12 --- /dev/null +++ b/DRV/PPPSSC.DRV.S.E.txt @@ -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 diff --git a/DRV/PPPSSC.DRV.S.txt b/DRV/PPPSSC.DRV.S.txt index 9c83dd3f..668d9ffc 100644 --- a/DRV/PPPSSC.DRV.S.txt +++ b/DRV/PPPSSC.DRV.S.txt @@ -4,15 +4,18 @@ NEW .OP 65C02 .OR $2000 .TF drv/pppssc.drv +*-------------------------------------- +DBG .EQ 0 *-------------------------------------- .INB inc/macros.i .INB inc/a2osx.i + .INB inc/kernel.i .INB inc/mli.e.i .INB inc/com.i .INB inc/com.6551.i .INB inc/nic.i -*-------------------------------------- -INBUF.SIZE .EQ $800 + .INB inc/eth.i + .INB inc/libtcpip.i *-------------------------------------- .DUMMY .OR ZPBIN @@ -20,15 +23,15 @@ ZS.START ZPArgsPtr .BS 2 ZPPtr1 .BS 2 ZPPtr2 .BS 2 -ZPBufLen .BS 2 -ZPIOCTL .BS 2 -ZPBufPtr .BS 2 -ZPCount .BS 2 -ZPCount2 .BS 2 -FCS .BS 2 -Len .BS 1 -hETCFILE .BS 1 +ZPPtr3 .BS 2 +ZPBufLen .BS 2 + +FCS .BS 2 +hETCFILE .BS 1 +b7D .BS 1 +Len .BS 1 +bConfigured .BS 1 ZS.END .ED *-------------------------------------- * File Header (16 Bytes) @@ -55,16 +58,42 @@ L.ETCFILE .DA ETCFILE L.MSG.ETCFILE .DA MSG.ETCFILE L.MSG.UNEXPECTED .DA MSG.UNEXPECTED L.MSG.SYNTAX .DA MSG.SYNTAX +L.MSG.LCPInit .DA MSG.LCPInit +L.MSG.LocalIP .DA MSG.LocalIP +L.MSG.RemoteIP .DA MSG.RemoteIP + .DO DBG=1 L.MSG.DUMPBUF .DA MSG.DUMPBUFS .DA MSG.DUMPBUFR L.MSG.HEXDUMP .DA MSG.HEXDUMP -L.PPP.LCPReq .DA PPP.LCPReq + .FIN +L.PPP.ConfReq .DA PPP.ConfReq +L.PPP.EchoRep .DA PPP.EchoRep L.PPP.IPCPReq .DA PPP.IPCPReq -L.FILE.Buf .DA FILE.Buf -L.FILE.Bufp1 .DA FILE.Buf+1 -L.RCV.Buf .DA RCV.Buf -L.RCV.Bufp1 .DA RCV.Buf+1 -L.RCV.Bufp2 .DA RCV.Buf+2 +L.IN.Buf .DA IN.Buf +L.IN.Bufp1 .DA IN.Buf+1 +L.OUT.Buf .DA OUT.Buf +J.LCP .DA LCP.ConfReq + .DA LCP.ConfAck + .DA LCP.ConfNak + .DA LCP.Discard + .DA LCP.Discard + .DA LCP.Discard + .DA LCP.Discard + .DA LCP.Discard + .DA LCP.EchoReq + .DA LCP.Discard + .DA LCP.Discard + .DA LCP.Discard + .DA LCP.Discard + .DA LCP.Discard + .DA LCP.Discard +J.IPCP .DA IPCP.ConfReq + .DA IPCP.ConfAck + .DA IPCP.ConfNak + .DA IPCP.Discard + .DA IPCP.Discard + .DA IPCP.Discard + .DA IPCP.Discard .DA 0 End Of Reloc Table *-------------------------------------- Dev.Detect >STYA ZPArgsPtr @@ -105,7 +134,7 @@ Dev.Detect >STYA ZPArgsPtr lda #MLI.E.NODEV Not Found in any slot, exiting sec rts -*-------------------------------------- + .4 lda ZPPtr1+1 asl asl @@ -114,32 +143,34 @@ Dev.Detect >STYA ZPArgsPtr clc adc #$8F sta DEVSLOTn08F - +*-------------------------------------- jsr SSC.Init - jsr PPP.ETCFILE - bcs .99 - jsr PPP.Init - bcs .99 + jsr PPP.ETCFILE + bcs .9 + + jsr PPP.LCPInit + bcs .9 >PUSHW L.MSG.DETECT.OK >PUSHW L.FD.DEV.NAME >PUSHBI 2 >SYSCALL PrintF + bcs .9 >PUSHWI DRV.END >PUSHWI DRV.CS.END-DRV.CS.START >PUSHWI DRV.CS.START >LDYA L.DRV.CS.START >SYSCALL InsDrv -.99 bcs .9 +.9 bcs .99 >STYA FD.DEV+S.FD.DEV.DRVPTR >PUSHW L.FD.DEV >PUSHW L.FD.DEV.NAME >SYSCALL MKDev - bcs .9 + bcs .99 lda FD.DEV.NAME+3 and #$0F @@ -147,197 +178,35 @@ Dev.Detect >STYA ZPArgsPtr lda #A2osX.S.NIC sta A2osX.S,x - lda #0 - sec +* clc + rts - -.9 ldx DEVSLOTn08F + +.99 ldx DEVSLOTn08F stz SSC.RESET-$8F,x Dev.Detect.RTS rts *-------------------------------------- -PPP.ETCFILE >PUSHW L.ETCFILE - >PUSHBI O.RDONLY - >PUSHBI 0 - >PUSHWZ - >SYSCALL FOpen - bcs Dev.Detect.RTS - - sta hETCFILE - - >PUSHW L.MSG.ETCFILE - >PUSHW L.ETCFILE - >PUSHBI 2 - >SYSCALL PrintF - -.1 >PUSHB hETCFILE - >PUSHW L.FILE.Buf - >PUSHWI 255 - >SYSCALL FGetS - bcs .8 - - lda FILE.Buf - beq .1 - - cmp #'#' - beq .1 - - >LDYA L.FILE.Buf +PPP.LCPInit >LDYA L.MSG.LCPInit >SYSCALL PutS - lda FILE.Buf - cmp #'>' - bne .2 + >LDYA L.PPP.EchoRep Pre calculate EchoRep FCS + jsr PPP.FCS16.Set - >LDYA L.FILE.Bufp1 - jsr SSC.WriteYA - bcs .9 + >LDYA L.PPP.ConfReq + jsr PPP.FCS16.Set -.10 bra .1 - -.2 cmp #'?' - bne .7 -*-------------------------------------- -.3 jsr SSC.Read - bcs .9 - - tya - beq .3 - - lda #0 - sta RCV.Buf,y - - >LDYA L.RCV.Buf - >STYA ZPPtr2 - -.4 jsr PPP.SkipCRLFPtr2 - bcs .3 - - ldy #$ff - -.5 iny - lda FILE.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.RCV.Buf - >PUSHBI 2 - >SYSCALL PrintF - lda #MLI.E.IO - sec - rts -*-------------------------------------- -PPP.ETCFILE.ERR2 - >PUSHW L.MSG.SYNTAX - >PUSHW L.FILE.Buf - >PUSHBI 2 - >SYSCALL PrintF - lda #MLI.E.IO - sec - rts -*-------------------------------------- -PPP.Init >LDYAI PPP.LCPReq.LEN - >STYA ZPBufLen - >LDYA L.PPP.LCPReq - jsr PPPFCS16 - - >LDYA L.PPP.LCPReq + .DO DBG=1 + >LDYA L.PPP.ConfReq ldx #0 - jsr DumpBuf + jsr DumpBuf.PPP + .FIN - >LDYA L.PPP.LCPReq - ldx #PPP.LCPReq.LEN - - jsr SSC.WriteYAX + >LDYA L.PPP.ConfReq + jsr SSC.WritePPP bcs .9 -.1 jsr SSC.Read +.1 jsr SSC.ReadPPP bcs .9 tya @@ -346,42 +215,296 @@ PPP.Init >LDYAI PPP.LCPReq.LEN sty ZPBufLen stz ZPBufLen+1 - >LDYA L.RCV.Buf + .DO DBG=1 + >LDYA L.IN.Buf ldx #2 - jsr DumpBuf + jsr DumpBuf.PPP + .FIN - >LDYAI PPP.IPCPReq.LEN - >STYA ZPBufLen - >LDYA L.PPP.IPCPReq - jsr PPPFCS16 - - >LDYA L.PPP.IPCPReq - ldx #0 - jsr DumpBuf - - >LDYA L.PPP.IPCPReq - ldx #PPP.IPCPReq.LEN - - jsr SSC.WriteYAX + jsr LCP.IN.JUMP bcs .9 -.2 jsr SSC.Read - bcs .9 + bit bConfigured + bpl .1 +* clc + rts - tya - beq .2 +.9 lda #MLI.E.IO +* sec + rts +*-------------------------------------- +LCP.IN.JUMP lda IN.Buf+3 + cmp #$21 + bne LCP.Discard - sty ZPBufLen - stz ZPBufLen+1 + lda IN.Buf+2 + cmp #$C0 + bne .1 - >LDYA L.RCV.Buf - ldx #2 - jsr DumpBuf + lda IN.Buf+4 + beq LCP.Discard + + cmp #16 + bcs LCP.Discard + + asl + tax + jmp (J.LCP-2,x) + +.1 cmp #$80 + bne LCP.Discard + + lda IN.Buf+4 + beq LCP.Discard + + cmp #8 + bcs LCP.Discard + + asl + tax + jmp (J.IPCP-2,x) +*-------------------------------------- +LCP.Discard +IPCP.Discard + clc + rts +*-------------------------------------- +LCP.ConfReq ldy #0 + +.1 lda IN.Buf,y FF03C021 + sta OUT.Buf,y + iny + cpy #4 + bne .1 + + lda #2 Configure-Ack + sta OUT.Buf,y + + iny ID + + lda IN.Buf,y + sta OUT.Buf,y + + iny Len MSB + + lda IN.Buf,y + sta OUT.Buf,y + sta ZPBufLen+1 + + iny Len LSB + + lda IN.Buf,y + sta OUT.Buf,y + sta ZPBufLen sec + sbc #4 minus LEN LEN ... FCS FCS + tax + + iny First option ID + +.2 lda IN.Buf,y + cmp #6 ACCM ? + bne .7 + + phy + phx + + ldx #3 + +.3 lda IN.Buf+2,y + sta ACCM.OUT,x + iny + dex + bpl .3 + + plx + ply + +.7 jsr LCP.Ack.Copy + bne .2 + + lda ZPBufLen + clc + adc #6 + sta ZPBufLen + bcc .8 + + inc ZPBufLen+1 + +.8 >LDYA L.OUT.Buf + jsr PPP.FCS16.Set + + .DO DBG=1 + >LDYA L.OUT.Buf + ldx #0 + jsr DumpBuf.PPP + .FIN + + >LDYA L.OUT.Buf + jmp SSC.WritePPP +*-------------------------------------- +LCP.Ack.Copy txa + sec + sbc IN.Buf+1,y + + pha + + ldx IN.Buf+1,y + +.1 lda IN.Buf,y + sta OUT.Buf,y + iny + dex + bne .1 + + plx + rts +*-------------------------------------- +LCP.Ack.Next txa + sec + sbc IN.Buf+1,y + tax + + tya + clc + adc IN.Buf+1,y + tay + + rts +*-------------------------------------- +LCP.ConfAck >LDYA L.PPP.IPCPReq + jsr PPP.FCS16.Set + + .DO DBG=1 + >LDYA L.PPP.IPCPReq + ldx #0 + jsr DumpBuf.PPP + .FIN + + >LDYA L.PPP.IPCPReq + jmp SSC.WritePPP +*-------------------------------------- +LCP.ConfNak + + clc + rts +*-------------------------------------- +LCP.EchoReq .DO DBG=1 + >LDYA L.PPP.EchoRep + ldx #0 + jsr DumpBuf.PPP + .FIN + + >LDYA L.PPP.EchoRep + jmp SSC.WritePPP +*-------------------------------------- +IPCP.ConfReq ldy #0 + +.1 lda IN.Buf,y FF038021 + sta OUT.Buf,y + iny + cpy #4 + bne .1 + + lda #2 Configure-Ack + sta OUT.Buf,y + + iny ID + + lda IN.Buf,y + sta OUT.Buf,y + + iny Len MSB + + lda IN.Buf,y + sta OUT.Buf,y + sta ZPBufLen+1 + + iny Len LSB + + lda IN.Buf,y + sta OUT.Buf,y + sta ZPBufLen + + sec + sbc #4 minus LEN LEN ... FCS FCS + tax + + iny First option ID + +.2 lda IN.Buf,y + cmp #3 IP ADDR ? + bne .7 + + phy + phx + + >PUSHW L.MSG.RemoteIP + + ldx #0 + +.3 lda IN.Buf+2,y + sta DCB.GW,x + >PUSHA + iny + inx + cpx #4 + bne .3 + + >PUSHBI 4 + >SYSCALL PrintF + + plx + ply + +.7 jsr LCP.Ack.Copy + bne .2 + + lda ZPBufLen + clc + adc #6 + sta ZPBufLen + bcc .8 + + inc ZPBufLen+1 + +.8 >LDYA L.OUT.Buf + jsr PPP.FCS16.Set + + .DO DBG=1 + >LDYA L.OUT.Buf + ldx #0 + jsr DumpBuf.PPP + .FIN + + >LDYA L.OUT.Buf + jmp SSC.WritePPP +*-------------------------------------- +IPCP.ConfAck sec + ror bConfigured * clc -.9 rts + rts +*-------------------------------------- +IPCP.ConfNak ldy #10 + ldx #0 + + >PUSHW L.MSG.LocalIP + +.1 lda IN.Buf,y + sta PPP.IPCPReq,y + sta DCB.IP,x + >PUSHA + inx + iny + cpy #14 + bne .1 + + >PUSHBI 4 + >SYSCALL PrintF + + jmp LCP.ConfAck *-------------------------------------- SSC.Init ldx DEVSLOTn08F stz SSC.RESET-$8F,x @@ -395,66 +518,89 @@ SSC.Init ldx DEVSLOTn08F lda SSC.STATUS-$8F,x clear any IRQ pending rts *-------------------------------------- -SSC.WriteYA >STYA ZPPtr1 +SSC.WritePPP >STYA ZPPtr1 - ldy #$ff + ldy #7 + lda (ZPPtr1),y Len LO + clc + adc #6 + eor #$ff + sta ZPPtr3 -.1 iny - lda (ZPPtr1),y - bne .1 + dey + lda (ZPPtr1),y Len HI + adc #0 + eor #$ff + sta ZPPtr3+1 - lda #C.CR - sta (ZPPtr1),y - iny - - lda #C.LF - sta (ZPPtr1),y - iny - - sty Len - - bra SSC.Write - -SSC.WriteYAX >STYA ZPPtr1 - stx Len - -SSC.Write php + php sei ldx DEVSLOTn08F ldy #0 -.1 phy - - ldy #0 - -.2 lda SSC.STATUS-$8F,x +.1 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 + iny + bne .1 + +.9 lda #MLI.E.IO + plp sec rts -.3 ply +.2 lda #$7E + sta SSC.DATA-$8F,x + +.3 inc ZPPtr3 + bne .31 + + inc ZPPtr3+1 + beq .8 + + +.31 lda SSC.STATUS-$8F,x + bit #SSC.STATUS.TDRE + beq .3 lda (ZPPtr1),y - pha - and #$7F - cmp #C.XON + cmp #$7D beq .4 - cmp #C.XOFF - bne .6 + cmp #$7E + beq .4 + + cmp #$20 + bcs .6 + + phx + phy + + and #7 + tax bit in byte + + lda (ZPPtr1),y + lsr + lsr + lsr + tay + + lda ACCM.OUT,y + and ACCM.BIT2MASK,x + cmp #1 + + ply + plx + + lda (ZPPtr1),y + bcc .6 .4 lda #$7D sta SSC.DATA-$8F,x @@ -463,31 +609,33 @@ SSC.Write php bit #SSC.STATUS.TDRE beq .5 - pla - ora #$20 - .HS F0 BEQ + lda (ZPPtr1),y + eor #%00100000 -.6 pla - - sta SSC.DATA-$8F,x +.6 sta SSC.DATA-$8F,x iny - cpy Len - bne .1 + bne .3 + inc ZPPtr1+1 + bra .3 +.8 lda SSC.STATUS-$8F,x + bit #SSC.STATUS.TDRE + beq .8 + + lda #$7E + sta SSC.DATA-$8F,x plp clc rts *-------------------------------------- -SSC.Read php +SSC.ReadPPP php sei ldx DEVSLOTn08F - ldy #0 - -.1 phy +.1 stz b7D ldy #0 @@ -501,75 +649,85 @@ SSC.Read php iny bne .2 - ply - - plp +.8 plp clc rts -.3 ply +.3 lda SSC.DATA-$8F,x + bit b7D + bmi .4 + + cmp #$7E + bne .4 + + ror b7D + bra .1 + +.4 cmp #$FF + bne .1 + + sta IN.Buf + ldy #1 + stz b7D + +.5 lda SSC.STATUS-$8F,x + bit #SSC.STATUS.nDCD true when 0 + bne .9 + + bit #SSC.STATUS.RDRF incoming char? + beq .5 lda SSC.DATA-$8F,x - sta RCV.Buf,y - iny + bit b7D + bmi .6 - bra .1 + cmp #$7D + bne .7 + + ror b7D + bra .5 + +.6 stz b7D + eor #%00100000 + sta IN.Buf,y + iny + bra .5 + +.7 cmp #$7E + beq .8 + + sta IN.Buf,y + iny + bra .5 .9 lda #MLI.E.IO plp sec rts *-------------------------------------- -DumpBuf >STYA ZPPtr1 + .DO DBG=1 +DumpBuf.PPP >STYA ZPPtr1 + + stz ZPPtr2 + stz ZPPtr2+1 + + ldy #7 + lda (ZPPtr1),y Len LO + clc + adc #6 + sta ZPPtr3 + + dey + lda (ZPPtr1),y Len HI + adc #0 + sta ZPPtr3+1 >PUSHW L.MSG.DUMPBUF,x - >PUSHW ZPBufLen + >PUSHW ZPPtr3 >PUSHBI 2 >SYSCALL PrintF bcs .9 - lda (ZPPtr1) - cmp #$0D - bne DumpBuf.PPP - - lda ZPBufLen - eor #$ff - sta ZPBufLen - lda ZPBufLen+1 - eor #$ff - sta ZPBufLen+1 - -.1 inc ZPBufLen - bne .2 - - inc ZPBufLen+1 - beq .9 - -.2 lda (ZPPtr1) - inc ZPPtr1 - bne .3 - - inc ZPPtr1+1 - -.3 cmp #$0D - beq .4 - - cmp #$0A - beq .4 - - cmp #C.SPACE - bcs .4 - - ora #$20 - -.4 >SYSCALL PutChar - bcc .1 - -.9 rts - -DumpBuf.PPP stz ZPPtr2 - stz ZPPtr2+1 - .1 >PUSHW L.MSG.HEXDUMP >PUSHW ZPPtr2 @@ -577,73 +735,83 @@ DumpBuf.PPP stz ZPPtr2 .2 >PUSHB (ZPPtr1),y iny - cpy #8 + cpy #16 bne .2 - >PUSHBI 10 + >PUSHBI 18 >SYSCALL PrintF bcs .9 lda ZPPtr1 - adc #8 + adc #16 sta ZPPtr1 lda ZPPtr1+1 adc #0 sta ZPPtr1+1 lda ZPPtr2 - adc #8 + adc #16 sta ZPPtr2 lda ZPPtr2+1 adc #0 sta ZPPtr2+1 - lda ZPBufLen + lda ZPPtr3 sec - sbc #8 - sta ZPBufLen - lda ZPBufLen+1 + sbc #16 + sta ZPPtr3 + lda ZPPtr3+1 sbc #0 - sta ZPBufLen+1 + sta ZPPtr3+1 bcc .9 - ora ZPBufLen + ora ZPPtr3 bne .1 clc .9 rts + .FIN *-------------------------------------- -PPPFCS16 >STYA ZPPtr1 +PPP.FCS16.Check sec + .HS 90 BCC +PPP.FCS16.Set clc + php + + >STYA ZPPtr1 lda #$ff sta FCS sta FCS+1 - lda ZPBufLen - sec - sbc #4 minus 7E .... FCS FCS 7E + ldy #7 + lda (ZPPtr1),y Len LO + clc + adc #4 add FF 00 XX XX but dont include FCS FCS eor #$ff sta ZPPtr2 - lda ZPBufLen+1 - sbc #0 + dey + lda (ZPPtr1),y Len HI + adc #0 eor #$ff sta ZPPtr2+1 + ldy #0 + .1 inc ZPPtr2 bne .2 inc ZPPtr2+1 - beq .8 + beq .7 -.2 inc ZPPtr1 skip First 7E +.2 lda (ZPPtr1),y + iny bne .3 inc ZPPtr1+1 -.3 lda (ZPPtr1) - eor FCS +.3 eor FCS tax lda FCS.LO,x @@ -655,84 +823,39 @@ PPPFCS16 >STYA ZPPtr1 bra .1 -.8 lda FCS+1 - eor #$ff - ldy #1 - sta (ZPPtr1),y +.7 plp + bcc .8 CC = set lda FCS eor #$ff + eor (ZPPtr1),y + bne .9 + iny + + lda FCS+1 + eor #$ff + eor (ZPPtr1),y + bne .9 + + clc + rts + +.8 lda FCS + eor #$ff sta (ZPPtr1),y - rts + iny + + lda FCS+1 + eor #$ff + sta (ZPPtr1),y + +.9 rts +*-------------------------------------- + .INB usr/src/drv/pppssc.drv.s.e *-------------------------------------- CS.END -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 *-------------------------------------- DEVSIG.Offset .HS 05070B0C DEVSIG.Value .HS 38180131 @@ -745,9 +868,14 @@ ETCFILE .AZ "${ROOT}etc/ppp.conf" MSG.ETCFILE .AZ "Executing %s File...\r\n" MSG.UNEXPECTED .AZ "\r\nERR:Unexpected reply From Modem\r\n{%s}\r\n" MSG.SYNTAX .AZ "\r\nERR:Bad Syntax In ppp.conf\r\n{%s}\r\n" -MSG.DUMPBUFS .AZ "Send:%H\r\n" -MSG.DUMPBUFR .AZ "Recv:%H\r\n" -MSG.HEXDUMP .AZ "%H:%h %h %h %h %h %h %h %h\r\n" +MSG.LCPInit .AZ "LCP/IPCP Negotiation..." +MSG.LocalIP .AZ "Local IP is %d.%d.%d.%d\r\n" +MSG.RemoteIP .AZ "Remote IP is %d.%d.%d.%d\r\n" + .DO DBG=1 +MSG.DUMPBUFS .AZ ">>Send:%H\r\n" +MSG.DUMPBUFR .AZ "Recv<<:%H\r\n" +MSG.HEXDUMP .AZ "%H:%h %h %h %h %h %h %h %h:%h %h %h %h %h %h %h %h\r\n" + .FIN *-------------------------------------- FD.DEV .DA #S.FD.T.CDEV .DA #0 HANDLER @@ -759,410 +887,37 @@ FD.DEV .DA #S.FD.T.CDEV .DA 0 BUFPTR FD.DEV.NAME .AZ "eth1" *-------------------------------------- -PPP.LCPReq .HS 7E -PPP.LCPReq.START - .HS FF03 +PPP.ConfReq .HS FF03 .HS C021 LCP -PPP.LCPReq.DATA .HS 01 Configure-Request - .HS 01 ID - .DA /PPP.LCPReq.DATA.LEN,#PPP.LCPReq.DATA.LEN - .HS 01.04 MRU - .DA /576,#576 +PPP.ConfReq.DATA + .HS 01 Configure-Request + .HS FF ID + .DA /PPP.ConfReq.LEN,#PPP.ConfReq.LEN +* .HS 01.04 MRU +* .DA /1400,#1400 .HS 02.06.000A0000 ACCM - .HS 05.06.002A2B78 MAGIC + .HS 05.06.EA4C2B41 MAGIC * .HS 07.02 * .HS 08.02 -PPP.LCPReq.DATA.LEN .EQ *-PPP.LCPReq.DATA -* .HS 0000 PADDING +PPP.ConfReq.LEN .EQ *-PPP.ConfReq.DATA .BS 2 FCS - .HS 7E -PPP.LCPReq.LEN .EQ *-PPP.LCPReq *-------------------------------------- -PPP.IPCPReq .HS 7E -PPP.IPCPReq.START - .HS FF03 +PPP.IPCPReq .HS FF03 .HS 8021 IPCP -PPP.IPCPReq.DATA .HS 01 Configure-Request - .HS 01 ID - .DA /PPP.IPCPReq.DATA.LEN,#PPP.IPCPReq.DATA.LEN +PPP.IPCPReq.DATA + .HS 01 Configure-Request + .HS FF ID + .DA /PPP.IPCPReq.LEN,#PPP.IPCPReq.LEN +* .HS 02.06.00.2D.0F.00 VJ .HS 03.06.00.00.00.00 IP Address -PPP.IPCPReq.DATA.LEN .EQ *-PPP.IPCPReq.DATA -* .HS 0000 PADDING +PPP.IPCPReq.LEN .EQ *-PPP.IPCPReq.DATA .BS 2 FCS - .HS 7E -PPP.IPCPReq.LEN .EQ *-PPP.IPCPReq *-------------------------------------- -FILE.Buf .BS 256 -RCV.Buf .BS 256 +IN.Buf .BS 256 +OUT.Buf .BS 256 *-------------------------------------- -* Driver Code + .INB usr/src/drv/pppssc.drv.s.d *-------------------------------------- -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 IRQ - .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.COM-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.TAIL - eor INBUF.HEAD - bne .8 NO DATA? eof = TRUE - - lda INBUF.TAIL+1 - eor INBUF.HEAD+1 - bne .8 - - 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.COM-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 - >STYA INBUF.PTR - >STYA READ.BUF+1 - >STYA IRQ.BUF+1 - - stz INBUF.TAIL - stz INBUF.TAIL+1 - stz INBUF.HEAD - stz INBUF.HEAD+1 - stz INBUF.CNT - stz INBUF.CNT+1 - - php - sei - ldx DEVSLOTn08F - stz SSC.RESET-$8F,x - - lda #SSC.CTL.CLKINT+SSC.CTL.B115200+SSC.CTL.8D+SSC.CTL.1S+SSC.CMD.NOP - sta SSC.CTL-$8F,x - lda #SSC.CMD.TE+SSC.CMD.DTR - sta SSC.CMD-$8F,x - - lda SSC.DATA-$8F,x discard any garbage byte - lda SSC.STATUS-$8F,x clear any IRQ pending - - lda #S.DIB.S.OPENED - tsb DIB+S.DIB.S - - plp - 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 php - sei - jsr READ.WRITE.Init - - lda INBUF.CNT - ora INBUF.CNT+1 - beq READ.9 - - stz ZPCount2 - stz ZPCount2+1 - - ldy INBUF.TAIL - -READ.1 inc ZPCount - bne READ.BUF - - inc ZPCount+1 - beq READ.8 - -READ.BUF lda $FFFF,y SELF MODIFIED - sta (ZPBufPtr) - inc ZPBufPtr - bne .1 - - inc ZPBufPtr+1 - -.1 inc ZPCount2 - bne .2 - - inc ZPCount2+1 - -.2 iny - bne .3 - - inc READ.BUF+2 - - inc INBUF.TAIL+1 - lda INBUF.TAIL+1 - cmp /INBUF.SIZE - bne .3 - - lda INBUF.PTR+1 - sta READ.BUF+2 - -.3 lda INBUF.CNT - ldx INBUF.CNT+1 - clc - sbc #0 - bcs .4 - dex - bmi .8 - - stx INBUF.CNT+1 - -.4 sta INBUF.CNT - bra READ.1 - -.8 sty INBUF.TAIL - -READ.8 lda ZPCount2 - ldy #S.IOCTL.BYTECNT - sta (ZPIOCTL),y - iny - lda ZPCount2+1 - sta (ZPIOCTL),y - - plp - clc - rts - -READ.9 lda SSC.STATUS-$8F,x - bit #SSC.STATUS.nDCD true when 0 - beq .99 - - lda #MLI.E.IO - .HS 2C BIT ABS - -.99 lda #E.NODATA - plp - sec - rts -*-------------------------------------- -WRITE php - sei - jsr READ.WRITE.Init - - lda SSC.STATUS-$8F,x - bit #SSC.STATUS.nDCD true when 0 - bne .9 - - ldy #0 - -.1 inc ZPCount - bne .2 - - inc ZPCount+1 - beq .8 - -.2 lda SSC.STATUS-$8F,x - and #SSC.STATUS.TDRE Register Empty ? - beq .2 - - lda (ZPBufPtr),y - sta SSC.DATA-$8F,x - iny - bne .1 - - inc ZPBufPtr+1 - bra .1 - -.8 plp - clc - rts - -.9 lda #MLI.E.IO - plp - sec - rts -*-------------------------------------- -READ.WRITE.Init ldx DEVSLOTn08F - -STATUS.CONTROL.Init - >STYA ZPIOCTL - - ldy #S.IOCTL.BUFPTR - lda (ZPIOCTL),y - sta ZPBufPtr - - iny - - lda (ZPIOCTL),y - sta ZPBufPtr+1 - iny #S.IOCTL.BYTECNT - - lda (ZPIOCTL),y - eor #$ff - sta ZPCount - - iny - - lda (ZPIOCTL),y - eor #$ff - sta ZPCount+1 - rts -*-------------------------------------- -* IRQ Handler -* on exit, CC if handled -*-------------------------------------- -IRQ ldx DEVSLOTn08F - lda SSC.STATUS-$8F,x -* and #SSC.STATUS.IRQ - bpl IRQ.9 IRQ from this device ? no, exit !!!!Applewin bug #308!!!! - - bit #SSC.STATUS.RDRF incoming char? - beq IRQ.8 - - ldy INBUF.HEAD - -IRQ.1 lda SSC.DATA-$8F,x read data to clear IRQ -IRQ.BUF sta $FFFF,y SELF MODIFIED - - inc INBUF.CNT - bne .1 - - inc INBUF.CNT+1 - -.1 iny - bne .2 - - inc IRQ.BUF+2 - - inc INBUF.HEAD+1 - lda INBUF.HEAD+1 - cmp /INBUF.SIZE - bne .2 - - lda INBUF.PTR+1 - sta IRQ.BUF+2 - - lda #0 - -.2 bit SSC.STATUS-$8F,x - bmi IRQ.1 - - inc - bne .2 - - sty INBUF.HEAD - -IRQ.8 clc - rts - -IRQ.9 sec - rts -*-------------------------------------- -DRV.CS.END -*-------------------------------------- -DEVSLOTn08F .BS 1 -hINBUF .BS 1 -INBUF.PTR .BS 2 -INBUF.TAIL .BS 2 -INBUF.HEAD .BS 2 -INBUF.CNT .BS 2 -*-------------------------------------- -DIB .DA #S.DIB.S.IRQ - .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 000000000000 MAC - .BS 12 IP/MASK/GW -*-------------------------------------- -DRV.END MAN SAVE usr/src/drv/pppssc.drv.s ASM diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 573310e8..dca09000 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -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 diff --git a/INC/LIBTUI.I.txt b/INC/LIBTUI.I.txt index 6e36d1a2..285c9654 100644 --- a/INC/LIBTUI.I.txt +++ b/INC/LIBTUI.I.txt @@ -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 diff --git a/LIB/LIBTCPIP.S.CFG.txt b/LIB/LIBTCPIP.S.CFG.txt index 205705a5..d9147e5a 100644 --- a/LIB/LIBTCPIP.S.CFG.txt +++ b/LIB/LIBTCPIP.S.CFG.txt @@ -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 diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index bd32c259..cfbe3066 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -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 diff --git a/LIB/LIBTUI.S.LBOX.txt b/LIB/LIBTUI.S.LBOX.txt new file mode 100644 index 00000000..585c16c1 --- /dev/null +++ b/LIB/LIBTUI.S.LBOX.txt @@ -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 diff --git a/LIB/LIBTUI.S.OBJ.txt b/LIB/LIBTUI.S.OBJ.txt new file mode 100644 index 00000000..0e5843e7 --- /dev/null +++ b/LIB/LIBTUI.S.OBJ.txt @@ -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 diff --git a/LIB/LIBTUI.S.SCRN.txt b/LIB/LIBTUI.S.SCRN.txt new file mode 100644 index 00000000..daef34a4 --- /dev/null +++ b/LIB/LIBTUI.S.SCRN.txt @@ -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 diff --git a/LIB/LIBTUI.S.TBOX.txt b/LIB/LIBTUI.S.TBOX.txt new file mode 100644 index 00000000..33362986 --- /dev/null +++ b/LIB/LIBTUI.S.TBOX.txt @@ -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 diff --git a/LIB/LIBTUI.S.txt b/LIB/LIBTUI.S.txt index 10a74f3f..0e40eda1 100644 --- a/LIB/LIBTUI.S.txt +++ b/LIB/LIBTUI.S.txt @@ -12,11 +12,20 @@ NEW *-------------------------------------- .DUMMY .OR ZPLIB -hScrn .BS 1 - .BS 1 + ZPScrnPtr .BS 2 ZPObjPtr .BS 2 + +ZPLineBufPtr .BS 2 +ZPLineBufCnt .BS 2 + ZPPtr1 .BS 2 +ZPPtr2 .BS 2 +TempW .BS 2 +TempC .BS 2 +TempI .BS 2 +bResize .BS 1 + .ED *-------------------------------------- * File Header (16 Bytes) @@ -35,22 +44,58 @@ CS.START cld *-------------------------------------- .1 .DA LIB.LOAD .DA LIB.UNLOAD - .DA LIB.Open + .DA LIB.Init + .DA LIB.GetEvent + .DA LIB.Dispatch .DA LIB.Close - .DA LIB.LBOXNew + .DA OBJ.New + .DA OBJ.Destroy + .DA OBJ.Run + .DA OBJ.Draw + .DA OBJ.GetProp + .DA OBJ.SetProp + .DA OBJ.Activate + .DA OBJ.Deactivate +*-------------------------------------- +J.ObjNew .DA SCRN.New + .DA TBOX.New + .DA LBOX.New +*-------------------------------------- +J.ObjDestroy .DA SCRN.Destroy + .DA TBOX.Destroy + .DA LBOX.Destroy +*-------------------------------------- +J.ObjRun .DA SCRN.Run + .DA TBOX.Run + .DA LBOX.Run +*-------------------------------------- +J.ObjDraw .DA SCRN.Draw + .DA TBOX.Draw + .DA LBOX.Draw +*-------------------------------------- +J.ObjActivate .DA SCRN.Activate + .DA TBOX.Activate + .DA LBOX.Activate +*-------------------------------------- +J.ObjDeactivate .DA SCRN.Deactivate + .DA TBOX.Deactivate + .DA LBOX.Deactivate *-------------------------------------- -L.SEQ.TERMCAP .DA SEQ.TERMCAP L.SEQ.INIT .DA SEQ.INIT +L.SEQ.GOTOXY .DA SEQ.GOTOXY +L.SEQ.COLOR .DA SEQ.COLOR +L.SEQ.CLOSE .DA SEQ.CLOSE L.FMT.ESCCSI.R .DA FMT.ESCCSI.R .DA 0 *-------------------------------------- LIB.LOAD lda LibCnt bne .8 - >LDYAI 256 + >LDYAI 512 >SYSCALL2 GetMem bcs .9 + >STYA LineBuf stx hLineBuf @@ -68,15 +113,18 @@ LIB.UNLOAD dec LibCnt .8 clc rts *-------------------------------------- -LIB.Open >LDYAI S.SCRN +LIB.Init sta TempW F + + >LDYAI S.SCRN >SYSCALL2 GetMem bcs .99 - + >STYA ZPScrnPtr txa - >PUSHA - + >PUSHA hScrn + lda #0 + >PUSHA Init Counter ldy #S.SCRN-1 @@ -84,37 +132,42 @@ LIB.Open >LDYAI S.SCRN dey bpl .10 - jsr CheckCh.Reset + lda TempW + ldy #S.OBJ.F + sta (ZPScrnPtr),y - >LDYA L.SEQ.TERMCAP - >SYSCALL2 puts + jsr LIB.GetC.Reset - lda #0 - >PUSHA + >LDYA L.SEQ.INIT + jsr LIB.YAOut + bcs .98 .1 >SLEEP - ldy #1 + ldy #1 hScrn lda (pStack),y - jsr GetScrn - - jsr CheckCh - bcs .97 - + + jsr LIB.GetC + bcs .98 + beq .2 - >SYSCALL2 PutChar - bcs .97 - + >SYSCALL PutChar + bcs .98 + + ldy #1 hScrn + lda (pStack),y + jsr LIB.GetScrn + .2 ldy #S.OBJ.W lda (ZPScrnPtr),y bne .8 - + lda (pStack) dec sta (pStack) bne .1 - + lda #80 ldy #S.OBJ.W @@ -124,139 +177,321 @@ LIB.Open >LDYAI S.SCRN iny S.OBJ.H sta (ZPScrnPtr),y -.8 inc pStack - - >LDYA ZPScrnPtr +.8 >LDYA ZPScrnPtr jsr LIB.SetObjX2Y2 - + + ldy #S.OBJ.S + lda #S.OBJ.S.bACTIVE + sta (ZPScrnPtr),y + + inc pStack Discard counter >PULLA hScrn clc - rts - -.97 inc pStack - inc pStack +.99 rts .98 pha - lda hScrn + inc pStack Discard counter + >PULLA hScrn >SYSCALL2 FreeMem pla sec -.99 rts + rts *-------------------------------------- -LIB.Close >SYSCALL2 FreeMem +LIB.GetEvent stz bResize + + >PUSHA hScrn + + jsr LIB.GetC + bcs .9 + + bit bResize + bpl .8 + + lda (pStack) + jsr LIB.GetScrn + + ldy #S.OBJ.fRESIZE + lda (ZPScrnPtr),y + sta ZPPtr1 + + iny + lda (ZPScrnPtr),y + sta ZPPtr1+1 + + jsr .10 + + stz bResize + + lda #0 + clc +.8 +.9 inc pStack + + rts + +.10 jmp (ZPPtr1) +*-------------------------------------- +LIB.Dispatch jsr OBJ.Run + bcc .8 + + lda (pStack) + cmp #3 Ctrl-C + beq .9 + + clc + +.8 + +.9 inc pStack Destroy Event + inc pStack on Stack + + rts +*-------------------------------------- +LIB.Close jsr OBJ.Destroy + + >LDYA L.SEQ.CLOSE + jsr LIB.YAOut clc rts *-------------------------------------- -LIB.LBOXNew >PULLW ZPPtr1 Params - - >PULLA hScrn - jsr GetScrn - - >LDYAI S.LBOX - >SYSCALL2 GetMem - bcs .9 - - >STYA ZPObjPtr - - lda #S.OBJ.T.LBOX - sta (ZPObjPtr) - - ldy #S.OBJ.P - lda hScrn - sta (ZPObjPtr),y +LIB.FindActive ldx ZPObjPtr + phx + ldx ZPObjPtr+1 + phx - iny #S.OBJ.F - lda #S.OBJ.F.bHBorder+S.OBJ.F.bVBorder - sta (ZPObjPtr),y + jsr LIB.GetObj + +* ldy #S.OBJ.P +* lda (ZPObjPtr),y +* sec +* beq .80 + + ldy #S.OBJ.Childs - ldy #S.OBJ.X1 +.1 phy + lda (ZPObjPtr),y + beq .7 -.1 lda (ZPPtr1),y - sta (ZPObjPtr),y + pha + + >SYSCALL2 GetMemPtr + >STYA ZPPtr1 + ldy #S.OBJ.S + lda (ZPPtr1),y + and #S.OBJ.S.bACTIVE + bne .8 + + pla + +.7 ply iny - cpy #S.OBJ.H+1 + cpy #S.OBJ bne .1 +* sec + bra .80 - -.8 txa +.8 pla + ply clc -.9 rts + +.80 plx + stx ZPObjPtr+1 + plx + stx ZPObjPtr + + rts *-------------------------------------- -LIB.LBOXSetData >SYSCALL2 GetMemPtr +LIB.GotoXY >PUSHW ZPLineBufPtr + >PUSHW L.SEQ.GOTOXY + + tya + inc + >PUSHA + + txa + inc + >PUSHA + + >PUSHBI 2 + jmp LIB.LineBufPrintF +*-------------------------------------- +LIB.SetColor tax + >PUSHW ZPLineBufPtr + >PUSHW L.SEQ.COLOR + + >PUSHB OBJ.COLORS,x + >PUSHB OBJ.COLORS+1,x + + >PUSHBI 2 + jmp LIB.LineBufPrintF +*-------------------------------------- +LIB.GetScrn >SYSCALL2 GetMemPtr + >STYA ZPScrnPtr + rts +*-------------------------------------- +LIB.GetObj >SYSCALL2 GetMemPtr >STYA ZPObjPtr - - rts *-------------------------------------- -LIB.LBOXFocus -*-------------------------------------- -LIB.LBOXRun -*-------------------------------------- -LIB.LBOXClose - clc - rts -*-------------------------------------- -LIB.SetObjX2Y2 >STYA ZPObjPtr +LIB.SetObjX2Y2 >STYA ZPPtr1 ldy #S.OBJ.X1 - jsr .1 - - ldy #S.OBJ.Y1 + jsr .7 + + ldy #S.OBJ.Y1 + jsr .7 + + ldy #S.OBJ.F + lda (ZPPtr1),y + and #S.OBJ.F.bHBorder + beq .1 + + ldy #S.OBJ.InnerX + lda (ZPPtr1),y + inc + sta (ZPPtr1),y + + iny + iny + + lda (ZPPtr1),y S.OBJ.InnerW + dec + dec + sta (ZPPtr1),y + +.1 ldx #0 + + ldy #S.OBJ.F + lda (ZPPtr1),y + bit #S.OBJ.F.bVBorder+S.OBJ.F.bTITLE + beq .2 + + dex + +.2 bit #S.OBJ.F.bVBorder+S.OBJ.F.bSTATUS + beq .3 + + dex + +.3 txa + beq .4 + + ldy #S.OBJ.InnerY + lda (ZPPtr1),y + inc + sta (ZPPtr1),y + + txa + + iny + iny + + clc + adc (ZPPtr1),y S.OBJ.InnerH + sta (ZPPtr1),y + +.4 ldy #S.OBJ.F + lda (ZPPtr1),y + bit #S.OBJ.F.bMENU + beq .5 + + ldy #S.OBJ.InnerY + lda (ZPPtr1),y + inc + sta (ZPPtr1),y + + iny + iny + + lda (ZPPtr1),y S.OBJ.InnerH + dec + sta (ZPPtr1),y + +.5 rts +*-------------------------------------- +.7 lda (ZPPtr1),y S.OBJ.X1/Y1 + tax -.1 clc - - lda (ZPObjPtr),y iny iny S.OBJ.W/H - adc (ZPObjPtr),y + phy + + clc + adc (ZPPtr1),y + dec iny iny S.OBJ.X2/Y2 - sta (ZPObjPtr),y + sta (ZPPtr1),y + iny + iny + + txa + sta (ZPPtr1),y S.OBJ.InnerX/Y + + ply S.OBJ.W/H + lda (ZPPtr1),y + iny + iny + iny + iny + iny + iny + sta (ZPPtr1),y S.OBJ.InnerW/H + rts *-------------------------------------- -LIB.DrawFrame - clc - rts -*-------------------------------------- -CheckCh ldy #S.PS.hStdIn +LIB.GetC >PUSHA hScrn + + ldy #S.PS.hStdIn lda (pPS),y >SYSCALL2 FEOF bcs .9 - - tay - bne .18 - - >SYSCALL2 GetChar - bcs .9 - tax + tay + beq .10 + + inc pStack + bra .18 + +.10 >SYSCALL2 GetChar + bcc .11 + +.9 inc pStack + rts + +.11 pha + + >PULLA + jsr LIB.GetScrn + + plx ldy #S.SCRN.bEscMode lda (ZPScrnPtr),y beq .20 - + bmi .40 IAC mode - + iny S.SCRN.InBufPtr lda (ZPScrnPtr),y cpx #'[' CSI ? - bne .10 - + bne .12 + cmp #S.SCRN.InBufPtr bne .49 buffer not empty...bad SEQ -.10 jsr CheckCh.ToBuf +.12 jsr LIB.GetC.ToBuf bcs .49 Buffer Full cpx #'[' beq .18 cpx #64 - bcs CheckCh.ESCSEQ if CC, not a letter...SEQ is incomplete + bcs LIB.GetC.ESCSEQ if CC, not a letter...SEQ is incomplete .18 lda #0 clc @@ -266,59 +501,58 @@ CheckCh ldy #S.PS.hStdIn bne .30 inc A = $01 - - jsr CheckCh.SetMode - - lda #0 - clc - rts + + bra .31 *-------------------------------------- .30 cpx #IAC bne .38 dec A = $FF - jsr CheckCh.SetMode - inx X = 0 +.31 jsr LIB.GetC.SetMode -.38 txa + lda #0 clc rts *-------------------------------------- -.40 jsr CheckCh.ToBuf +.38 txa + clc +.39 rts +*-------------------------------------- +.40 jsr LIB.GetC.ToBuf bcs .49 Buffer Full - + cpy #S.SCRN.InBuf First char... beq .48 - + ldy #S.SCRN.InBuf lda (ZPScrnPtr),y - cmp #SB - bne CheckCh.IACSEQ - - cpx #SE + cmp #SB First char is SB ? + bne LIB.GetC.IACSEQ no ... + + cpx #SE is SE after SB ..... ? bne .48 - - bra CheckCh.IACSEQ - -.49 jsr CheckCh.Reset + + bra LIB.GetC.IACSEQ yes, we have IAC SB .....SE + +.49 jsr LIB.GetC.Reset .48 lda #0 clc -.9 rts + rts *-------------------------------------- -CheckCh.ESCSEQ cmp #S.SCRN.InBuf+2 +LIB.GetC.ESCSEQ cmp #S.SCRN.InBuf+2 bcs .2 ldy #ESC.Out-ESC.In-1 txa - + .1 cmp ESC.In,y beq .7 - + dey bpl .1 - + bra .6 *-------------------------------------- * \e[xxx;yyyR @@ -327,55 +561,113 @@ CheckCh.ESCSEQ cmp #S.SCRN.InBuf+2 bne .6 lda #S.SCRN.InBuf+1 skip ESC [ - jsr GetScrnOfs + jsr LIB.GetC.GetScrnOfs >PUSHYA >PUSHW L.FMT.ESCCSI.R - + lda #S.OBJ.H - jsr GetScrnOfs + jsr LIB.GetC.GetScrnOfs >PUSHYA lda #S.OBJ.W - jsr GetScrnOfs + jsr LIB.GetC.GetScrnOfs >PUSHYA - + >PUSHBI 4 2 pointers >SYSCALL2 sscanf - + .6 ldx #0 bra .8 - + .7 ldx ESC.Out,y -.8 jsr CheckCh.Reset - +.8 jsr LIB.GetC.Reset + txa clc -.9 rts + rts *-------------------------------------- -CheckCh.IACSEQ - >DEBUG - jsr CheckCh.Reset +* IAC SB TN.O.NAWS ww ww hh hh IAC SE +*-------------------------------------- +LIB.GetC.IACSEQ ldy #S.SCRN.InBuf + lda (ZPScrnPtr),y + cmp #SB + bne .8 + + iny + lda (ZPScrnPtr),y + cmp #TN.O.NAWS + bne .8 + + iny + lda (ZPScrnPtr),y + bne .8 + + iny + lda (ZPScrnPtr),y + cmp #80 + bcs .1 + + lda #80 + +.1 tax + + iny + lda (ZPScrnPtr),y + bne .8 + + iny + lda (ZPScrnPtr),y + cmp #24 + bcs .2 + + lda #24 + +.2 ldy #S.OBJ.H + + sta (ZPScrnPtr),y + + dey S.OBJ.W + + txa + sta (ZPScrnPtr),y + + >LDYA ZPScrnPtr + jsr LIB.SetObjX2Y2 + + sec + ror bResize + +.8 jsr LIB.GetC.Reset lda #0 clc rts *-------------------------------------- -CheckCh.Reset lda #0 +LIB.GetC.Reset lda #0 -CheckCh.SetMode ldy #S.SCRN.bEscMode +LIB.GetC.SetMode + ldy #S.SCRN.bEscMode sta (ZPScrnPtr),y - + iny Y = S.SCRN.InBufPtr tya sta (ZPScrnPtr),y rts *-------------------------------------- -CheckCh.ToBuf ldy #S.SCRN.InBufPtr +LIB.GetC.GetScrnOfs + clc + adc ZPScrnPtr + tay + lda ZPScrnPtr+1 + adc #0 +.9 rts +*-------------------------------------- +LIB.GetC.ToBuf ldy #S.SCRN.InBufPtr lda (ZPScrnPtr),y - + cmp #S.SCRN.EndBuf buffer full bcs .9 @@ -387,44 +679,203 @@ CheckCh.ToBuf ldy #S.SCRN.InBufPtr tya ply sta (ZPScrnPtr),y - -* clc - -.9 rts + +* clc + +.9 rts *-------------------------------------- -GetScrn sta hScrn - >SYSCALL2 GetMemPtr - >STYA ZPScrnPtr +LIB.LineBufInit >LDYA LineBuf + >STYA ZPLineBufPtr + stz ZPLineBufCnt + stz ZPLineBufCnt+1 rts *-------------------------------------- -GetScrnOfs clc - adc ZPScrnPtr - tay - lda ZPScrnPtr+1 - adc #0 -.9 rts +LIB.LineBufSeqOut +.1 lda SEQS,x + beq .8 + + jsr LIB.LineBufCOut + inx + bra .1 + +.8 rts +*-------------------------------------- +LIB.LineBufYAOut + ldx #0 +*-------------------------------------- +LIB.LineBufYAOutX + >STYA ZPPtr1 X = MaxLen + + ldy #$ff + +.1 iny + lda (ZPPtr1),y + beq .8 + + jsr LIB.LineBufCOut + dex + bne .1 + +.8 rts +*-------------------------------------- +LIB.LineBufPrintF + >SYSCALL2 SPrintF + tya + + clc + adc ZPLineBufPtr + sta ZPLineBufPtr + bcc .1 + + inc ZPLineBufPtr+1 + clc + +.1 tya + adc ZPLineBufCnt + sta ZPLineBufCnt + bcc .8 + + inc ZPLineBufCnt+1 + clc + +.8 rts +*-------------------------------------- +LIB.LineBufHOut pha + lsr + lsr + lsr + lsr + jsr .1 + + pla + and #$0F + +.1 ora #$30 + cmp #'9'+1 + bcc LIB.LineBufCOut + + adc #6 +*-------------------------------------- +LIB.LineBufCOut sta (ZPLineBufPtr) + inc ZPLineBufPtr + bne .1 + + inc ZPLineBufPtr+1 + +.1 inc ZPLineBufCnt + bne .8 + + inc ZPLineBufCnt+1 + +.8 rts +*-------------------------------------- +LIB.LineBufOut ldy #S.PS.hStdOut + lda (pPS),y + >PUSHA + >PUSHW LineBuf + >PUSHW ZPLineBufCnt + >SYSCALL fwrite + rts +*-------------------------------------- +LIB.YAOut dec pStack + >PUSHYA + ldy #S.PS.hStdOut + lda (pPS),y + ldy #2 + sta (pStack),y + >SYSCALL fputs + rts +*-------------------------------------- + .INB usr/src/lib/libtui.s.obj + .INB usr/src/lib/libtui.s.lbox + .INB usr/src/lib/libtui.s.scrn + .INB usr/src/lib/libtui.s.tbox *-------------------------------------- CS.END *-------------------------------------- LibCnt .BS 1 hLineBuf .BS 1 +LineBuf .BS 2 *-------------------------------------- ESC.In .AS "DBAC" -ESC.Out .HS 080A0B15 +ESC.Out .DA #C.BS,#C.LF,#C.VT,#C.FS *-------------------------------------- FMT.ESCCSI.R .AZ "%d;%d" *-------------------------------------- -SEQ.TERMCAP .DA #C.ESC +OBJ.SIZES .DA S.SCRN,S.TBOX,S.LBOX +*-------------------------------------- +OBJ.COLORS .DA #93,#44 SCRN + .DA #93,#104 TBOX + .DA #93,#104 LBOX +*-------------------------------------- +SEQ.INIT .DA #C.ESC + .AS "c" FF + .DA #C.ESC .AS "[999;999H" Set Cursor Pos to 999,999 .DA #C.ESC - .AZ "[6n" then query Cursor Pos -SEQ.INIT .AS "\ec\e(B\e)0" -SEQ.SCROLLRGN .AZ "\e[?7l\e[2;%dr" -SEQ.SCROLLCURUP .AS "\e[?7l\e[%d;%dr" -SEQ.SCROLLUP .AZ "\eD" -SEQ.SCROLLCURDN .AS "\e[?7l\e[%d;%dr" -SEQ.SCROLLDN .AZ "\eM" -SEQ.CLOSE .AZ "\ec" + .AS "[6n" then query Cursor Pos + .DA #C.ESC + .AS "(B" font select + .DA #C.ESC + .AS ")0" font select + .DA #C.ESC + .AS "[?7l" Disable Line Wrap + .DA #C.ESC + .AS "[?25l" Hide Cursor + .DA #0 +*-------------------------------------- +SEQ.GOTOXY .AZ "\e[%d;%dH" +*-------------------------------------- +SEQ.COLOR .AZ "\e[%d;%dm" +*-------------------------------------- +SEQS .EQ * +*-------------------------------------- +SEQ.CURON .DA #C.ESC + .AS "[?25h" Show Cursor + .DA #0 +SEQ.CUROFF .DA #C.ESC + .AS "[?25l" Hide Cursor + .DA #0 +*-------------------------------------- +SEQ.BAR .DA #C.ESC + .AS "[1m" BOLD + .DA #C.ESC + .AS "[7m" INVERSE + .DA #C.ESC + .AS "[37;40m" + .DA #0 +SEQ.BAREND .DA #C.ESC + .AS "[0m" + .DA #0 +*-------------------------------------- +SEQ.BORDERTL .DA #C.SO,#'l' + .DA #0 +SEQ.BORDERTR .DA #C.SO,#'k',#C.SI + .DA #0 +SEQ.BORDERBL .DA #C.SO,#'m' + .DA #0 +SEQ.BORDERBR .DA #C.SO,#'j',#C.SI + .DA #0 +*SEQ.BORDERH .DA #C.SO,#'q',#C.SI +* .DA #0 +SEQ.BORDERV .DA #C.SO,#'x',#C.SI + .DA #0 +SEQ.INVERSE .DA #C.ESC + .AS "[7m" + .DA #0 +SEQ.NORMAL .DA #C.ESC + .AS "[0m" + .DA #0 +*-------------------------------------- +*SEQ.SCROLLCURUP .AS "\e[?7l\e[%d;%dr" +*SEQ.SCROLLUP .AZ "\eD" +*SEQ.SCROLLCURDN .AS "\e[?7l\e[%d;%dr" +*SEQ.SCROLLDN .AZ "\eM" +*-------------------------------------- +SEQ.CLOSE .DA #C.ESC + .AS "c" + .DA #C.ESC + .AZ "[?7h" Enable Line Wrap *-------------------------------------- MAN SAVE usr/src/lib/libtui.s diff --git a/SBIN/NETWORKD.S.txt b/SBIN/NETWORKD.S.txt index 1aad9e23..a3de9962 100644 --- a/SBIN/NETWORKD.S.txt +++ b/SBIN/NETWORKD.S.txt @@ -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 diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index eaa832ca..e060fe45 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -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) diff --git a/SYS/KERNEL.S.TERMX.txt b/SYS/KERNEL.S.TERMX.txt index 0a208642..2b294af0 100644 --- a/SYS/KERNEL.S.TERMX.txt +++ b/SYS/KERNEL.S.TERMX.txt @@ -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 diff --git a/SYS/KM.RAMWORKS.S.txt b/SYS/KM.RAMWORKS.S.txt index 83ea1590..5586f10b 100644 --- a/SYS/KM.RAMWORKS.S.txt +++ b/SYS/KM.RAMWORKS.S.txt @@ -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 diff --git a/SYS/KM.VSDRIVE.S.txt b/SYS/KM.VSDRIVE.S.txt index b36ff827..05dfbc67 100644 --- a/SYS/KM.VSDRIVE.S.txt +++ b/SYS/KM.VSDRIVE.S.txt @@ -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