English Amiga Board


Go Back   English Amiga Board > Main > Amiga scene

 
 
Thread Tools
Old 17 August 2020, 16:59   #801
Michael
A1260T/PPC/BV/SCSI/NET
 
Michael's Avatar
 
Join Date: Jan 2013
Location: Moscow / Russia
Posts: 840
Another nail into Guru's coffin. It was heavily connected to the chipset, and since OS moved towards RTG support it had to go. How many years was it with us? And that is only a fraction of Amiga's life. Time to move forward and cherish memories, and not getting amused by frustration.
Michael is offline  
Old 17 August 2020, 17:07   #802
coldacid
WinUAE 4000/40, V4SA
 
coldacid's Avatar
 
Join Date: Apr 2020
Location: East of Oshawa
Posts: 538
Quote:
Originally Posted by Michael View Post
What's wrong ? We have english and french versions.
If you advise what's required, it might just be implemented now.

Since I don't speak French, I can only assume that canada_français.country is correct, but for canada.country the decimal separator and time/date format strings have never been correct. I have no problem doing the work to fix the files up myself, but I need the chunk spec so I can properly update the file.
coldacid is offline  
Old 17 August 2020, 18:46   #803
boemann
Camilla, AmigaOS Dev.
 
Join Date: Mar 2020
Location: Frederiksberg
Posts: 329
Quote:
Originally Posted by Warty View Post
@Boemann, about the textedit.gadget, can you share any more information?
- any built in 'save'/'load' functionality? if so, what does that look like?
- any provision for user-supplied markup? not the syntax highlighting that an app might provide, but bold, italic, etc.
- curious about performance. Running on bare 68000 is mentioned a few times, but I think of the old 1.x notepad app, and you could actually see the characters get drawn as you typed them. In general, Amiga editors and word processors always seemed slow to render characters, compared to same-generation Macs. I never knew if that was because every Amiga programmer had to write their own low level rendering (the mac toolbox (or whatever the ROM was called) provided a decent chunk of fast asm routines that could be used for stuff like that), or if it was more related to how intuition/KS worked overall.

Anyway, excited for the new text gadget, sounds great.
load and save is not done directly to file. As a programmer you have to implement that yourself. You basically give the gadget a buffer and it copies the text in either direction. This buffer needs to hold everything which naturally is a waste of memory, but for 3.2 I'm not improving on that.

User supplied markup is not supported in 3.2. The rendering engine actually does support it (same code that renders syntax highlighting), but the editing and undo/redo code doesn't and will mess it up so it is not enabled.

Performance is as said tested regularly on A500 but naturally you will not get miracles. There is only so much a 68000 can do. It is not really the copy pixels to screen that is the biggest problem and on an A500 the blitter is faster than asm anyway. Some of the tricks to get decent performance is to not render things more than once and to only render things that change. There is also performance to be gained from structuring the data the right way.
boemann is offline  
Old 17 August 2020, 19:19   #804
Thomas Richter
Registered User
 
Join Date: Jan 2019
Location: Germany
Posts: 3,247
Quote:
Originally Posted by Warty View Post
- curious about performance. Running on bare 68000 is mentioned a few times, but I think of the old 1.x notepad app, and you could actually see the characters get drawn as you typed them. In general, Amiga editors and word processors always seemed slow to render characters, compared to same-generation Macs. I never knew if that was because every Amiga programmer had to write their own low level rendering (the mac toolbox (or whatever the ROM was called) provided a decent chunk of fast asm routines that could be used for stuff like that), or if it was more related to how intuition/KS worked overall.

Multiple factors add to the slowness of Notepad, and it is an interesting example of "failed software design". The old notepad keeps its text in a linear buffer, with line breaks indicated as LF (0x0a) and font and rendering changes as CSI sequences. Whenever you insert a character, it rescans its buffer, which takes its time.



To give an example. ViNCEd has a sane design where lines are represented as separate structures, and inserting or editing lines only requires updates of a line, and not scanning the full buffer.



A second factor is the Kick 1.3 "Text" function which renders glyph by glyph by a single blit, thus even if you draw 20 characters, the blitter is started 20 times instead of first fitting the glyphs in the buffer and blitting them in one go, as 2.0 does it.
Thomas Richter is offline  
Old 18 August 2020, 00:59   #805
Warty
Registered User
 
Join Date: Aug 2018
Location: Minneapolis, USA
Posts: 301
Quote:
Originally Posted by boemann View Post
load and save is not done directly to file. As a programmer you have to implement that yourself. You basically give the gadget a buffer and it copies the text in either direction. This buffer needs to hold everything which naturally is a waste of memory, but for 3.2 I'm not improving on that.

User supplied markup is not supported in 3.2. The rendering engine actually does support it (same code that renders syntax highlighting), but the editing and undo/redo code doesn't and will mess it up so it is not enabled.

Performance is as said tested regularly on A500 but naturally you will not get miracles. There is only so much a 68000 can do. It is not really the copy pixels to screen that is the biggest problem and on an A500 the blitter is faster than asm anyway. Some of the tricks to get decent performance is to not render things more than once and to only render things that change. There is also performance to be gained from structuring the data the right way.
Thanks for the additional info. I must have a low threshold for excitement, but I'm pretty thrilled it has an undo stack built in. I *#$*@# hate programming undo stacks. The whole-buffer-at-once thing is going to put some practical performance limits in (especially for 68000s @ 7MHz), but probably something clever can be though of to deal with that for larger docs. Formatting: for next time then!
Warty is offline  
Old 18 August 2020, 01:12   #806
Warty
Registered User
 
Join Date: Aug 2018
Location: Minneapolis, USA
Posts: 301
Quote:
Originally Posted by Thomas Richter View Post
Multiple factors add to the slowness of Notepad, and it is an interesting example of "failed software design". The old notepad keeps its text in a linear buffer, with line breaks indicated as LF (0x0a) and font and rendering changes as CSI sequences. Whenever you insert a character, it rescans its buffer, which takes its time.
I had to try it again after that info, and did some pasting... fascinating! it inserts each character one by one. I didn't remember that. Strange app. I'm sure someone had 8 hours to design it or something.
Warty is offline  
Old 18 August 2020, 16:03   #807
malko
Ex nihilo nihil
 
malko's Avatar
 
Join Date: Oct 2017
Location: CH
Posts: 4,935
Regarding the "GURU MEDITATION" parenthesis, just discovered that the Nintendo DS use the same wording
Former Amiga engineers ?

Source : Wikipedia
malko is offline  
Old 18 August 2020, 20:00   #808
coldacid
WinUAE 4000/40, V4SA
 
coldacid's Avatar
 
Join Date: Apr 2020
Location: East of Oshawa
Posts: 538
Probably just homage. There's a number of other systems and software out there that use the message as well that have no Amiga connection other than some developers probably enjoyed using one as kids.
coldacid is offline  
Old 18 August 2020, 20:58   #809
Minuous
Coder/webmaster/gamer
 
Minuous's Avatar
 
Join Date: Oct 2001
Location: Canberra/Australia
Posts: 2,651
Quote:
Originally Posted by coldacid View Post
Oh, by the way, will we finally get a correct country file for English Canada? If I could have the spec for the IFF CTRY chunk I could supply a corrected canada.country with the generally accepted locale values here.
The format is documented in prefs/locale.h.

I did some investigation and it looks like the decimal point is indeed wrong, it should be "." instead of ",". For the thousands separator, it would appear that the official separator is " ", even though "," is widely used (which is the same situation as here), so that should probably stay as " ".

Last edited by Minuous; 18 August 2020 at 21:26.
Minuous is offline  
Old 18 August 2020, 23:12   #810
coldacid
WinUAE 4000/40, V4SA
 
coldacid's Avatar
 
Join Date: Apr 2020
Location: East of Oshawa
Posts: 538
Minuous: I've side-channeled updates for canada.country and canada_français.country via another dev. The date/time strings as well as the currency code all needed correction as well, since (at least in English Canada) we are still de facto on 12h time, but with correct / European date ordering instead of that horrid American format.
coldacid is offline  
Old 19 August 2020, 08:24   #811
Tigerskunk
Inviyya Dude!
 
Tigerskunk's Avatar
 
Join Date: Sep 2016
Location: Amiga Island
Posts: 2,784
Quote:
Originally Posted by malko View Post
Regarding the "GURU MEDITATION" parenthesis, just discovered that the Nintendo DS use the same wording
Former Amiga engineers ?

Source : Wikipedia
It's a homage. The Guru is a part of early computer geek culture, and you see it again and again somewhere over the years..
Tigerskunk is offline  
Old 19 August 2020, 08:50   #812
nikosidis
Registered User
 
Join Date: Jan 2020
Location: oslo/norway
Posts: 1,609
What you can do for a future classic update is a more advanced joystick interface "lowlevel.lib" Add support for analogue joysticks.
nikosidis is offline  
Old 19 August 2020, 11:17   #813
Tigerskunk
Inviyya Dude!
 
Tigerskunk's Avatar
 
Join Date: Sep 2016
Location: Amiga Island
Posts: 2,784
I hope you guys removed or renamed "GimmeZeroZero()" as well, such a silly nonsense function call name cannot be tolerated in a serious OS.
Tigerskunk is offline  
Old 19 August 2020, 12:35   #814
Olaf Barthel
Registered User
 
Join Date: Aug 2010
Location: Germany
Posts: 532
Quote:
Originally Posted by Steril707 View Post
I hope you guys removed or renamed "GimmeZeroZero()" as well, such a silly nonsense function call name cannot be tolerated in a serious OS.
Naming things well is reportedly one of the traditionally hard challenges in computer sciences (and real life, too, I guess). And it probably doesn't get any less challenging if you've spent so much time implementing the code for the upcoming CES that you're not getting enough sleep

GimmeZeroZero is an odd feature. I wonder whether the original Intuition had all non-borderless windows sport the GimmeZeroZero property by default. Without the GimmeZeroZero property, rendering to the window contents needs to be adjusted to skip the window borders, which is not always an option, e.g. line drawing becomes harder if you have to figure out where the clipping needs to take place. Also, you could get the same visual results with InstallClipRegion(), you'd just have to adjust the origin of the top left corner of the area surrounded by the border a bit.

I think GimmeZeroZero is in the best company as far as naming stuff in this domain goes
Olaf Barthel is offline  
Old 19 August 2020, 12:40   #815
Olaf Barthel
Registered User
 
Join Date: Aug 2010
Location: Germany
Posts: 532
Quote:
Originally Posted by malko View Post
Regarding the "GURU MEDITATION" parenthesis, just discovered that the Nintendo DS use the same wording
Former Amiga engineers ?
Working for Nintendo? Probably not: these engineers were more likely to work for other companies in the same general Silicon Valley area.

The "Guru Meditation" could be described as an intentionally puzzling message produced by a computer, not intended for anyone but the Gurus who put it there. That's a meme, which begs to be imitated

Last edited by Olaf Barthel; 19 August 2020 at 16:08.
Olaf Barthel is offline  
Old 19 August 2020, 13:18   #816
Thomas Richter
Registered User
 
Join Date: Jan 2019
Location: Germany
Posts: 3,247
Quote:
Originally Posted by Olaf Barthel View Post
GimmeZeroZero is an odd feature. I wonder whether the original Intuition had all non-borderless windows sport the GimmeZeroZero property by default. Without the GimmeZeroZero property, rendering to the window contents needs to be adjusted to skip the window borders, which is not always an option, e.g. line drawing becomes harder if you have to figure out where the clipping needs to take place. Also, you could get the same visual results with InstallClipRegion(), you'd just have to adjust the origin of the top left corner of the area surrounded by the border a bit.

I think GimmeZeroZero is in the best company as far as naming stuff in this domain goes

Well, at least the naming of "GimmeZeroZero" is logical, even though it is slang. But I never understood the actual implementation of this feature, namely to give the rendering region of the window a separate layer. Which means additional work when the window is moved, which can be seen on old slow machines. The contents shifts independent from the window frame, really odd. Double resources, twice as slow, additional overhead for nothing.



Actually, *NOT* making GimmeZeroZero the default is also bewildering me as it requires the application writer to implement some "soft clipping" for the window frame borders himself instead of leaving this to layers, which can do the same just more reliable.



If I had to re-implement this type of logic, I would always make an installation of a clip rect and a rendering offset the default. Pretty much similar to what X11 does, which just draws the decoration around the existing window body, but does not allow drawing into the decoration (as intuition does). Actually, the Pascal "windowlib" I provided as abstraction for intuition does exactly that, to ease the life of the programmer.
Thomas Richter is offline  
Old 19 August 2020, 13:41   #817
Tigerskunk
Inviyya Dude!
 
Tigerskunk's Avatar
 
Join Date: Sep 2016
Location: Amiga Island
Posts: 2,784
Same reason why we have 'Firewalls' and 'Daemons'.
Tigerskunk is offline  
Old 19 August 2020, 19:38   #818
aros-sg
Registered User
 
Join Date: Nov 2015
Location: Italy
Posts: 191
Quote:
Originally Posted by Thomas Richter View Post
If I had to re-implement this type of logic, I would always make an installation of a clip rect and a rendering offset the default. Pretty much similar to what X11 does, which just draws the decoration around the existing window body, but does not allow drawing into the decoration (as intuition does). Actually, the Pascal "windowlib" I provided as abstraction for intuition does exactly that, to ease the life of the programmer.

x11 has child windows (windows inside windows) and there the window managers create a new window for the border decoration and then re-parent the application window into that border window (parent window of application window = border window). So in X11 you actually have two windows (or layers), too, like with GZZ.


In AROS you can attach one clip rect to a rastport, with the special feature that the right/bottom of it can be relative to layer width/height (-> is not scared about evil async window resizing). This is a ~"runtime" clip rect applied in addition to ~"compiled" layer clip rects.
aros-sg is offline  
Old 19 August 2020, 19:52   #819
Thomas Richter
Registered User
 
Join Date: Jan 2019
Location: Germany
Posts: 3,247
Quote:
Originally Posted by aros-sg View Post
x11 has child windows (windows inside windows) and there the window managers create a new window for the border decoration and then re-parent the application window into that border window (parent window of application window = border window). So in X11 you actually have two windows (or layers), too, like with GZZ.
Thanks for correcting this. Indeed, window decorations are a separate window indeed.


Quote:
Originally Posted by aros-sg View Post
In AROS you can attach one clip rect to a rastport, with the special feature that the right/bottom of it can be relative to layer width/height (-> is not scared about evil async window resizing). This is a ~"runtime" clip rect applied in addition to ~"compiled" layer clip rects.
This sounds like fixing the problem at the wrong spot. It is not the rastport that is resized as rastports do not have sizes, but rather intuition resizing the layer as part of the window. It would be the job of intuition of fixing "its own" cliprect as it is also responsible for resizing the layer of the window.


That intuition does not implement GZZ by means of cliprects is something that bewilders me.
Thomas Richter is offline  
Old 20 August 2020, 07:43   #820
aros-sg
Registered User
 
Join Date: Nov 2015
Location: Italy
Posts: 191
Quote:
Originally Posted by Thomas Richter View Post
That intuition does not implement GZZ by means of cliprects is something that bewilders me.

Layer cliprects are slow and can eat lot of memory. If you have a smart refresh window with an installed clipping region to inner window area, and the window is hidden behind some other window. Then the hidden areas are backed up twice. And the clipping region will regularly be NULLed and then re-installed by Intuition when doing things like rendering gadgets or window border frame. In case of (partly) hidden smart refresh windows changing clipping region includes blitting stuff around as you know.
aros-sg is offline  
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
AmigaOS 3.1.x v 3.9 steve_mynott New to Emulation or Amiga scene 35 19 April 2020 06:23
AmigaOS 3.9 PoLoMoTo support.WinUAE 8 27 August 2011 18:06
AmigaOS 3.5 or 3.9 maddoc666 support.Apps 12 22 February 2010 08:02
AmigaOS koncool request.Apps 6 04 June 2003 17:45
AmigaOS XL sturme New to Emulation or Amiga scene 4 15 January 2002 02:13

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 06:54.

Top

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Page generated in 0.12582 seconds with 14 queries