gnupic: Thread: gpasm-0.18.1


[<<] [<] Page 1 of 2 [>] [>>]
Subject: gpasm-0.18.1
From: Scott Dattalo ####@####.####
Date: 27 Feb 2000 01:25:13 -0000
Message-Id: <Pine.LNX.4.05.10002261844380.19335-100000@tempest.blackhat.net>


18.1 is now in CVS and on the web page:
http://www.dattalo.com/gnupic/gpsim.html
http://www.dattalo.com/gnupic/gpsim-0.18.1.tar.gz
(I did not create any rpms)

This version is probably less stable than what I'd normally release. But,
it is a development release. 19.0 will most probably be a week away.



There have been three major changes since 18.0:

1) Ralf has merged in the pinout window. 
It's really cool! Now you can click on the I/O pins of a graphical image
of the pic and change the state or the direction. There's a screen shot on
the web page:

http://www.dattalo.com/gnupic/gpsim.html

or go straight to it:
http://www.dattalo.com/gnupic/bb.gif

2) I re-designed the whole processor instantiation logic.
This should be transparent to you, but this is a significant change. I had
to do this because there was a design error in the way processors were
instantiated. I had previously neglected the way virtual functions were
being invoked while a class is constructed. In the process, I've cleaned
up the declaration of processors somewhat. I expect to make this a little
more clean in the coming days. (By clean up, I mean that before you had to
specify information in two separate places when ever you created a new
processor and added to the list of simulated processors. Now you only have
to do it once.)

3) Fixed scripting.
I don't how or when this broke, but it was horribly broken. The script
files in the examples subdirectory will dump core if you try to invoke
them. This has been fixed, but I still need to check out everything.

Minor changes:

a) Port D and Port E are now implemented on the 40 pin devices. The
peripherals tied to these I/O ports are not implemented (e.g. psp).

b) The 16C8xx devices (and in particularly the 16c877) are now supported.
This is an over statement somewhat, because all I've done is allowed the
instantiation of the devices, but have not provided the unique features
they offer (the 10-bit A/D , flash , and extended ram sizes are not
supported)


I'll be beating on gpsim in the coming days and trying to flush out a few
more bugs. I'll also begin adding more to the 16C8xx. I'm not sure if I'll
add the 14000 or not.

Scott


Subject: Re: gpasm-0.18.1
From: Matthew Bowles ####@####.####
Date: 27 Feb 2000 22:53:51 -0000
Message-Id: <38B9A929.A32F13A8@dsp.com.au>

> 
> b) The 16C8xx devices (and in particularly the 16c877) are now supported.
> This is an over statement somewhat, because all I've done is allowed the
> instantiation of the devices, but have not provided the unique features
> they offer (the 10-bit A/D , flash , and extended ram sizes are not
> supported)
> 

Scott,
	up until now, whenever you said 16C877 I just assumed there was a
different product I hadn't heard of, but now i am convinced that all the
time you were meaning the 16F877. You threw me for a while.. so
basically, there's no 16c877. but thanks for adding features for the
16F877, or at least up and coming features.

matt
Subject: Re: gpasm-0.18.1
From: Scott Dattalo ####@####.####
Date: 28 Feb 2000 05:07:01 -0000
Message-Id: <Pine.LNX.4.05.10002272240040.5169-100000@tempest.blackhat.net>


On Mon, 28 Feb 2000, Matthew Bowles wrote:

> 
> > 
> > b) The 16C8xx devices (and in particularly the 16c877) are now supported.
> > This is an over statement somewhat, because all I've done is allowed the
> > instantiation of the devices, but have not provided the unique features
> > they offer (the 10-bit A/D , flash , and extended ram sizes are not
> > supported)
> > 
> 
> Scott,
> 	up until now, whenever you said 16C877 I just assumed there was a
> different product I hadn't heard of, but now i am convinced that all the
> time you were meaning the 16F877. You threw me for a while.. so
> basically, there's no 16c877. but thanks for adding features for the
> 16F877, or at least up and coming features.

oops. At least it's an F877 in gpsim.

I just added EEPROM support to the 16F874/16F877. It's in CVS, but I
didn't make a tarball...

I'll be adding the program memory flash read/write next.

Ralf - Are you up to writing a program memory object viewer? I was
thinking of something based on gtksheet again, just program memory would
be displayed instead of register memory. 

Modifying program memory is going to have impact on the other windows.
Perhaps we should add xrefs to he object browser and source browser that
get invoked when program memory is changed. In the object browser, we
could update the window to reflect the new changes - perhaps highlighting
the modified locations with a unique color. For the source browser, I'm
not sure what we should do...

Does anyone have any suggestions on how 1) to present the contents of
program memory 2) to convey changes in the program memory?


Scott

Subject: Re: gpasm-0.18.1
From: Matthew Bowles ####@####.####
Date: 28 Feb 2000 05:31:55 -0000
Message-Id: <38BA0678.530925BD@dsp.com.au>

Scott Dattalo wrote:
> 
> On Mon, 28 Feb 2000, Matthew Bowles wrote:
> 
> >
> > >
> > > b) The 16C8xx devices (and in particularly the 16c877) are now supported.
> > > This is an over statement somewhat, because all I've done is allowed the
> > > instantiation of the devices, but have not provided the unique features
> > > they offer (the 10-bit A/D , flash , and extended ram sizes are not
> > > supported)
> > >
> >
> > Scott,
> >       up until now, whenever you said 16C877 I just assumed there was a
> > different product I hadn't heard of, but now i am convinced that all the
> > time you were meaning the 16F877. You threw me for a while.. so
> > basically, there's no 16c877. but thanks for adding features for the
> > 16F877, or at least up and coming features.
> 
> oops. At least it's an F877 in gpsim.
> 
> I just added EEPROM support to the 16F874/16F877. It's in CVS, but I
> didn't make a tarball...
> 
> I'll be adding the program memory flash read/write next.
> 
> Ralf - Are you up to writing a program memory object viewer? I was
> thinking of something based on gtksheet again, just program memory would
> be displayed instead of register memory.
> 
> Modifying program memory is going to have impact on the other windows.
> Perhaps we should add xrefs to he object browser and source browser that
> get invoked when program memory is changed. In the object browser, we
> could update the window to reflect the new changes - perhaps highlighting
> the modified locations with a unique color. For the source browser, I'm
> not sure what we should do...
> 
> Does anyone have any suggestions on how 1) to present the contents of
> program memory 2) to convey changes in the program memory?
> 
> Scott
> 

Show adjusted program memory values in a new colour, and perhaps have an
option available to auto-scroll the window to show the memory block
containing the recently adjusted memory location. obivously you can't
display all at once ,but can we select multiple and not neccessarily
adjacent blocks of memory to display.. that would be useful, for
instance, when picc locates some code around the reset vector and some
near 7FFh and some more at the end of the memory bank (1FFFh for the
16F877)....

don't know if this is hard... but suggestions are suggestions as my late
uncle used to say.

kidding.
matt
Subject: Re: gpasm-0.18.1
From: Ralf Forsberg ####@####.####
Date: 28 Feb 2000 17:07:29 -0000
Message-Id: <00022818322900.00917@small>

On Mon, 28 Feb 2000, you wrote:
>Scott Dattalo wrote:
>> 
>> I'll be adding the program memory flash read/write next.
>> 
>> Ralf - Are you up to writing a program memory object viewer? I was
>> thinking of something based on gtksheet again, just program memory would
>> be displayed instead of register memory.

<off topic>
I just got one of these 'ergonomic' keyboard, and I have BIG problems
finding the keys. :-) I'll have to relearn typing, but we'll see how
it goes.
</off topic>

>> Does anyone have any suggestions on how 1) to present the contents of
>> program memory 2) to convey changes in the program memory?
>> 
>
>Show adjusted program memory values in a new colour, and perhaps have an
>option available to auto-scroll the window to show the memory block
>containing the recently adjusted memory location. obivously you can't
>display all at once ,but can we select multiple and not neccessarily
>adjacent blocks of memory to display.. that would be useful, for
>instance, when picc locates some code around the reset vector and some
>near 7FFh and some more at the end of the memory bank (1FFFh for the
>16F877)....

How would you want to define memory areas to display?

My first thought was to select memory in the object browser and have
a menu item to add it?

 / Ralf
Subject: Re: gpasm-0.18.1
From: Scott Dattalo ####@####.####
Date: 28 Feb 2000 17:59:58 -0000
Message-Id: <Pine.LNX.4.05.10002281133350.25413-100000@tempest.blackhat.net>


On Mon, 28 Feb 2000, Ralf Forsberg wrote:

> <off topic>
> I just got one of these 'ergonomic' keyboard, and I have BIG problems
> finding the keys. :-) I'll have to relearn typing, but we'll see how
> it goes.
> </off topic>
> 
> >> Does anyone have any suggestions on how 1) to present the contents of
> >> program memory 2) to convey changes in the program memory?
> >> 
> >
> >Show adjusted program memory values in a new colour, and perhaps have an
> >option available to auto-scroll the window to show the memory block
> >containing the recently adjusted memory location. obivously you can't
> >display all at once ,but can we select multiple and not neccessarily
> >adjacent blocks of memory to display.. that would be useful, for
> >instance, when picc locates some code around the reset vector and some
> >near 7FFh and some more at the end of the memory bank (1FFFh for the
> >16F877)....
> 
> How would you want to define memory areas to display?

The .cod file has this information encoded in it. But you'd still have
this problem if the memory you wish to view is modified by your program
but not specified in your assembly file (e.g. suppose you want to use the
whole upper half of the program memory to store data acquired from some
measurement. You wouldn't necessarily define this area in your code.)

> 
> My first thought was to select memory in the object browser and have
> a menu item to add it?

I think that would be the way. Essentially have a tab that allows the
object browser select which mode to view the object code: either as
disassembled source or as a 2D spreadsheet.

Some of the features:

1) Highlight the active instruction (the one that the PC points too).
2) Show locations that have changed since the hex code was loaded in a
different background color the original code (like a light gray instead of
white).
3) Right click to bring up a menu that allows:
   a) Set execution break point on the select location(s)
   b) Set read break points
   c) Set write break points
4) Allow the user to edit the program memory within either the sheet or
the edit field at the top of the sheet (like the one that is in the
register viewer)
5) As an alternative to entering raw opcodes also allow mnemonics to be
entered.
6) Show the equivalent ascii in a column to the right of the program
memory (like in the register window). Perhaps allow the ascii column to be
decoded in one of two ways:
  - show the ascii equivalent for just the lower 8 bits (this
    would be useful for decoding retlw encoded strings)
  - show the ascii equivalent of the two 7-bit numbers that
    result when the 14-bit number is split in half. On the 18cxxx
    family, we could make this two 8-bit numbers. It doesn't make
    a whole lot of sense to do this on the 12-bit cores since the
    program memory is not readable.
7) ???


Scott

Subject: Re: gpasm-0.18.1
From: Matthew Bowles ####@####.####
Date: 28 Feb 2000 22:23:11 -0000
Message-Id: <38BAF384.6793B1CB@dsp.com.au>

> 
> The .cod file has this information encoded in it. But you'd still have
> this problem if the memory you wish to view is modified by your program
> but not specified in your assembly file (e.g. suppose you want to use the
> whole upper half of the program memory to store data acquired from some
> measurement. You wouldn't necessarily define this area in your code.)
> 
> >
> > My first thought was to select memory in the object browser and have
> > a menu item to add it?
> 
> I think that would be the way. Essentially have a tab that allows the
> object browser select which mode to view the object code: either as
> disassembled source or as a 2D spreadsheet.
> 
> Some of the features:
> 
> 1) Highlight the active instruction (the one that the PC points too).
> 2) Show locations that have changed since the hex code was loaded in a
> different background color the original code (like a light gray instead of
> white).
> 3) Right click to bring up a menu that allows:
>    a) Set execution break point on the select location(s)
>    b) Set read break points
>    c) Set write break points
> 4) Allow the user to edit the program memory within either the sheet or
> the edit field at the top of the sheet (like the one that is in the
> register viewer)
> 5) As an alternative to entering raw opcodes also allow mnemonics to be
> entered.
> 6) Show the equivalent ascii in a column to the right of the program
> memory (like in the register window). Perhaps allow the ascii column to be
> decoded in one of two ways:
>   - show the ascii equivalent for just the lower 8 bits (this
>     would be useful for decoding retlw encoded strings)
>   - show the ascii equivalent of the two 7-bit numbers that
>     result when the 14-bit number is split in half. On the 18cxxx
>     family, we could make this two 8-bit numbers. It doesn't make
>     a whole lot of sense to do this on the 12-bit cores since the
>     program memory is not readable.
> 7) ???
> 
> Scott
> 


If you can go this far without to much trouble, perhaps it is becoming a
small step for gpsim to accept .asm files. i know there's more to
compiling than converting mnemonics to opcodes, but if you can do that..
well maybe there's a gpsim.0.19 w/ assembler.

as for the idea of entering instructions into program memory, sounds
very good.

Matt
Subject: Re: gpasm-0.18.1
From: Ralf Forsberg ####@####.####
Date: 29 Feb 2000 11:39:02 -0000
Message-Id: <00022913041300.01250@small>

On Mon, 28 Feb 2000, you wrote:
>On Mon, 28 Feb 2000, Ralf Forsberg wrote:
>
>> >> Does anyone have any suggestions on how 1) to present the contents of
>> >> program memory 2) to convey changes in the program memory?
>> >> 
>> >
>> >Show adjusted program memory values in a new colour, and perhaps have an
>> >option available to auto-scroll the window to show the memory block
>> >containing the recently adjusted memory location. obivously you can't
>> >display all at once ,but can we select multiple and not neccessarily
>> >adjacent blocks of memory to display.. that would be useful, for
>> >instance, when picc locates some code around the reset vector and some
>> >near 7FFh and some more at the end of the memory bank (1FFFh for the
>> >16F877)....
>> 
>> How would you want to define memory areas to display?
>
>The .cod file has this information encoded in it. But you'd still have
>this problem if the memory you wish to view is modified by your program
>but not specified in your assembly file (e.g. suppose you want to use the
>whole upper half of the program memory to store data acquired from some
>measurement. You wouldn't necessarily define this area in your code.)

I don't think we can add all of memory (in the case of a large
program), that would make the sheet really slow. We need a way to
select memory.

How much program memory is there in the largest pic?

 / Ralf
Subject: Re: gpasm-0.18.1
From: Scott Dattalo ####@####.####
Date: 29 Feb 2000 12:41:08 -0000
Message-Id: <Pine.LNX.4.05.10002290609550.1514-100000@tempest.blackhat.net>


On Tue, 29 Feb 2000, Ralf Forsberg wrote:

> 
> On Mon, 28 Feb 2000, you wrote:
> >On Mon, 28 Feb 2000, Ralf Forsberg wrote:
> >
> >> >> Does anyone have any suggestions on how 1) to present the contents of
> >> >> program memory 2) to convey changes in the program memory?
> >> >> 
> >> >
> >> >Show adjusted program memory values in a new colour, and perhaps have an
> >> >option available to auto-scroll the window to show the memory block
> >> >containing the recently adjusted memory location. obivously you can't
> >> >display all at once ,but can we select multiple and not neccessarily
> >> >adjacent blocks of memory to display.. that would be useful, for
> >> >instance, when picc locates some code around the reset vector and some
> >> >near 7FFh and some more at the end of the memory bank (1FFFh for the
> >> >16F877)....
> >> 
> >> How would you want to define memory areas to display?
> >
> >The .cod file has this information encoded in it. But you'd still have
> >this problem if the memory you wish to view is modified by your program
> >but not specified in your assembly file (e.g. suppose you want to use the
> >whole upper half of the program memory to store data acquired from some
> >measurement. You wouldn't necessarily define this area in your code.)
> 
> I don't think we can add all of memory (in the case of a large
> program), that would make the sheet really slow. We need a way to
> select memory.

Have you heard anything from Adrian recently about gtksheet's efficiency
problems?

> 
> How much program memory is there in the largest pic?

Some of the 18cxxx parts have up to 32k internal. The 16f877 has 8k.

I'm not sure if there's a convenient way of getting around the problem of
having to show all of memory. I haven't tried to dynamically vary the
characteristics or attributes of gtk sheet, although I know it's possible
(the demos in gtk sheet let you add and delete rows dynamically). So, one
possibility could be to notify the gui whenever a program memory location
is accessed. Perhaps we can limit it to program memory writes. But at some
point, the user is going to want modify program memory that hasn't yet
been accessed by either the .cod files or by the simulated pic. So we'll
still be stuck with the problem of selecting which portion of memory to
view. Furthermore, eventually someone is going to want to be able to see
*all* of the program memory. I guess we need to convince Adrian to improve
gtksheet's efficiency...


Scott

Subject: Re: gpasm-0.18.1
From: Scott Dattalo ####@####.####
Date: 29 Feb 2000 14:40:51 -0000
Message-Id: <Pine.LNX.4.05.10002290821410.5553-100000@tempest.blackhat.net>


On Tue, 29 Feb 2000, Matthew Bowles wrote:

> If you can go this far without to much trouble, perhaps it is becoming a
> small step for gpsim to accept .asm files. i know there's more to
> compiling than converting mnemonics to opcodes, but if you can do that..
> well maybe there's a gpsim.0.19 w/ assembler.

I don't think so... It's one thing to decode an instruction, but an
entirely different thing to implement an assembler. I'd spawn gpasm before
writing a gpsim assembler. What I was thinking about instead was to accept
one assembly instruction at a time. I couldn't read a raw assembly file
(unless it was formatted perfectly) because often times there are forward
references. (gpasm is a two-pass assembler - on the first pass, all of the
forward references are resolved and on the second the code is generated).

I doubt that this feature will appear in gpsim-0.19.0. There's a whole lot
of infrastructure that would have to be created to support it. (But
perhaps creating a one-line assembly program and spawning it off to gpasm
wouldn't be a bad idea...) I only mentioned it to throw out some ideas and
stimulate some discussions like these.

Scott

[<<] [<] Page 1 of 2 [>] [>>]


Powered by ezmlm-browse 0.20.