From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.5-pre1 X-Received: by 2002:ac8:6b04:: with SMTP id w4mr23244777qts.364.1595858566662; Mon, 27 Jul 2020 07:02:46 -0700 (PDT) X-Received: by 2002:a05:620a:1205:: with SMTP id u5mr2112203qkj.11.1595858566460; Mon, 27 Jul 2020 07:02:46 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!feeder.eternal-september.org!news.uzoreto.com!feeder1.cambriumusenet.nl!feed.tweak.nl!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Mon, 27 Jul 2020 07:02:45 -0700 (PDT) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=203.59.139.151; posting-account=d51RWwoAAADvR-x0zYAtT9z3CRxT1eXo NNTP-Posting-Host: 203.59.139.151 References: <748b7abb-4bda-4174-aa37-367daaf1c02ao@googlegroups.com> <6cbf26a5-2047-4685-a87b-381bc5fedd5bo@googlegroups.com> <4472b2d0-e872-46c9-8665-af1fea1cc8c4n@googlegroups.com> <62b1618d-e93d-42f4-9970-314685e2c01ao@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <1603a778-dc76-4c82-88f2-872212871b65n@googlegroups.com> Subject: Re: SweetAda 0.1e released From: Roger Mc Injection-Date: Mon, 27 Jul 2020 14:02:46 +0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Xref: reader01.eternal-september.org comp.lang.ada:59549 List-Id: On Monday, July 27, 2020 at 11:18:47 PM UTC+10, gabriele.g...@gmail.com wro= te: > On Monday, July 27, 2020 at 1:34:28 PM UTC+2, Roger Mc wrote:=20 > > On Monday, July 27, 2020 at 8:51:55 PM UTC+10, gabriele.g...@gmail.com = wrote:=20 > > > On Sunday, July 26, 2020 at 3:51:41 AM UTC+2, Roger Mc wrote:=20 > > > > I reinstalled 0.1e and now it works, at least to the extent that 0.= 1d works.=20 > > > > Quite strange as I had the same problem on both my computers.=20 > > > > The only thing that I can think of is that on the previous 01e inst= all I just used=20 > > > > ./menu.sh ( without target selection)=20 > > > > which was the method I used for 0.1d. Perhaps this messed something= up?=20 > > > > When that didn't work, I inspected 0.1e menu.sh and discovered the = need to use target selection;=20 > > > > however, on using target selection, in the order stated in your adv= ice (perhaps eventually), I had the reported problem.=20 > > > > It seems, somehow I messed something up; somehow on both computers!= =20 > > > > Thanks for your much appreciated advice.=20 > > > >=20 > > > > I still haven't tracked down the Catalina problem. Inspiration come= s slowly.=20 > > > > Certainly, the Ada code is working correctly but, somehow the assem= bly coded outb instructions in x86_64-io don't seem to be having any effect= .=20 > > > > Possibly being blocked by Catalina security features?=20 > > > > I currently don't know how to track outb functionality.=20 > > > > I'll keep trying (slooowly)=20 > > > Hi Roger.=20 > > >=20 > > > Fine, the most important thing is that we have verified that tools ru= n 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 perfec= tly aligned layout, without previous mistakes.=20 > > >=20 > > I just received your message recommending awaiting the next release.=20 > >=20 > > > Correct me if I'm wrong, I understood that IOEMU window is working an= d shows I/O widgets cycling, but not in Catalina, is that correct?=20 > > Thats correct. I had the IOEMU window working and showing I/O widgets c= ycling under High Sierra but still not under Catalina.=20 > > >=20 > > > In this case maybe there is either a problem in the GUI code or in Ca= talina handling of windows.=20 > > >=20 > > > But you can assume safely that Ada code is working since you should s= ee some output in serial terminal.=20 > > Yes I'm very confident that the Ada code is working and certainly see o= utput in the serial terminal and the QEMU window.=20 > > >=20 > > > About the outb instruction, please explain me (even writing down your= code) what you are trying to do. outb instructions should behave fine, oth= erwise you should see a totally dead system.=20 > > The outb instructions that I was referring to are those in X86_64-io.ad= b which are invoked by pc.PIC procedures which I have been trying to unders= tand.=20 > > My current understanding is that it is PIC procedures in pc.adb that sh= ould drive the I/O widgets cycling in the IOEMU window via the in X86_64-io= outb instructions?=20 > > >=20 > > > By the way, apologies if I repeat myself, but try to isolate your cod= e 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 wa= y you can change very little in your code. For example, unit x86_64.IO is l= ikely to change in CPU.IO. Ask me if you have difficulties recompiling your= code.=20 > >=20 > > Understood. But, at the moment I'm nowhere near producing my own code a= nd am essentially trying to "reverse engineer" your code in order to unders= tand how things work.=20 > >=20 > > I have spent today coming to grips with MPLAB via various MPLAB tutoria= ls, which also included tutorials on PIC hardware and interfacing. This, ev= entually has been quite rewarding but I still have some way to go to reach = adequate knowledge.=20 > >=20 > > I've not tried sending files via Google Groups before so I don't know i= f this works!=20 > > If it does this shows my current understanding of the system=20 > > /System/Volumes/Data/QEMU/sweetada_run.pdf.zip > OK. Maybe the Catalina problem is an issue we could solve in the near fut= ure. If you have an environment that does work, that is very fine, so we ha= ve a common base.=20 >=20 > Now for the outb instructions.=20 > No, pc.pic instructions do not drive IOEMU graphics widgets. Let me expla= in. I say again, I do not known your level of knowledge so I will go deep i= n order to not be misunderstood. Sorry for trivial things.=20 >=20 > 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.=20 >=20 > I hope you are not confusing the PIC (programmable interrupt controller) = in the PC chipset) with a PIC microcontroller, which are two entirely diffe= rent context.=20 >=20 > And this is done because I had to reprogram the Programmable Interrupt Co= ntroller (PIC) that's inside the chipset of every PC. It is needed for prop= er handling of interrupts (that I have yet to write down for x86-64, unlike= the 32-bit platform, which is more "mature").=20 >=20 > I/O widgets are excited by instructions in applications.adb. Now, there a= re two sets of "visible" I/O. One set is 3 I/O ports of the parallel port i= nterface.=20 >=20 > By calling PC.PPI... you read or write something in this ports. So:=20 >=20 > applications.adb: calls PPI_DataOut (Value)=20 > pc.adb: PPI_DataOut() implements a calls to CPU.IO.PortOut (Value)=20 >=20 > Note that pc.adb with's CPU.ads=20 >=20 > Inside cpu.ads, CPU.IO.PortOut is a renaming of x86_64.IO package.=20 > Inside package x86_64.IO, finally, PortOut is implemented as on outb/outw= /outl, whatever instructions is picked up by the compiler thanks to overloa= ding 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=20 >=20 > procedure PortOut (Port : in Unsigned_16; Value : in Unsigned_8)=20 >=20 > is picked up.=20 >=20 > The same also for "control" and "status". Every port is then tied to a wi= dget by IOEMU, which visualize it in real-time.=20 >=20 > 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 o= n them.=20 >=20 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 referrin= g 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 ju= st 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 "so= mewhere". When I first started looking at sweetada, I did install a QEMU system to ge= t some understanding and successfully installed Ubuntu it. But that was jus= t a familiarity exercise which I have since deleted.=20 > 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 you= r 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 o= f my Macs. Again, your explanations are much appreciated, Roger