From 454ecb29a80c380632cc663d38a0fd45eb2a90b0 Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Mon, 16 Dec 2019 08:25:58 -0800 Subject: [PATCH] Improve indent/undent and toggle gutter view. Additional compiler stats --- README.md | 2 +- doc/Editor.md | 17 ++-- doc/Version 2.0.md | 6 +- images/apple/PLASMA2-BLD.PO | Bin 143360 -> 143360 bytes images/apple/PLASMA2-SYS.PO | Bin 143360 -> 143360 bytes images/apple/PLASMA2.2mg | Bin 819264 -> 819264 bytes src/toolsrc/ed.pla | 195 ++++++++++++++++++++++-------------- 7 files changed, 132 insertions(+), 88 deletions(-) diff --git a/README.md b/README.md index 1538bbe..74aa20c 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# 12/14/2019 PLASMA 2.0 Developer Preview 1ED Available! +# 12/16/2019 PLASMA 2.0 Developer Preview 1 E+C Available! [Download and read the Release Notes](https://github.com/dschmenk/PLASMA/blob/master/doc/Version%202.0.md) # 4/29/2018 PLASMA 1.2 Available! diff --git a/doc/Editor.md b/doc/Editor.md index 5ec5e87..115fbb9 100644 --- a/doc/Editor.md +++ b/doc/Editor.md @@ -83,7 +83,7 @@ EDIT COMMANDS: APPLE ][, UPPER AND LOWER CASE ENTRY WORKS AS EXPECTED. - ESC T = FORCE LOWER-CASE CHARS + ESC T C = FORCE LOWER-CASE CHARS If you have a lower-case character generator installed, you can force @@ -98,11 +98,12 @@ EDIT COMMANDS: The 'SOLID-APPLE' key will modify theese keys: - SA-RETURN = OPEN LINE + SA-RETURN = OPEN FOLLOWING LINE SA-LEFT ARROW = JUMP LEFT SA-RIGHT ARROW = JUMP RIGHT SA-UP ARROR = JUMP UP SA-DOWN ARROW = JUMP DOWN + SA-TAB = DETAB Apple /// FEATURES: ------------------- @@ -111,11 +112,12 @@ EDIT COMMANDS: these keys: OA-\ = DELETE CHAR LEFT - OA-RETURN = OPEN LINE + OA-RETURN = OPEN FOLLOWING LINE OA-LEFT ARROW = JUMP LEFT OA-RIGHT ARROW = JUMP RIGHT OA-UP ARROR = JUMP UP OA-DOWN ARROW = JUMP DOWN + OA-TAB = DETAB On the keypad, 'OPEN-APPLE' allows the keys for navigation and misc: @@ -129,9 +131,9 @@ EDIT COMMANDS: OA-7 = JUMP BEGIN OA-1 = JUMP END OA-5 = DELETE CHAR - OA-- = DELETE/CUT LI - OA-0 = COPY DELETED LINE - OA-ENTER = OPEN NEW LINE + OA-- = CUT SELECTION INTO CLIPBOARD + OA-0 = PASTE CLIPBOARD + OA-ENTER = OPEN FOLLOWING LINE OA-. = TOGGLE INSERT/OVERWRITE COMMAND MODE: @@ -147,7 +149,8 @@ COMMAND MODE: P = SET PREFIX H [SLOT] = HARDCOPY TO DEVICE IN SLOT (DEFAULT 1) N = CLEAR TEXT IN MEMORY - T = TOGGLE LOWER-CASE SUPPORT (APPLE ][) + T G = TOGGLE GUTTER VIEW + T C = TOGGLE LOWER-CASE SUPPORT (APPLE ][) G = GO TO LINE # F [STRING] = FIND STRING E = EDIT MODE diff --git a/doc/Version 2.0.md b/doc/Version 2.0.md index 6a60943..2fd0945 100644 --- a/doc/Version 2.0.md +++ b/doc/Version 2.0.md @@ -1,4 +1,4 @@ -# PLASMA Version 2.0 Developer Preview 1ED +# PLASMA Version 2.0 Developer Preview 1 E+C Welcome to PLASMA: the Grand Unifying Platform for the Apple 1, ][, and ///. @@ -102,9 +102,9 @@ There is a [YouTube playlist](https://www.youtube.com/playlist?list=PLlPKgUMQbJ7 - The documentation is sparse and incomplete. Yep, could use your help... -# Changed in PLASMA for 2.0 DP 1ED +# Changed in PLASMA for 2.0 DP 1 E+C -1. Greatly improved code editor +1. Greatly improved code editor and additional compiler stats # Changed in PLASMA for 2.0 DP 1a diff --git a/images/apple/PLASMA2-BLD.PO b/images/apple/PLASMA2-BLD.PO index e12a48fe5b27125803f391ed0d0d12c294631a44..12ea5b6e22dca593d319b33c5d94621e85e49edb 100644 GIT binary patch delta 13990 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 delta 14005 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 Gj{gUQsYOBn diff --git a/images/apple/PLASMA2-SYS.PO b/images/apple/PLASMA2-SYS.PO index 71302a9a62bc706e8ecc8f3f6afb0d454477fb64..6b77b064223b88a743eeb574e17e2150ff717127 100755 GIT binary patch delta 10002 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 bZw>rg1OL{*zcui04gCMrz?#C0Y~}v|Ks5{7 diff --git a/src/toolsrc/ed.pla b/src/toolsrc/ed.pla index b3509f9..633d200 100755 --- a/src/toolsrc/ed.pla +++ b/src/toolsrc/ed.pla @@ -51,6 +51,8 @@ const keyctrlw = $97 const keyctrlx = $98 const keyctrly = $99 const keyctrlz = $9A +const keytab = keyctrli +const keydetab = $9D const keydelete = $FF // // Data and text buffer constants @@ -64,18 +66,21 @@ const MAXSTRPLSIZE = $8000 const pgjmp = 16 const changed = 1 const insmode = 2 -const showcurs = 4 +const gutter = 4 const uppercase = 8 const selection = 16 +const showcurs = 32 const shiftlock = 128 // // Text screen row address array // -const scrnwidth = 35 -const scrnheight = 23 -word txtscrn = $0404,$0484,$0504,$0584,$0604,$0684,$0704,$0784 -word = $042C,$04AC,$052C,$05AC,$062C,$06AC,$072C,$07AC -word = $0454,$04D4,$0554,$05D4,$0654,$06D4,$0754,$07D4 +const scrnheight = 24 +const scrnbottom = 23 +word scrnwidth = 36 +word scrnright = 35 +word txtscrn = $0400,$0480,$0500,$0580,$0600,$0680,$0700,$0780 +word = $0428,$04A8,$0528,$05A8,$0628,$06A8,$0728,$07A8 +word = $0450,$04D0,$0550,$05D0,$0650,$06D0,$0750,$07D0 // // Editor variables // @@ -466,16 +471,16 @@ def drawrow(row, ofst, strptr)#0 byte numchars word scrnptr - scrnptr = txtscrn[row] + scrnptr = txtscrn[row] + (flags & gutter) if ofst >= ^strptr numchars = 0 else numchars = ^strptr - ofst fin - if numchars >= 36 - numchars = 36 + if numchars >= scrnwidth + numchars = scrnwidth else - memset(scrnptr + numchars, $A0A0, 36 - numchars) + memset(scrnptr + numchars, $A0A0, scrnwidth - numchars) fin memcpy(scrnptr, strptr + ofst + 1, numchars) end @@ -491,7 +496,7 @@ def drawgutter(scrnrow, ofst)#0 huns, tens = divmod(scrnrow + 1, 100) tens, ones = divmod(tens, 10) for row = 0 to 23 - scrnptr = txtscrn[row] - 4 + scrnptr = txtscrn[row] if scrnrow < numlines if flags & selection and (scrnrow >= selrow and scrnrow <= cursrow) or (scrnrow >= cursrow and scrnrow <= selrow) hilite = $00 @@ -545,38 +550,41 @@ def drawgutter(scrnrow, ofst)#0 next end def drawscrn(toprow, ofst)#0 - byte row, numchars + byte row, numchars, lofst word strptr, scrnptr - drawgutter(toprow, ofst) + lofst = flags & gutter + if lofst + drawgutter(toprow, ofst) + fin // // Draw text // if ofst for row = 0 to 23 strptr = txtlinbuf=>[toprow + row] - scrnptr = txtscrn[row] + scrnptr = txtscrn[row] + lofst if ofst >= ^strptr numchars = 0 else numchars = ^strptr - ofst fin - if numchars >= 36 - numchars = 36 + if numchars >= scrnwidth + numchars = scrnwidth else - memset(scrnptr + numchars, $A0A0, 36 - numchars) + memset(scrnptr + numchars, $A0A0, scrnwidth - numchars) fin memcpy(scrnptr, strptr + ofst + 1, numchars) next else for row = 0 to 23 strptr = txtlinbuf=>[toprow + row] - scrnptr = txtscrn[row] + scrnptr = txtscrn[row] + lofst numchars = ^strptr - if numchars >= 36 - numchars = 36 + if numchars >= scrnwidth + numchars = scrnwidth else - memset(scrnptr + numchars, $A0A0, 36 - numchars) + memset(scrnptr + numchars, $A0A0, scrnwidth - numchars) fin memcpy(scrnptr, strptr + 1, numchars) next @@ -587,23 +595,29 @@ def cursoff#0 if flags & showcurs ^cursptr = underchr - scrnptr = txtscrn[cursy] - 4 - *scrnptr = *scrnptr | $8080 - ^(scrnptr+2) = ^(scrnptr+2) | $80 + if flags & gutter + scrnptr = txtscrn[cursy] + *scrnptr = *scrnptr | $8080 + ^(scrnptr+2) = ^(scrnptr+2) | $80 + fin flags = flags & ~showcurs fin end def curson#0 + byte lofst word scrnptr if !(flags & showcurs) - cursptr = txtscrn[cursy] + cursx + lofst = flags & gutter + if lofst + scrnptr = txtscrn[cursy] + *scrnptr = *scrnptr & $7F7F + ^(scrnptr+2) = ^(scrnptr+2) & $7F + fin + cursptr = txtscrn[cursy] + lofst + cursx underchr = ^cursptr ^cursptr = curschr - scrnptr = txtscrn[cursy] - 4 - *scrnptr = *scrnptr & $7F7F - ^(scrnptr+2) = ^(scrnptr+2) & $7F flags = flags | showcurs fin end @@ -630,9 +644,9 @@ def curshpos(hpos)#1 if hpos > MAXLNLEN; hpos = MAXLNLEN; fin curscol = hpos cursx = curscol - scrnleft - if cursx > scrnwidth - cursx = scrnwidth - scrnleft = curscol - scrnwidth + if cursx > scrnright + cursx = scrnright + scrnleft = curscol - scrnright elsif cursx < 0 cursx = 0 scrnleft = curscol @@ -649,9 +663,9 @@ def cursvpos(vpos)#1 if vpos > numlines - 1; vpos = numlines - 1; fin cursrow = vpos cursy = cursrow - scrntop - if cursy > scrnheight - cursy = scrnheight - scrntop = cursrow - scrnheight + if cursy > scrnbottom + cursy = scrnbottom + scrntop = cursrow - scrnbottom elsif cursy < 0 cursy = 0 scrntop = cursrow @@ -770,10 +784,10 @@ def cursright#0 if curscol < MAXLNLEN cursoff curscol++ - if cursx < scrnwidth + if cursx < scrnright cursx++ else - scrnleft = curscol - scrnwidth + scrnleft = curscol - scrnright drawscrn(scrntop, scrnleft) fin curson @@ -793,12 +807,12 @@ end // // Find string in text // -def findline(strptr)#1 +def findline(strptr, start)#1 byte upstr[MAXLNLEN+1], scan, i if ^strptr >= findstr lnupcpy(@upstr, strptr) - for scan = 1 to upstr - findstr + 1 + for scan = start to upstr - findstr + 1 if upstr[scan] == findstr[1] for i = 2 to findstr if upstr[scan + i - 1] <> findstr[i] @@ -820,8 +834,11 @@ def findtxt#0 // // Search from current pos to end // + if findline(txtlinbuf=>[cursrow], curscol + 2) + return + fin for f = cursrow + 1 to numlines - 1 - if findline(txtlinbuf=>[f]) + if findline(txtlinbuf=>[f], 1) cursvpos(f) return fin @@ -830,7 +847,7 @@ def findtxt#0 // Search from beginning to current pos // for f = 0 to cursrow - if findline(txtlinbuf=>[f]) + if findline(txtlinbuf=>[f], 1) cursvpos(f) return fin @@ -891,7 +908,9 @@ def keyin3 key = keyctrlz; break is keyenter key = keyctrlf; break - is $80 | '\\' + is keytab + key = keydetab; break + is $80 | '\\' key = keydelete; break // Delete // // Map OA+keypad @@ -943,6 +962,8 @@ def keyin2e key = keyctrlz; break is keyenter key = keyctrlf; break + is keytab + key = keydetab; break wend fin return key @@ -981,6 +1002,11 @@ def keyin2 key = keydelete fin break + is keyarrowright + if ^pushbttn3 < 128 + key = keytab + fin + break otherwise if key >= $C0 and flags < shiftlock if ^pushbttn3 < 128 @@ -1014,9 +1040,6 @@ def setkeyin#0 keyin = @keyin2 wend end -def tabkeyin - return curscol < MAXLNLEN and curscol & $01 ?? keyspace :: 0 -end // // Printer routines // @@ -1266,19 +1289,19 @@ def editline(key) repeat if key >= keyspace if key == keydelete - if curscol > 0 - if curscol <= editstr - memcpy(@editstr[curscol], @editstr[curscol + 1], editstr - curscol) - editstr-- - fin + if curscol > 0 + if curscol <= editstr + memcpy(@editstr[curscol], @editstr[curscol + 1], editstr - curscol) + editstr-- + fin cursoff - if curshpos(curscol - 1) + if curshpos(curscol - 1) drawscrn(scrntop, scrnleft) else drawrow(cursy, scrnleft, @editstr) fin - curson - fin + curson + fin elsif curscol < MAXLNLEN curscol++ if flags & insmode @@ -1412,27 +1435,29 @@ def editmode#0 joinline redraw break - is keyctrli - if flags & selection - if flags & insmode - indentsel - else - undentsel - fin - else - keyin = @tabkeyin - editline(keyspace) - setkeyin - fin + is keytab + if flags & insmode + indentsel + else + undentsel + fin + if not (flags & selection) + cursoff + autoindent(txtlinbuf=>[cursrow]) + curson + fin + break + is keydetab + undentsel + if not (flags & selection) + cursoff + autoindent(txtlinbuf=>[cursrow]) + curson + fin break is keyctrly - if flags & insmode - flags = flags & ~insmode - curschr = ' ' - else - flags = flags | insmode - curschr = '+' - fin + flags = flags ^ insmode + curschr = flags & insmode ?? '+' :: ' ' break is keyescape if MACHID == $F2 // Apple 3 @@ -1552,11 +1577,27 @@ def cmdmode#0 findtxt return is 'T' // Toggle upper/lower case display - if flags & uppercase - txtlower - else - txtupper - fin + if ^cmdptr + when toupper(^(cmdptr + 1)) + is 'G' // Gutter view + flags = flags ^ gutter + if flags & gutter + scrnwidth = 36 + scrnright = 35 + else + scrnwidth = 40 + scrnright = 39 + fin + break + is 'C' // Lower case chip (Apple ][/][+ only) + if flags & uppercase + txtlower + else + txtupper + fin + break + wend + fin return is 'G' // Goto line # line = strtonum(cmdptr) @@ -1640,7 +1681,7 @@ if ^arg readtxt(@filename, 0) fin curschr = '+' -flags = flags | insmode +flags = flags | insmode | gutter drawscrn(scrntop, scrnleft) curson editmode