6502.org Forum  Projects  Code  Documents  Tools  Forum
It is currently Sat Nov 16, 2024 7:41 pm

All times are UTC




Post new topic Reply to topic  [ 18 posts ]  Go to page 1, 2  Next
Author Message
PostPosted: Sun Dec 01, 2019 7:02 pm 
Offline

Joined: Tue Nov 10, 2015 5:46 am
Posts: 230
Location: Kent, UK
I've been using an X Windows environment exclusively since around '88. An xterm, monochrome vi without syntax highlighting, make, and command line tools.

I've tried various IDEs over the years (MS Visual Studio, Apple X Code, Eclipse), but I don't find them preferable. I run a whole screen full of xterms with no decorations just a one pixel border. No titlebar, no menubar. I know what each window is by its contents, and my screen can look like a jumbled mess with partially overlapping xterms everywhere... Mouse has focus (no clicking), F1 to foreground, F2 to background. It's a flow and speed I operate at that has been honed over 30 years.

I work exclusively on Linux, whether I get there via VNC on a Windows laptop or Macbook, or local VM. I use git for version control.

What does development in 2019 look like for you, and how did you find the environment that works for you?


Top
 Profile  
Reply with quote  
PostPosted: Sun Dec 01, 2019 11:21 pm 
Offline
User avatar

Joined: Tue Mar 02, 2004 8:55 am
Posts: 996
Location: Berkshire, UK
I mostly work under Windows. I use Notepad++ to edit assembly code and view listings. I use batch files to kick off Microsoft make with a makefile that either uses WDC's tools or my own assembler to create binary or S19/28 files.

_________________
Andrew Jacobs
6502 & PIC Stuff - http://www.obelisk.me.uk/
Cross-Platform 6502/65C02/65816 Macro Assembler - http://www.obelisk.me.uk/dev65/
Open Source Projects - https://github.com/andrew-jacobs


Top
 Profile  
Reply with quote  
PostPosted: Mon Dec 02, 2019 12:33 am 
Offline
User avatar

Joined: Sat Dec 01, 2018 1:53 pm
Posts: 730
Location: Tokyo, Japan
My environment is almost exactly identical to what you described, sark02, though honed over only 25 years. It's nice to know that I'm not alone.

The one difference is that I go for the bling: I use title bars. :-) More seriously, I find them useful for more quickly identifying which window has the focus after I've switched desktops (I have F1-F12 bound to switch to fvwm2 desktops 1 through 12) and for displaying status information: hostname, SSH key agent status, current working directory and an optional name for the window (typically "edit," "build," "doc" etc. which allows me to find it quickly in the window switch menu on those occasions where I use it). This allows me to keep my shell prompt very clean (just the exit code of the most recent command, if non-zero, followed by a `$`) and it's still easily visible near the prompt in most cases because my title bar is at the bottom of the window.

I use Thinkpad keyboards (both on laptops and in their stand-alone version) becuase the TrackPoint on the home row, while not as accurate as a mouse (which I often use in addition), makes it very quick to change focus between windows. I also use the Japanese layout, which offers several extra keys; the ones on either side of the space bar I press with my thumbs and are bound to the window list menu (shifted for windows on all desktops), window ops menu (with many shortcuts for, e.g., moving a window to a specific position or another desktop, maximizing in the vertical direction only, setting window width or height to specific value, etc.) and "system" menu for starting applications and the like (used most often for opening new terminals, which takes just two keystrokes).

Some consideration of what I've ended up with in this area and discussion with proponents of tiling window managers has brought me to the conclusion that for most tiling window manager users the valuable part is not the tiling but having easy, short key sequences for managing the appearance/disappearance and location of windows. I now feel that a stacking WM, if given similar keystroke features, is clearly superior because (if configurable and configured correctly) it can give you all of that without forcing window size changes in order to change what you're viewing. It's often useful to be able to see a just bit of a large window (say, the left twenty characters of one scrolling a log file) without it wrapping the lines at a ridiculously short length; when you need to see the whole window you can just bring it to the top (two keystrokes), read what you need, and send it back to the bottom again when done.

You can find my fvwm and lots of other desktop/GUI config in the cjsdesktop repo for my "dot-home" system.
___________________________________________________

This thread might be better termed "preferred desktop environment" if intended to be limited to that; on reading the title I'd assumed it was about what development tools one uses. In that area I avoid IDEs (they're too difficult to program in more than the most trivial ways, and tend to waste screen real-estate) and stick with vim and a Bash command line. My build/test scripts can get pretty sophisticated and generally offer specific options for easily selecting exactly what I want to test so that I can keep my edit/test cycle as short as possible. I'm a total convert to pytest for unit tests because they instrument the AST automatically to show you intermediate values and also automatically do "diffs" of large data structures, meaning you can just `assert` any expression and it will deal with taking it apart for you and showing you what bits in it were unexpected, avoiding specialized asert functions and manual work to do that. I even use pytest for unit testing assembly language; my framework (still in the early stages of development, but visible in my [url=https://github.com/0cjs/8bitdev]8bitdev[/ur] repo) allows me to load a binary into an emulator, deposit values using local or global symbols, call a subroutine with specific register values, and then examine and assert the results. Here's an example of a test fixture used to load the binary code and fourteen tests (via parametrization) of a routine that converts an ASCII digit to a binary number, setting the N flag to indicate a bad ASCII char:
Code:
@pytest.fixture
def M():
    M = Machine()
    M.load('.build/obj/bigint')
    return M

@pytest.mark.parametrize('char, num', [
    ('0', 0),  ('1', 1),    ('8', 8),  ('9', 9),
    ('A',10),  ('a',10),    ('F',15),  ('f',15),
    ('G',16),  ('g',16),    ('Z',35),  ('z',35),
    ('_', 40), ('\x7F', 40)
])
def test_convascdigit_good(M, char, num):
    M.call(M.symtab.convascdigit, R(a=ord(char), N=1))
    assert R(a=num, N=0) == M.regs

And here's an example of the output, after deliberately changing one of the tests above to have a wrong expected value:
Code:
$ ./Test src/bigint_test.py -k ascdigit_good
......F........                                                          [100%]
=================================== FAILURES ===================================
_________________________ test_convascdigit_good[F-16] _________________________
src/bigint_test.py:25: in test_convascdigit_good
    assert R(a=num, N=0) == M.regs
E   assert 6502 pc=---- ...sp=-- n------- == 6502 pc=100F ...sp=FF nv--dizC
E     At index 0 diff: None != 4111
E     Full diff:
E     - 6502 pc=---- a=10 x=-- y=-- sp=-- n-------
E     + 6502 pc=100F a=0F x=00 y=00 sp=FF nv--dizC
1 failed, 14 passed, 48 deselected in 0.47s

Note that for the register set objects (constructed with `R` above) I implemented no special support for the test framework: just an equality comparision (ignoring any register/flag values on the left side that were set to `None`, shown as `-` above) and a pretty printer; pytest itself produced the nice diff between the two objects that lets you easily see how your actual values differ from your expected.

Hopefully people will find some of these ideas interesting!
___________________________________________________

Oh, and how did I find all of this? Relentlessly looking for and trying out small improvements over many, many years. If you can't find a problem with your system or ways of working that you can attempt to fix, that in itself is a major problem and will prevent you from ever achieving high productivity. Thinking "I'm not doing it right" is your best friend.

_________________
Curt J. Sampson - github.com/0cjs


Top
 Profile  
Reply with quote  
PostPosted: Mon Dec 02, 2019 9:25 am 
Offline
User avatar

Joined: Wed Feb 14, 2018 2:33 pm
Posts: 1486
Location: Scotland
sark02 wrote:
I've been using an X Windows environment exclusively since around '88. An xterm, monochrome vi without syntax highlighting, make, and command line tools.

......

What does development in 2019 look like for you, and how did you find the environment that works for you?


You've basically just described my exact same environment in about the same timeframe.

I dislike colour syntax stuff - parly because I grew up without it and partly as it makes my reading worse (dyslexia). My xterms have a pale yellow background with black letters. I'm currently using xfce4-terminal and use it's multiple tab features. (Email is Alpine in an Xterm, although I do use gui tools for web, irc and some other applications) LaTeX is my preferred 'word processor' but I use Libreoffice occasionally. (spreadsheets)

I had to use MS DevStudio on WinNT for one job. Did not get on with it and that job only lasted a year anyway. I've not touched it since.

I currently use xfce4, before that fvwn2, then fvwm - before that it was Suns stuff, played with their window stuff and OLVWM.

I have auto-raise set on the windows and snap to borders.

-Gordon

Ps. -edit- to say that this is my environment for 6502, ATmega, C or any other thing I'm tasked to write code for. Vim & Makefiles... The code in the ATmega that's part of my Ruby 6502/816 project is all in C, edited via vim and build using a Makefile - I don't do "arudino" from a software point of view, but I sometimes use Arduino hardware.

_________________
--
Gordon Henderson.
See my Ruby 6502 and 65816 SBC projects here: https://projects.drogon.net/ruby/


Last edited by drogon on Mon Dec 02, 2019 4:23 pm, edited 1 time in total.

Top
 Profile  
Reply with quote  
PostPosted: Mon Dec 02, 2019 10:41 am 
Offline
User avatar

Joined: Tue Mar 02, 2004 8:55 am
Posts: 996
Location: Berkshire, UK
For things other than 6502 ...

I use Visual Studio Code to write C++ for my arduino and ESP32 projects.
I use MPLABX for my PIC based stuff in C, C++ and (16F/18F/24F) assembly
I use Visual Studio C++ for general C++ projects
I use Visual Studio C# some of my professional Open Source projects, Eclipse for most of the Java ones and the Spring Tool Suite (an extended Eclipse) for a few.
I've been playing with Kotlin in the Intellij IDE for an experimental work project.
I use an old copy of XML Spy 2005 for all my XML/XSD/XSLT development and Oxygen Author for writing Docbook files.
Everything important is stored in my personal GitHub account where I have 81 projects of which 19 are currently public.

_________________
Andrew Jacobs
6502 & PIC Stuff - http://www.obelisk.me.uk/
Cross-Platform 6502/65C02/65816 Macro Assembler - http://www.obelisk.me.uk/dev65/
Open Source Projects - https://github.com/andrew-jacobs


Top
 Profile  
Reply with quote  
PostPosted: Mon Dec 02, 2019 12:10 pm 
Offline

Joined: Sat Jun 04, 2016 10:22 pm
Posts: 483
Location: Australia
I find that syntax highlighting is like an oscilloscope: if I can get it, it's essential.
I don't like the full-fat Visual Studio for anything, really. It's 10GB, and it forces you to put it on C:, which is a problem when that disk is an SSD. OTOH, I have to admit(somewhat against my will) that VS Code(as distinct from VS proper) is actually pretty good. I find that it's enough of an IDE to be useful(tabs, a degree of Intellisense, built-in terminal, dark mode), but not enough to be obnoxious(no forced project management). I don't have a 'C02 assembly highlighter for it that supports my assembler, and I did with Notepad++, which is what I used to use.
The reason I switched from Notepad++(it's perfectly fine otherwise) is that it's windows-only, and I wanted to be able to use one editor on both Windows and Linux, rather than have to contend with differences between it and gedit/pluma.

My 6502 dev stack currently consists of VS Code, make, and SBASM(the latter two being run under WSL on Windows). SBASM has its issues, but it's the most sensible assembler I've found that doesn't require a linker or attempt to be a C compiler's rear end. None of the C compilers for the 'c02 that I've seen produce efficient code, if it works at all. And since I'm not using a C compiler, or anything particularly big and complex, for now I see a linker as an unnecessary obstacle to getting things done.
I want to replace SBASM eventually, but I'll look at that more properly after I finish Simulieren, as it's good enough for now, and I want a platform to target before I start trying to change up my toolset.
For non-6502 stuff, I also use VS code and make, but a language compiler instead of an assembler. For Arduino stuff, I do go through the Arduino IDE, but I still tend to use an external editor for that.

I don't use unit tests, as nothing I've made so far except Simulieren is complex enough to warrant them, and it's not feasible to make unit tests for Simulieren, because I don't understand the problem well enough. I started out trying to do that, and switched to Klaus' test suite when I realised I didn't know enough to write tests and have them correct.

I prefer the MATE desktop environment when I'm using Linux, mainly because that's what I've become accustomed to. I like playing certain video games, and trying to do that on Linux is more of a chore than it's worth to me, so I keep a Windows machine around, primarily for that purpose. I don't dual-boot; I've tried that and find it to be more annoying than useful, so I keep a seperate machine for Linux, and run WSL on the windows machine.


Top
 Profile  
Reply with quote  
PostPosted: Mon Dec 02, 2019 3:55 pm 
Offline
User avatar

Joined: Tue Mar 05, 2013 4:31 am
Posts: 1385
For the 6502 projects, I've been using the WDC Tools package, albeit an older version which uses a license key. This was purchased back in early 2013 direct from WDC and is running on Windows 7 Pro 64-bit as a virtual machine under VMware Fusion. I also use TIDE as a front end, to assemble and link. I config output for S19 files, which I load into an EEPROM via a Dataman 40Pro.

As I'm running OSX, I use SlickEdit to edit source code and view listing files. I also use Serial (terminal app on OSX) to connect to my 65C02 SBCs via a FTDI USB/UART interface. All source code, etc. are kept in a directory under OSX with a shared drive to the Win7 VM so WDC Tools can access it, i.e., no data is kept in the Win7 VM.

While not an inexpensive development platform, I already had everything else code wise before I started down the 65C02 project path years ago. I just keep up on the rest of the software packages as I use the machine for many other projects as well.

_________________
Regards, KM
https://github.com/floobydust


Top
 Profile  
Reply with quote  
PostPosted: Mon Dec 02, 2019 5:32 pm 
Offline
User avatar

Joined: Thu Dec 11, 2008 1:28 pm
Posts: 10981
Location: England
As a sort of sub-question, to what degree do people use the mouse, and to what degree use keyboard shortcuts?

I really value shortcuts (like alt-tab) which allow me to switch tasks, or switch windows, or switch tabs. I'm not exactly mouse free but there was a time when I might even adjust window sizes using only the keyboard. The reason is that I can usually find the right keys by feel, so if I keep my hands on the keyboard I'm all set. If I have to grab the mouse, I also have to get my hand back to the right place on the keyboard. Those laptops which have no gap between the qwerty section and the number pad are a disaster for me: evidently I use the edges to navigate.


Top
 Profile  
Reply with quote  
PostPosted: Mon Dec 02, 2019 5:43 pm 
Offline
User avatar

Joined: Fri Aug 30, 2002 1:09 am
Posts: 8541
Location: Southern California
Responding to Ed's "sub-question":
In my text editor (MultiEdit), I use the mouse for marking blocks and moving things, but keyboard shortcuts for most everything else. And yes, I want the number keypad and cursor keys separated from the rest. I keep the number lock off though. For numerals, I can reach up to the top row without looking; but I like the other things on the number keypad on a good keyboard. I suppose it's partly because MultiEdit uses the 5 key in the center of the keypad, with number lock off, to center the line you're working on in the window, and partly because I got in the habit with my PCB CAD which uses the Home, PgUp, End, and PgDn keys in the number keypad as a way to move exactly 45° with much better control than you get with a mouse.

_________________
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?


Top
 Profile  
Reply with quote  
PostPosted: Mon Dec 02, 2019 6:42 pm 
Offline

Joined: Sat Dec 30, 2017 3:19 pm
Posts: 116
Location: Detroit, Michigan, USA
All of my development work is done on Linux (Fedora to be specific). I've been running almost entirely Windows-free for the better part of a decade; the only reason I even keep a Windows box around these days is for gaming and the rare occasion I need to run some specialty program that simply can't be coaxed into running in WINE.

Having grown up coding in the 1980s I avoided IDEs like the plague, because I can touch type far faster than I can move my hands off the keyboard and over to the mouse. However, once I started doing Java work for my day job I quickly learned how helpful they can be, especially for large code refactors. That being said I still prefer to edit code for my personal projects in vim and build everything with make or CMake. I do occasionally venture into IDE land for proprietary tools like Quartus or the Xilinx ISE, but that's just because I have to load those tools up to compile my code.


Top
 Profile  
Reply with quote  
PostPosted: Mon Dec 02, 2019 6:54 pm 
Offline
User avatar

Joined: Wed Feb 14, 2018 2:33 pm
Posts: 1486
Location: Scotland
As a semi-interesting aside, (and without trying to start an editor holy-war! :-) while I use vi/vim, I also use nano - but mostly in email (where I use a text client called Alpine, and Pine + pico before that). I've also written many little editors over the years and without really thinking about it they almost always come out in a very nano-like fashion. The latest was adapting one I wrote in C to run on my 6502 systems, and it runs very well over a serial line too and compiled to under 16KB of object code.

The editor it was adapted from was from my BASIC interpreter (also written in C, but won't run on a 6502 - yet), where it features syntax highlighting - which I mentioned earlier that I wasn't a fan of, but I was paid to put in in, so ...

-Gordon

_________________
--
Gordon Henderson.
See my Ruby 6502 and 65816 SBC projects here: https://projects.drogon.net/ruby/


Top
 Profile  
Reply with quote  
PostPosted: Mon Dec 02, 2019 7:04 pm 
Offline

Joined: Sat Dec 30, 2017 3:19 pm
Posts: 116
Location: Detroit, Michigan, USA
drogon wrote:
I also use nano - but mostly in email (where I use a text client called Alpine, and Pine + pico before that)


Ahh, pine + pico brings back some memories. :) That was my go-to email client for the 90s and early 00s, until I finally switched to Gmail.


Top
 Profile  
Reply with quote  
PostPosted: Tue Dec 03, 2019 4:53 am 
Offline

Joined: Tue Nov 10, 2015 5:46 am
Posts: 230
Location: Kent, UK
cjs wrote:
My environment is almost exactly identical to what you described, sark02
Neat!
Similar to your F-keys binding to desktops, when I'm on a full sized keyboard I used the numeric pad 1-9 keys to select from a 3x3 grid of desktops. Let's me switch between tasks rapidly (there are often overlapping requests to look at, "just this one thing"...).
BigEd wrote:
As a sort of sub-question, to what degree do people use the mouse, and to what degree use keyboard shortcuts?
I use a mouse to move focus between xterms, to resize and move windows, and to cut and paste. Different operations use a combination of mouse buttons and left-alt. I use F keys for to foreground a window, background it, and open a new xterm. I use numeric pad keys to switch between desktops.

Besides that, I don't use key bindings for actions (e.g. F5 to build like on some IDEs), and instead I prefer to CTRL-Z my editor and type 'make' or to move to a different xterm from which I'm doing builds. Nothing fancy here.


Top
 Profile  
Reply with quote  
PostPosted: Tue Dec 03, 2019 1:03 pm 
Offline
User avatar

Joined: Sat Dec 01, 2018 1:53 pm
Posts: 730
Location: Tokyo, Japan
sark02 wrote:
Similar to your F-keys binding to desktops, when I'm on a full sized keyboard I used the numeric pad 1-9 keys to select from a 3x3 grid of desktops. Let's me switch between tasks rapidly (there are often overlapping requests to look at, "just this one thing"...).

Yes, and that's often self-generated on my part. It's not unusual, when I'm working on a development branch, for me to discover that my new code has exposed a bug in the mainline code. I could stash and change branches, but I usually find it easier just to move to a new desktop, fix the mainline in a second checkout, push that change up, and then come back to my dev branch on the original desktop, fetching and rebasing my branch onto the fix when convenient.

Quote:
I use a mouse to move focus between xterms, to resize and move windows....

This is where the TrackPoint is really convenient; I switch focus from an editor to my build window without moving my fingers off the home row. (Studies show that this saves about 1.5 seconds when changing windows.) The TrackPoint isn't as accurate as a mouse, but for changing focus it doesn't need to be. (Nor for window moves if you've got a bit of "snap to edge" configured. I trigger window moves from the keyboard by pressing the 変換 key just to the right of the space bar and then a.)


Attachments:
91TrIc9D+NL._AC_SL1500_.jpg
91TrIc9D+NL._AC_SL1500_.jpg [ 313.96 KiB | Viewed 4023 times ]

_________________
Curt J. Sampson - github.com/0cjs
Top
 Profile  
Reply with quote  
PostPosted: Wed Dec 04, 2019 5:19 am 
Offline
User avatar

Joined: Fri Dec 12, 2008 10:40 pm
Posts: 1007
Location: Canada
I use various Windoze (XP, 7 and 10) machines and use Notepad++, Smart Editor Pro and various hex editors to access and edit files on a NAS RAID. I use the Kowalski simulator/assembler on a specific Win 7 box to debug and assemble programs then burn these to EPROM/EEPROM using a cheap and cheerful G540 programmer. To configure GALs I use WinCUPL to write and compile the code and the G540 to program them.

I also do a bit of vintage computing (OSI, Tandy COCO, ZX-81, Apple II, CPM, SYM, C-64, Heathkit ET-3400/ETA-3400) and do all that development either in assembler/machine code/BASIC on those boxes as appropriate/possible.

_________________
Bill


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 18 posts ]  Go to page 1, 2  Next

All times are UTC


Who is online

Users browsing this forum: No registered users and 14 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to: