comp.lang.ada
 help / color / mirror / Atom feed
From: Roger Mc <rogermcm2@gmail.com>
Subject: Re: SweetAda 0.1e released
Date: Mon, 27 Jul 2020 07:02:45 -0700 (PDT)	[thread overview]
Message-ID: <1603a778-dc76-4c82-88f2-872212871b65n@googlegroups.com> (raw)
In-Reply-To: <c213212b-25d0-46d7-a6d0-20965af177e5o@googlegroups.com>

On Monday, July 27, 2020 at 11:18:47 PM UTC+10, gabriele.g...@gmail.com wrote:
> On Monday, July 27, 2020 at 1:34:28 PM UTC+2, Roger Mc wrote: 
> > On Monday, July 27, 2020 at 8:51:55 PM UTC+10, gabriele.g...@gmail.com wrote: 
> > > On Sunday, July 26, 2020 at 3:51:41 AM UTC+2, Roger Mc wrote: 
> > > > I reinstalled 0.1e and now it works, at least to the extent that 0.1d works. 
> > > > Quite strange as I had the same problem on both my computers. 
> > > > The only thing that I can think of is that on the previous 01e install I just used 
> > > > ./menu.sh ( without target selection) 
> > > > which was the method I used for 0.1d. Perhaps this messed something up? 
> > > > When that didn't work, I inspected 0.1e menu.sh and discovered the need to use target selection; 
> > > > however, on using target selection, in the order stated in your advice (perhaps eventually), I had the reported problem. 
> > > > It seems, somehow I messed something up; somehow on both computers! 
> > > > Thanks for your much appreciated advice. 
> > > > 
> > > > I still haven't tracked down the Catalina problem. Inspiration comes slowly. 
> > > > Certainly, the Ada code is working correctly but, somehow the assembly coded outb instructions in x86_64-io don't seem to be having any effect. 
> > > > Possibly being blocked by Catalina security features? 
> > > > I currently don't know how to track outb functionality. 
> > > > I'll keep trying (slooowly) 
> > > Hi Roger. 
> > > 
> > > Fine, the most important thing is that we have verified that tools run correctly. Maybe it could be useful to delete everything (after a backup) and repeat a fresh installation, so you could check that you have a perfectly aligned layout, without previous mistakes. 
> > > 
> > I just received your message recommending awaiting the next release. 
> > 
> > > Correct me if I'm wrong, I understood that IOEMU window is working and shows I/O widgets cycling, but not in Catalina, is that correct? 
> > Thats correct. I had the IOEMU window working and showing I/O widgets cycling under High Sierra but still not under Catalina. 
> > > 
> > > In this case maybe there is either a problem in the GUI code or in Catalina handling of windows. 
> > > 
> > > But you can assume safely that Ada code is working since you should see some output in serial terminal. 
> > Yes I'm very confident that the Ada code is working and certainly see output in the serial terminal and the QEMU window. 
> > > 
> > > About the outb instruction, please explain me (even writing down your code) what you are trying to do. outb instructions should behave fine, otherwise you should see a totally dead system. 
> > The outb instructions that I was referring to are those in X86_64-io.adb which are invoked by pc.PIC procedures which I have been trying to understand. 
> > My current understanding is that it is PIC procedures in pc.adb that should drive the I/O widgets cycling in the IOEMU window via the in X86_64-io outb instructions? 
> > > 
> > > By the way, apologies if I repeat myself, but try to isolate your code in an application file like the standard one, I'm changing some with/use and simplify units, so expect some minor changes in future release. This way you can change very little in your code. For example, unit x86_64.IO is likely to change in CPU.IO. Ask me if you have difficulties recompiling your code. 
> > 
> > Understood. But, at the moment I'm nowhere near producing my own code and am essentially trying to "reverse engineer" your code in order to understand how things work. 
> > 
> > I have spent today coming to grips with MPLAB via various MPLAB tutorials, which also included tutorials on PIC hardware and interfacing. This, eventually has been quite rewarding but I still have some way to go to reach adequate knowledge. 
> > 
> > I've not tried sending files via Google Groups before so I don't know if this works! 
> > If it does this shows my current understanding of the system 
> > /System/Volumes/Data/QEMU/sweetada_run.pdf.zip
> OK. Maybe the Catalina problem is an issue we could solve in the near future. If you have an environment that does work, that is very fine, so we have a common base. 
> 
> Now for the outb instructions. 
> No, pc.pic instructions do not drive IOEMU graphics widgets. Let me explain. I say again, I do not known your level of knowledge so I will go deep in order to not be misunderstood. Sorry for trivial things. 
> 
> You are inside an emulated virtual machine, thanks to QEMU. This machine is a more or less standard x86-64 cpu PC machine. In the current PC-x86-64 platform development there are no calls to PC.PIC unit. This is done in the 32-bit platform, which isn't your choice. Maybe you mean PC.PPI, which is the parallel port. 
> 
> I hope you are not confusing the PIC (programmable interrupt controller) in the PC chipset) with a PIC microcontroller, which are two entirely different context. 
> 
> And this is done because I had to reprogram the Programmable Interrupt Controller (PIC) that's inside the chipset of every PC. It is needed for proper handling of interrupts (that I have yet to write down for x86-64, unlike the 32-bit platform, which is more "mature"). 
> 
> I/O widgets are excited by instructions in applications.adb. Now, there are two sets of "visible" I/O. One set is 3 I/O ports of the parallel port interface. 
> 
> By calling PC.PPI... you read or write something in this ports. So: 
> 
> applications.adb: calls PPI_DataOut (Value) 
> pc.adb: PPI_DataOut() implements a calls to CPU.IO.PortOut (Value) 
> 
> Note that pc.adb with's CPU.ads 
> 
> Inside cpu.ads, CPU.IO.PortOut is a renaming of x86_64.IO package. 
> Inside package x86_64.IO, finally, PortOut is implemented as on outb/outw/outl, whatever instructions is picked up by the compiler thanks to overloading on the proper size of the data to be handled. If you want to output an Unsigned_8 value (the right choice because it's an 8-bit port), then 
> 
> procedure PortOut (Port : in Unsigned_16; Value : in Unsigned_8) 
> 
> is picked up. 
> 
> The same also for "control" and "status". Every port is then tied to a widget by IOEMU, which visualize it in real-time. 
> 
> The there is another set of I/O ports available to be shown in IOEMU, you can read their addresses when QEMU start. You can create an I/O section in qemu.cfg and assign to these ports a widget and then make a PortOut also on them. 
> 

Many thanks for this which I will study in detail. Nothing is trivial. My "level of knowledge" in this context is low.
I have been confusing the PIC (programmable interrupt controller) in the PC chipset) with a PIC microcontroller which I thought i8259 PIC was referring to.
I think I need to study QEMU and  IOEMU in depth which I hadn't got around to yet.
Actually, perhaps demonstrating my level of ignorance, I'm baffled as to just where QEMU and  IOEMU "are" in the sweetada distribution?
Presumably such a question demonstrates my limited knowledge.
My only clues at the moment are that QEMU and  IOEMU are windows which must be generated somewhere; but so far I haven't been able to discover the "somewhere".
When I first started looking at sweetada, I did install a QEMU system to get some understanding and successfully installed Ubuntu it. But that was just a familiarity exercise which I have since deleted. 

> If you want to send me a piece of code, you can try gabriele...@sweetada.org
This was actually a diagram which I will now update in conformance with your description.
Apparently this Groups message editor is supposed to have a format toolbar from which attachments can be made but no such toolbar shows up on either of my Macs.
Again, your explanations are much appreciated,
Roger

  reply	other threads:[~2020-07-27 14:02 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-22 18:03 SweetAda 0.1e released gabriele.galeotti.xyz
2020-07-25 13:44 ` Roger
2020-07-25 16:07   ` gabriele.galeotti.xyz
2020-07-25 16:17   ` gabriele.galeotti.xyz
2020-07-26  1:51     ` Roger Mc
2020-07-26 13:17       ` Roger Mc
2020-07-27 10:59         ` gabriele.galeotti.xyz
2020-07-27 10:51       ` gabriele.galeotti.xyz
2020-07-27 11:34         ` Roger Mc
2020-07-27 13:18           ` gabriele.galeotti.xyz
2020-07-27 14:02             ` Roger Mc [this message]
2020-07-27 16:04               ` gabriele.galeotti.xyz
2020-07-28  0:06                 ` Roger Mc
2020-07-28  9:16                   ` gabriele.galeotti.xyz
2020-07-28 13:32                     ` Roger Mc
2020-07-27 16:53               ` Dennis Lee Bieber
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox