Assembly Programming using NVDA
lorenzo FC
Hello. I'm a computer science student and in my class, we will soon start to program in assembly language. I have tried downloading and executing the MARS IDE, but, at least to me, it seems partially accessible, as for example, i couldn't write instructions in the text field using NVDA. Maybe I just don't know how to use the program yet, but i would be grateful if someone could help. I mean, i know I can just write code on notepad and run it in the IDE, but I think that would be a "last resort". If MARS is not an accessible way to go, could anyone suggest what could I go for instead?
Lorenzo |
|
Russell James
Hi
Lorenzo, I'm not familiar with this specific IDE... You may want to explore the documentation or contact the IDE developer to obtain best practices/lessonslearned regarding using screen readers with this application. Most modern Windows applications should be accessible, however, if it was written in Java it may require the Java Access Bridge. That was the case with other Java based IDE applications like eclipse... If you really need the IDE type approach instead of leveraging text editors you may want to consider VS Code. Which is the popular free and open source IDE based on MS Visual Studio that is accessible to NVDA. You may find it easier to use text editors and command line interfaces instead of a GUI based IDE. What is the processor and assembler that is being used for this assembly language course? Do you also have an emulator to execute your programs? Do you know what debugger will be used? Russ On Sat, Apr 1, 2023 at 9:50 AM lorenzo FC <comunellolorenzo@...> wrote:
|
|
Travis Siegel
Doesn't really answer your question, but I program in several
languages, and I always use notepad instead of the provided ide,
because I have yet to find an IDE that works well enough with
speech that I feel comfortable using it for development purposes.
This has been the case for me since 1986, when I first started
programming. I've never used an IDE. I always use a text editor,
then compile with command line tools. The closest I ever got to
using an I D E, was on mac OSX, their development tools were
accessible enough, that I actually did use their IDE when I
debugged code, or fixed already written code to change code, or
started a new project from scratch, but often after getting the
skeleton of the program written, I'd switch back to text edit for
editing and creating code, but otherwise, a 100 percent accessible
integrated development environment just doesn't exist I don't
think, as there's always *something* that doesn't work as well as
it should, whether it be statement completion, or compile results,
I've always found those environments to be lacking in one way or
another. Obviously, there's lots of visually
impaired folks that embrace, and use IDE software every day, I
personally just can't find oen that suits my style of work, and is
usable out of the box with a screen reader.
I can make (most) of them work with a
little (or sometimes a lot) of configuring, but that's too much
work for me when I can just switch to a text editor, and be done
with it.
Obviously, your mileage may vary.
On 4/1/2023 9:16 AM, lorenzo FC wrote:
|
|
On Sat, Apr 1, 2023 at 10:21 AM, Travis Siegel wrote:
I can make (most) of them work with a little (or sometimes a lot) of configuring- What follows is a general observation, not limited to IDEs nor aimed only at Mr. Siegel: This is precisely the kind of thing that needs to be documented in detail and shared on groups such as this one. Tweaking is very often necessary to optimize accessibility, and knowing what those tweaks are for any given program (and an IDE is just another program) can save those new to it tons of time and heartache. Not only that, but it can save you (the generic you), time when you have to configure the same program on another machine. It's worth noting the settings you're changing, as you change them, so that in the end you have a record of what it is you did - at least for something where those settings changes are non-trivial. -- Brian - Virginia, USA - Windows 11 Pro, 64-Bit, Version 22H2, Build 22621; Office 2016, Version 16.0.15726.20188, 32-bit It is much easier to be critical than to be correct. ~ Benjamin Disraeli, 1804-1881 |
|
Russell James
Hi Brian, That is a great idea, there could be things saved in an online repo to support these configurations and sharing! What a great way to use GitHub Code Spaces! :-) Maybe there could be a platform with all the tools and screen reader setup for this purpose... There could be one for blind, another for low vision, and another for sighted. In the meantime, here are some resources, not intended to be exhaustive, more as an example of what is possible: Accessibility tips and tricks for Visual Studio - Visual Studio (Windows) | Microsoft Learn Accessibility in Visual Studio Code Watch "How A Blind Developer Uses Visual Studio" on YouTube I wonder if the MS Copilot knows how to do this? :-) On Sat, Apr 1, 2023 at 10:26 AM Brian Vogel <britechguy@...> wrote: On Sat, Apr 1, 2023 at 10:21 AM, Travis Siegel wrote: |
|
Sascha Cowley
Unfortunately, Mars is not very accessible with NVDA. When I've had to do MIPS assembly programming for my degree, I've used SPIM instead. If I remember correctly, QTSpim is largely accessible, though you'll need to do a bit of jiggery-pokery with object navigation. Otherwise, it does have a CLI, though I've personally not worked with it.
|
|
Jason White
You should be able to run an assembler from the command line, and use a debugger such as Gdb (or any Microsoft equivalent) to iinvestigate the execution of code. It is my understanding that, at least for x86 processors, there
are two assembly language syntaxes, and that the GNU tools use a
syntax that differs from the one chosen by Intel. Of course, if
it's ARM, MIPS or some other architecture that is being used in
the course, then this observation isn't relevant. On 1/4/23 17:24, Sascha Cowley via
groups.io wrote:
Unfortunately, Mars is not very accessible with NVDA. When I've had to do MIPS assembly programming for my degree, I've used SPIM instead. If I remember correctly, QTSpim is largely accessible, though you'll need to do a bit of jiggery-pokery with object navigation. Otherwise, it does have a CLI, though I've personally not worked with it. |
|
Brian's Mail list account
Yes nostalgia is a thing of the past. Or to put it another way, I go back to Assembler on the z80 chip, but i had sight then, and many assemblers, even on that limited resource processor had some very handy step thru toolkit and error checking code built in.
toggle quoted message
Show quoted text
One would have thought that these days they would have cracked not only those functions, but accessibility as well. I have no intention of trying to learn this now, but of course you are always going to get more compact faster code in assembler than by using some other language which may use a library of routines. In windows I think that doing the sort of direct hardware access we used to do is a definite no no! Brian -- bglists@... Sent via blueyonder.(Virgin media) Please address personal E-mail to:- briang1@..., putting 'Brian Gaff' in the display name field. ----- Original Message -----
From: "Jason White via groups.io" <jason@...> To: <nvda@nvda.groups.io> Sent: Saturday, April 01, 2023 11:20 PM Subject: Re: [nvda] Assembly Programming using NVDA You should be able to run an assembler from the command line, and use a debugger such as Gdb (or any Microsoft equivalent) to iinvestigate the execution of code. It is my understanding that, at least for x86 processors, there are two assembly language syntaxes, and that the GNU tools use a syntax that differs from the one chosen by Intel. Of course, if it's ARM, MIPS or some other architecture that is being used in the course, then this observation isn't relevant. On 1/4/23 17:24, Sascha Cowley via groups.io wrote: Unfortunately, Mars is not very accessible with NVDA. When I've had to |
|
Dave Grossoehme
I think I'd be contacting the instructor on this or the accessibility department of your school. Dave
On 4/1/2023 10:20 AM, Travis Siegel
wrote:
|
|
Dave Grossoehme
It's been years since I dealt with Assembly Code. However, do you still have to decode a Dump? If so, is there a program that can be used for this student that will have accessibility? Dave
On 4/1/2023 6:20 PM, Jason White via
groups.io wrote:
|
|
Jackie
Lorenzo, I suggest you consider subscribing to the program-l list (I
toggle quoted message
Show quoted text
know, just what you need, another list, right?). It's on freelists, so to do that, go to: www.freelists.org/list/program-l fill in your email, choose subscribe from the dropdown (it is by default), press enter, reply to the confirmation email, & you're golden. I suggest this because a gentleman named Ken Perry who works for APH is on that list, & he does assembler. I think he can assist you greatly. On 4/3/23, Dave Grossoehme <dave@...> wrote:
It's been years since I dealt with Assembly Code. However, do you still --
Jackie McBride Author 36: Last Hours of a Life Be a hero. Fight Scams. Learn how at www.scam911.org Also check out brightstarsweb.com & mysitesbeenhacked.com |
|
On Mon, Apr 3, 2023 at 10:58 AM, Dave Grossoehme wrote:
I think I'd be contacting the instructor on this or the accessibility department of your school.- Not that both of these aren't great ideas, but I'd also not hold your breath, particularly on the instructor front. Many instructors, even those with years of experience (in anything) have never had a blind student, and even if they have, unless it's kinda sorta recent you'll probably get a question of the form, "What do you mean, accessible?" They're often clueless. And this is a case where one should never ascribe to malice that which can be explained by simple ignorance. You (generic you) may very well be the first person that's ever brought this up. Disability services departments are, in my experience, pretty much only fluent in "mainstream assistive technology," if that. They may know a lot about JAWS or NVDA and mostly in the context of M365 and/or the course management system the school is using, but when it comes to esoterica like with an assembly programming IDE you're likely going to get blank stares. And I do get that. There is no way that anyone in the AT game can possibly know about every possible niche in which something can (or cannot) be used. When you're in a position like that it's critical that you be fluent in answering what comes through the door all the time, with at least some ability to handle less frequent, but still repeated, queries. But you can't know everything, and the more obscure and esoteric the arena, the less likely it is you've ever even encountered it, or a query about it, in the past. -- Brian - Virginia, USA - Windows 11 Pro, 64-Bit, Version 22H2, Build 22621; Office 2016, Version 16.0.15726.20188, 32-bit It is much easier to be critical than to be correct. ~ Benjamin Disraeli, 1804-1881 |
|
Dave Grossoehme
I agree with you %100 on this subject. I was trying to get to the point of hitting all the sides that are possible. Most likely the instructor will give a blank look to the student. However, the discussion is going to be made so the instructor knows what is going on. While doing so, this person can keep searching for answers, of which Jackie said earlier today the one of the blind programmiong email list would be better help. Dave
On 4/3/2023 4:33 PM, Brian Vogel wrote:
On Mon, Apr 3, 2023 at 10:58 AM, Dave Grossoehme wrote: |
|
On Mon, Apr 3, 2023 at 04:45 PM, Dave Grossoehme wrote:
I was trying to get to the point of hitting all the sides that are possible.- And this is the reason I thought it was a great idea, and particularly because it also often serves as a consciousness-raising moment. All I intended, and it seems you read it that way, was to temper expectations on the part of anyone who's never done this before. Sadly, I have experience with dealing with clueless instructors and disability services people. And I get way, way more upset about the latter than the former (and about the people who hire those who clearly do not have the requisite skills, too). -- Brian - Virginia, USA - Windows 11 Pro, 64-Bit, Version 22H2, Build 22621; Office 2016, Version 16.0.15726.20188, 32-bit It is much easier to be critical than to be correct. ~ Benjamin Disraeli, 1804-1881 |
|
Arlene
Oh! No kidding! There are a lot of clueless instructors who teach in these classes. They don’t know what to do with people who are disabled in any way shape. They are afraid to accommodate students with disabilities. If they are afraid of trying to accommodate them. They refuse to accommodate them even if the staff in the disability department try to help the instructors. Or, you get clueless staff in the disability department. They think its easy to accommodate them but they don’t know what they are facing when they get employment to work with people who are disabled. Nor do they not know they have to be trained to operate computers that use screen readers like jaws and NVDA. No offence to you Bryan. The staff in the disability department set up the computers in a way the sighted person would do it. I’ve seen this before when I attended a college. One of the staff who worked in the disability department set the computer up so a sighted person would use it. They did it so that the older Screen reader would not work properly if I used the computer or another blind student used that computer. I think now if you set the computer up these screen readers such as jaws or NVDA would work. I’d bring in my own laptop because its set to my liking. No one would touch it but me. All I’d have to do is change the brightness for a sighted tutor.
Sent from Mail for Windows
From: Brian Vogel
Sent: April 3, 2023 2:20 PM To: nvda@nvda.groups.io Subject: Re: [nvda] Assembly Programming using NVDA
On Mon, Apr 3, 2023 at 04:45 PM, Dave Grossoehme wrote:
- Brian - Virginia, USA - Windows 11 Pro, 64-Bit, Version 22H2, Build 22621; Office 2016, Version 16.0.15726.20188, 32-bit It is much easier to be critical than to be correct. ~ Benjamin Disraeli, 1804-1881
|
|
lorenzo FC
When I started this topic, I had no idea this big discussion would become a thing. First, I would like to thank everyone who has tried to contribute on it. So, in fact, I'm not just the first blind student of this course, but also in all the IT related courses the university offers. And true, the Disability service department covers mainstream stuff, which is kinda understandable, i think. I mean, they can't just be prepared for all kinds of niches out there. So yeah, it's all new to us, from me and them as well, professors, the course, and the disability department. Not to mention the course is very new here, too. |
|
Carlos Medrano
Hi lorenzo,
Is there a specific reason why you are using that IDE? E.G. recommended by your instructor, etc? As a developer, I have some strong opinions about someone coming my way and telling me what editor I should use, but I digress.
The problem with assembly is that trying to follow along without
using the same configuration that the professor and TA's use can
be down right difficult because there isn't much abstraction in
between you and the generated machine code. This means that the
instructions you write are usually based around things like the
operating system, assembler, and computer architecture that you
are using.
Considering the fact that you are using NVDA and Windows, I'm
assuming the X86 instruction set architecture and Windows for the
OS. Do you know what assembler you will be using? Finding out this
information could really help you because it reduces the
dependency on the IDE, which means that you can use your preferred
editor to save your files.
More than likely you will probably have to resort to command line tooling to assemble your code, however.
Thanks,
Carlos
On 4/1/2023 7:20 AM, Travis Siegel
wrote:
|
|
Sascha Cowley
Given they were asking about MARS, which is an all-in-one MIPS IDE, simulator and debugger, I would take a punt and say they're going to be using MIPS, hence why I suggested SPIM above.
|
|
lorenzo FC
Update! So, I contacted one of the MARS devs and...
Lorenzo,
I'm glad I was able to be of some help. We did not develop MARS with accessibility in mind, but thankfully certain features of it will work with screen readers. The menus and many menu items have keyboard shortcuts so that helps too.
Should you use MARS for your assembly programming, I would be interested in hearing your feedback regarding accessibility. Our conversation this week has motivated me to actually work on it again, if only for this purpose. I thank you for that.
Feel free to share this email with anyone. It includes our complete conversation.
Best wishes!
______________________________ Pete Sanderson Professor Emeritus, Computer Science Otterbein University
From: lorenzo FC <comunellolorenzo@...> Sent: Wednesday, April 5, 2023 9:51 PM To: Sanderson, Pete <psanderson@...> Subject: [External Email] RES: MARS - additional information
Hello. First, I would like to thank you a lot for your answer. When I wrote that email, i was thinking I would get no reply, taking into account that MARS is a Project that has been inactive for some years now. Also, thank you for your feedback, it was very useful, i did the change to use the internal text editor, and it worked! If you allow me, I would like to quote these emails to the people I asked about this first, including the persson I quoted in my first email. P.S. I'm not familiar with Java, but perhaps this episode encourages me to give it a try in the future... Again, thank you!
Lorenzo
Lorenzo,
Since my response to you yesterday morning, I have done some research into accessibility of Java programs. I do not know your background or experience with Java or object-oriented programming but will explain it in those terms.
The MARS user interface was programmed using Swing, right from the very start of MARS development 20 years ago this spring. The comment by the person who said "it needs to be rewritten in Swing" is incorrect. This person did not look at the source code. All the user interface code is in the Mars.Venus package. In my previous response, I listed some of the Swing classes that we used.
When I researched Swing and accessibility, I learned that all those classes implement the Accessible interface. And they did so 20 years ago - I had to use the Wayback Machine to find old Java 1.4 documentation to confirm this! They should therefore be usable with Java Access Bridge. Most importantly, I also learned that one of the foundation Swing classes JComponent, does not implement Accessible.
This turns out to be relevant, as I had feared, to MARS default internal text editor. I developed that text editor, which highlights different MIPS language components, several years after the early releases of MARS. It was an extension of code developed by someone else. When I looked at its source code, I discovered that its main class JEditTextArea is a direct subclass of JComponent. So it will not interact with Java Access Bridge.
However, the original MARS internal text editor, which works with screen readers, remains available! It is a subclass of Swing's JTextArea, which implements Accessible. To select it, go to the Settings menu and select Editor. A dialog box will pop up. There is a check box called "Use generic editor". Check that box, then the "Apply and Close" button.
To test this, I enabled Java Access Bridge on my computer, downloaded NVDA, and ran MARS. Indeed, the screen reader worked with the generic text editor but not with the default enhanced editor. The MARS menus all worked with the screen reader as well, as I expected. All of the menus and most of the menu items have keyboard shortcuts. But I was able to traverse and select using the arrow and enter keys.
That's what I've done so far, and wanted to report those results to you before going further.
I hope this helps.
______________________________ Pete Sanderson Professor Emeritus, Computer Science Otterbein University
From: Sanderson, Pete <psanderson@...> Sent: Tuesday, April 4, 2023 10:10 AM To: lorenzo FC <comunellolorenzo@...> Subject: Re: MARS
Lorenzo,
Thank you for bringing this to my attention. In the 18 years since MARS was introduced, you are the first person to address this issue.
Unfortunately, I cannot give you any assurance of corrective measures. I developed most of the MARS code with some assistance from Ken Vollmar. Ken is no longer in academia; I retired 6 years ago and have not written a line of Java code since. Unless someone actively assumes responsibility for maintaining it, the August 2014 release of MARS will remain its final release.
Over the years a handful of different people have offered to take this on, but to my knowledge no one has followed through. You might check GitHub.
All major user interface components are implemented using Swing classes: JWindow, JFrame, JButton, JTextField, JTextArea, JMenu, JMenuItem, the list goes on and on and on.
All MARS source code is bundled within the JAR file, so anyone using MARS can extract, view, modify and recompile it. And many have done so over the years. Given that the bytecode in the JAR file was compiled nearly 9 years ago, it is possible that re-compilation under a more-current release of Java will produce favorable results.
I don't know if this will help at all, but MARS can also be used in command-line mode. Use any text editor you like to write the program, then assemble and/or run it from a command line. Details in the Help menu (Help -> MARS -> Command) or online at https://courses.missouristate.edu/KenVollmar/MARS/Help/MarsHelpCommand.html
Sorry, that's all I can offer for now. Best wishes.
______________________________ Pete Sanderson Professor Emeritus, Computer Science Otterbein University
From: lorenzo FC <comunellolorenzo@...> Sent: Tuesday, April 4, 2023 8:42 AM To: Sanderson, Pete <psanderson@...> Subject: [External Email] MARS
Hello. I’m a computer Science student, and in my class, we will soon start to program in assembly for MIPS architecture. And when I tried to run the program, I found out that it looks like the MARS IDE is not accessible to screen readers. I have tried using it alongside NVDA on Windows, for example, and the program is partially accessible, even with Java Access Bridge enabled. Quoting a programmer who also identified this same issue: "OK. I just took a look. At mars. I think I remember trying this in the past. The problem is it is a Java app and it is using AWT the most inaccessible of the Java UI toolkits. It really needs to be re-written in swing or SWT and I doubt that is going to happen." Lorenzo
Given they were asking about MARS, which is an all-in-one MIPS IDE, simulator and debugger, I would take a punt and say they're going to be using MIPS, hence why I suggested SPIM above.
|
|
Russell James
It is great to hear you found a path to accessibility! I wonder how many computer science courses are using 18 year old tools... Russ On Tue, Apr 11, 2023 at 10:35 AM lorenzo FC <comunellolorenzo@...> wrote:
|
|