From d4568be29989c757f0727df1b0b74d7fea54c955 Mon Sep 17 00:00:00 2001 From: burniouf Date: Sun, 18 Jun 2023 09:47:28 +0200 Subject: [PATCH] Post 2600 fix #2: new X?.STRESC shared code, IRQ fix, IPCONFIG.... --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/AARP.S.txt | 14 ++-- BIN/HMACMD5.S.txt | 2 +- BIN/IPCONFIG.S.DHCP.txt | 22 +++--- BIN/IPCONFIG.S.txt | 13 ++-- BIN/SEQ.S.txt | 43 ++++++---- SBIN/INITD.S.txt | 4 +- SHARED/X.STRESC.G.txt | 14 ++++ SHARED/X.STRESC.S.txt | 164 +++++++++++++++++++++++++++++++++++++++ SYS/KERNEL.S.IRQ.txt | 21 +++-- 10 files changed, 241 insertions(+), 56 deletions(-) create mode 100644 SHARED/X.STRESC.G.txt create mode 100644 SHARED/X.STRESC.S.txt diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index e23463c55cc8f99274e7c150bd0e4a5cb155ceda..d1354307b2f1eb9df30a3221f709dbf835425f3e 100644 GIT binary patch delta 21867 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 NZ@@p)31NT={y%qIuBHG0 delta 19604 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\r\n" - .AS " -D : Try to get IP address from DHCP\r\n" - .AS " -E : Read ETC files\r\n" - .AZ " -S : Set/Reset TCPIP configuration (-E, then -D if required)\r\n" +MSG.USAGE .CS "Usage : IPCONFIG \r\n" + .CS " -D : Try to get IP address from DHCP\r\n" + .CS " -E : Read ETC files\r\n" + .CZ " -S : Set/Reset TCPIP configuration (-E, then -D if required)\r\n" *-------------------------------------- MSG.NODEV .AZ "TCP/IP not bound to any device." *-------------------------------------- diff --git a/BIN/SEQ.S.txt b/BIN/SEQ.S.txt index 738428db..7540137f 100644 --- a/BIN/SEQ.S.txt +++ b/BIN/SEQ.S.txt @@ -26,13 +26,11 @@ NEW *\------------------------------------- .INB inc/macros.i .INB inc/a2osx.i - *-------------------------------------- * Defines / Consts *-------------------------------------- DIR_INCREMENT .EQ 1 DIR_DECREMENT .EQ 0 - *-------------------------------------- * Zero Page Segment, up to 32 bytes *-------------------------------------- @@ -53,6 +51,13 @@ bString .BS 1 ; flag that the string -s option was spe ZPPtrString .BS 2 ; pointer to string -s string bTerminating .BS 1 ; flag that the terminating -t option was specified ZPPtrTerm .BS 2 ; pointer to terminating -t string +*-------------------------------------- +* X.STRESC +*-------------------------------------- +*ZPPtr1 .BS 2 +ZPPtr2 .BS 2 +ZPTmpByte .BS 1 +*-------------------------------------- ZS.END .ED *-------------------------------------- * File Header (16 Bytes) @@ -240,14 +245,12 @@ CS.RUN *-------------------------------------- CS.DOEVENT sec ; we don't use this since we don't have timer events rts - *-------------------------------------- * Called once, when RUN exited with CS * Put code for unloading LIB here *-------------------------------------- CS.QUIT clc ; nothing to do on exit except clear carry and return rts - *-------------------------------------- * CheckOpt assumes a set ZPPtr1 which is the address of the command line argument being examined. * We start at 1 to look past the '-' as position 0 since that was checked by the caller. @@ -293,9 +296,8 @@ CS.DoSeq >SYSCALL PrintF ; print the current seq count. *--- Print the string sepators -------- - >PUSHW ZPPtrString - >PUSHBI 0 - >SYSCALL PrintF ; print string separator + >LDYA ZPPtrString + jsr CS.PrintFEscYA ; print string separator lda Direction ; check which direction we're counting cmp #DIR_INCREMENT ; going up? @@ -344,30 +346,34 @@ CS.DoSeq *--- Done with sequence, finish up ---- .9 - >PUSHW ZPPtrTerm ; set up terminating string - >PUSHBI 0 - >SYSCALL PrintF ; print terminating string + >LDYA ZPPtrTerm ; set up terminating string + jsr CS.PrintFEscYA ; print terminating string rts ; done with SEQ! * TODO: negatives in incr shouldn't be allowed. - - +*-------------------------------------- +CS.PrintFEscYA jsr X.STRESC + >PUSHYA + >PUSHBI 0 + >SYSCALL PrintF + rts *-------------------------------------- * CS.DetermineDir - checks that increment value in relation +/- to * wFirst / wLast, and then sets the Direction flag. *-------------------------------------- CS.DetermineDir jsr CS.CmpFirstLast ; compare first/last values bcc .1 ; if first < last, then we're counting forward + lda #DIR_INCREMENT jmp .2 + .1 lda #DIR_DECREMENT + .2 sta Direction ; set the direction rts ; and return to caller. - - *-------------------------------------- * CS.CmpFirstLast - compares wFirst to wLast value and sets carry based on * if wFirst greater than or equal to wLast, or clear carry @@ -381,6 +387,7 @@ CS.CmpFirstLast >PUSHW wFirst ; using FPU macro, so push first, >FPU iGE lda (pStack) ; get result from stack bne .1 ; yes, wFirst is >= wLast + >POP 2 ; wFirst < wLast sec ; return to caller with carry set rts @@ -388,8 +395,8 @@ CS.CmpFirstLast >PUSHW wFirst ; using FPU macro, so push first, .1 >POP 2 ; wFirst is >= wLast clc ; return to caller with carry clear rts - - +*-------------------------------------- + .INB usr/src/shared/x.stresc.s *-------------------------------------- CS.END *-------------------------------------- @@ -400,11 +407,13 @@ MSG.USAGE .CS "Usage : SEQ [options] [first [incr]] last\r\n" MSG.MSG.NEWLINE .CZ "\r\n" *-------------------------------------- FMT.FORMAT .AZ "%I" -FMT.STRING .AZ "\r\n" +FMT.STRING .CZ "\r\n" FMT.TERM .AZ "" *-------------------------------------- OptionList .AS "FfSsTtHh" OptionVars .DA #bFormat,#bFormat,#bString,#bString,#bTerminating,#bTerminating,#bHelp,#bHelp +*-------------------------------------- + .INB usr/src/shared/x.stresc.g *-------------------------------------- * Per Process DATA segment (0 filled before INIT) *-------------------------------------- diff --git a/SBIN/INITD.S.txt b/SBIN/INITD.S.txt index bbb93d7b..9c861872 100644 --- a/SBIN/INITD.S.txt +++ b/SBIN/INITD.S.txt @@ -71,8 +71,6 @@ CS.RUN .DO INITDDBG=1 cmp #1 bne .9 -* bra .55 - ldy #S.PS.hStdIn lda (pPS),y >SYSCALL FEOF @@ -87,7 +85,7 @@ CS.RUN .DO INITDDBG=1 cmp #18 CTRL-R for Root mode bne .1 -.55 >LDYA L.MSG.CTRLR + >LDYA L.MSG.CTRLR >SYSCALL PutS ldx #0 diff --git a/SHARED/X.STRESC.G.txt b/SHARED/X.STRESC.G.txt new file mode 100644 index 00000000..43bab304 --- /dev/null +++ b/SHARED/X.STRESC.G.txt @@ -0,0 +1,14 @@ +NEW + AUTO 3,1 +*-------------------------------------- +X.STRESC.EscChars + .AS "abefnrtv" + .HS 5C27223F \'"? +X.STRESC.EscCharsCnt .EQ *-X.STRESC.EscChars +X.STRESC.EscCodes + .HS 07081B0C0A0D090B + .HS 5C27223F +*-------------------------------------- +MAN +SAVE usr/src/shared/x.stresc.g +ASM diff --git a/SHARED/X.STRESC.S.txt b/SHARED/X.STRESC.S.txt new file mode 100644 index 00000000..48559c48 --- /dev/null +++ b/SHARED/X.STRESC.S.txt @@ -0,0 +1,164 @@ +NEW + AUTO 3,1 +*-------------------------------------- +* +* +* +*-------------------------------------- +X.STRESC >STYA ZPPtr1 In + >STYA ZPPtr2 Out + + ldy #0 + +.1 lda (ZPPtr1) + beq .8 + + jsr X.STRESC.IncPtr1 + + cmp #'\' + bne .6 + + lda (ZPPtr1) + beq .7 + + ldx #X.STRESC.EscCharsCnt-1 + +.2 cmp X.STRESC.EscChars,x + beq .5 + + dex + bpl .2 + + stz ZPTmpByte + + jsr X.STRESC.ToUC + cmp #'X' + bne .3 + +.20 jsr X.STRESC.IncPtr1 + + lda (ZPPtr1) + beq .40 + + jsr X.STRESC.IsHex + bcs .40 + + asl ZPTmpByte + asl ZPTmpByte + asl ZPTmpByte + asl ZPTmpByte + ora ZPTmpByte + sta ZPTmpByte + bra .20 + +.3 jsr X.STRESC.IsOct + bcs .40 + + jsr X.STRESC.IncPtr1 + + asl ZPTmpByte + asl ZPTmpByte + asl ZPTmpByte + ora ZPTmpByte + sta ZPTmpByte + lda (ZPPtr1) + bne .3 + +.40 lda ZPTmpByte + bra .6 + +.4 tax + + lda #'\' + sta (ZPPtr2),y + iny + + txa + bra .6 + +.5 lda X.STRESC.EscCodes,x + jsr X.STRESC.IncPtr1 + +.6 sta (ZPPtr2),y + iny + bra .1 + +.7 lda #'\' + sta (ZPPtr2),y + iny + lda #0 + +.8 sta (ZPPtr2),y + + >LDYA ZPPtr2 + + rts +*-------------------------------------- +X.STRESC.IncPtr1 + inc ZPPtr1 + bne .8 + + inc ZPPtr1+1 + +.8 rts +*-------------------------------------- +X.STRESC.ToUC cmp #'a' + bcc .8 + + cmp #'z'+1 + bcs .8 + + eor #$20 + +.8 rts +*-------------------------------------- +X.STRESC.IsOct cmp #'0' + bcc .9 + + cmp #'7'+1 + bcs .9 + + and #%00000111 + + clc + rts + +.9 sec + rts +*-------------------------------------- +X.STRESC.IsHex cmp #'0' + bcc .9 + + cmp #'9'+1 + bcc .8 + + cmp #'A' + bcc .9 + + cmp #'Z'+1 + bcc .7 + + cmp #'a' + bcc .9 + + cmp #'z'+1 + bcc .9 + +* sec + + sbc #$20 + +.7 sec + sbc #'A'-10 + +.8 and #$0F + + clc + rts + +.9 sec + rts +*-------------------------------------- +MAN +SAVE usr/src/shared/x.stresc.s +ASM diff --git a/SYS/KERNEL.S.IRQ.txt b/SYS/KERNEL.S.IRQ.txt index 543643c7..bb48bb35 100644 --- a/SYS/KERNEL.S.IRQ.txt +++ b/SYS/KERNEL.S.IRQ.txt @@ -10,7 +10,7 @@ NEW * if A2osX Drivers cannot clear IRQ, * must call regular System Handler *-------------------------------------- -*MSLOT .EQ $7f8 +MSLOT .EQ $7f8 *-------------------------------------- *IRQ.BRK jmp IRQ.6 *-------------------------------------- @@ -39,8 +39,8 @@ IRQ.Handler cld pha sta CLRWRITEAUX Driver may R/W in screen holes -* lda MSLOT Save MSLOT -* pha + lda MSLOT Save MSLOT + sta IRQ.2+2 * lda RDCXROM C100-C7ff state * pha @@ -57,17 +57,16 @@ IRQ.JSR jsr CORE.IRQ.DEV SELF MODIFIED *.3 sta $C000,x -* pla Get back MSLOT -* sta MSLOT -* sta IRQ.2+2 + lda IRQ.2+2 Get back MSLOT + sta MSLOT -* and #$F0 -* eor #$C0 ....mmm...not looking like Cn.... -* bne IRQ.3 + and #$F0 + eor #$C0 ....mmm...not looking like Cn.... + bne IRQ.3 -* sta CLRC8ROM Release $C800 + sta CLRC8ROM Release $C800 -*IRQ.2 lda $ff00 SELF MODIFIED +IRQ.2 lda $ff00 SELF MODIFIED IRQ.3 pla Must keep Carry bpl .1