home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #3 / amigamamagazinepolishissue1998.iso / ahi / history < prev    next >
Text File  |  1997-11-02  |  21KB  |  552 lines

  1.  
  2.                              Revision history
  3.                              ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  4.  
  5. ahi.device
  6. ¯¯¯¯¯¯¯¯¯¯
  7.  
  8. 1.32
  9.         · AHI is no longer a library, but a device ("ahi.device").
  10.         · Doubled volume for stereo modes without panning.
  11.         · Changed the audio IDs for paula and wavetools.
  12.         · Moved the audio drivers from LIBS:AHI to DEVS:AHI.
  13.  
  14. 1.286
  15.         · 'Cancel' text in the requester defaulted to the swedish word for
  16.             cancel.  Oops.
  17.         · AHI_GetAudioAttrsA() now takes 3 arguments instead of 2.
  18.         · Improved mixing rutines for AHIST_M8U samples a bit.  More
  19.             changes are needed!
  20.         · AHI_SetEffect() now only takes 2 arguments, and cannot be called
  21.             from interrupts anymore.
  22.         · Added the first effect:  AHIET_MASTERVOLUME.
  23.         · Removed some useless mixing routines and added a few other.
  24.             When not using panning things should be faster now.
  25.         · Added a new database tag:  AHIDB_Realtime.
  26.         · AHI_ControlAudioA() now returns an error code.
  27.         · More new data base tags:  AHIDB_MaxPlaySamples,
  28.             AHIDB_MaxRecordSamples and AHIDB_MixFreq.
  29.         · The way audio drivers tell ahi.device it can be used for
  30.             recording has changed.
  31.         · Added second effect:  AHIET_OUTPUTBUFFER.
  32.         · Sample frequencies can now be up to 131071 Hz, which should be
  33.             enough for most users.
  34.         · Improved most of the mixing routines.  Fixed some bugs in the 16
  35.             bit routines aswell.
  36.         · The requester now has menus and is keyboard controllable.
  37.         · Yet another new database tag:  AHIDB_FullDuplex.
  38.         · Samples can now be played backwards (AHIST_LOOP sounds, however,
  39.             cannot.  ).
  40.         · I had to change the AHIAudioCtrl structure a little.  Old
  41.             drivers will NOT work any longer - they will probably crash!
  42.             Hey, it's still a beta version - I'm allowed to do such things!
  43.         · The requester tags has been redefined, a recompile is
  44.             neccessary.
  45.         · Removed a memory leak in AHI_AudioRequestA().
  46.         · New tags for AHI_ControlAudioA():  AHIC_MonitorVolume and
  47.             AHIC_MonitorVolume_Query.
  48.         · Removed the AHIDB_MixFreq tag in AHI_GetAudioAttrsA() and added
  49.             AHIC_MixFreq_Query for AHI_ControlAudioA().
  50.         · Cursor keys can now control the audio mode requester.
  51.         · Added 32 bit mixing routines with linear interpolation.
  52.  
  53. 2.4
  54.         · New field in the AHIAudioCtrlDrv structure:  ahiac_BuffType.
  55.         · Rewrote parts of the mixing routines.  Sometimes they read one
  56.             sample to much, causing clicks.  Hopefully they work now.  The
  57.             new routine is a little faster, by the way...
  58.         · Fixed the 32 bit linear interpolation mixing routines; they
  59.             ALWAYS read at least one sample too much, sometimes two.
  60.         · Loads of new tags for AHI_ControlAudioA():  AHIC_InputGain,
  61.             AHIC_InputGain_Query, AHIC_OutputVolume, AHIC_OutputVolume_Query,
  62.             AHIC_Input, AHIC_Input_Query, AHIC_Output, and AHIC_Output_Query.
  63.         · Even more new tags for AHI_GetAudioAttrsA():
  64.             AHIDB_MinMonitorVolume, AHIDB_MaxMonitorVolume,
  65.             AHIDB_MinInputGain, AHIDB_MaxInputGain, AHIDB_MinOutputVolume,
  66.             AHIDB_MaxOutputVolume, AHIDB_Inputs, AHIDB_InputArg, AHIDB_Input,
  67.             AHIDB_Outputs, AHIDB_OutputArg and AHIDB_Output.
  68.         · Increased the maximum frequency a sample can be played at to
  69.             262143 Hz.
  70.         · Previously, the requested number of channels was rounded to an
  71.             even power of two, i.e.  an 18 channel song actually used 32
  72.             channels.  This is no longer the case.
  73.  
  74. 2.23
  75.         · Fixed a bug in AHI_GetAudioAttrsA():  Strings was not always
  76.             NULL- terminated.
  77.         · CloseDevice() trashed some registers it shouldn't.  Not so
  78.             anymore.
  79.         · By mistake I used the function graphics.library/SetRPAttrs() in
  80.             the requester code, which caused AHI to crash on pre-39 machines.
  81.         · Fixed some bugs in the autodocs
  82.             AHI_AllocAudioA()/AHIA_RecordFunc.  Note that the RecordFunc must
  83.             return NULL from now on!
  84.         · All PlayerFreq related values should now be Fixed instead of
  85.             ULONG.  A kludge has been added to keep old programs going for
  86.             some time.
  87.  
  88. 3.861
  89.         · Small bug fix in the requester code.
  90.         · AHI_DEFAULT_ID as AHIA_AudioID tag data (AHI_AllocAudioA())
  91.             didn't work.
  92.         · New function:  AHI_PlayA().
  93.         · MC68000-version added.
  94.         · New mode for audio drivers:  AHISB_CANPOSTPROCESS.
  95.         · Bug fix:  Turning off the AHIET_OUTPUTBUFFER effect resulted in
  96.             an endless loop.
  97.         · Surround support added.
  98.         · New effects:  AHIET_DSPMASK and AHIET_DSPECHO.
  99.         · New function:  AHI_SampleFrameSize().
  100.         · New (private) functions:  AHI_AddAudioMode(),
  101.             AHI_RemoveAudioMode() and AHI_LoadModeFile().
  102.         · AddAudioModes does not have to be run before AHI can be used
  103.             anymore.  When 'ahi.device' is loaded, it will check if the audio
  104.             mode database is loaded.  If not, it will automatically scan
  105.             DEVS:AudioModes/ for mode files and add them.
  106.         · Rewrote the last three non-critical functions in C instead of
  107.             assembly.
  108.         · Added the new tag AHIB_Dizzy to AHI_BestAudioIDA().
  109.         · New "effect":  AHIET_CHANNELINFO.
  110.         · The first two device commands added:  CMD_READ and CMD_WRITE
  111.         · The (obsolete) MultiLoop feature is not totally gone.
  112.         · Removed a bunch of mixing routines that almost never were used
  113.             anyway.
  114.         · AHI_LoadSound() does not handle unsigned 8 bit samples anymore.
  115.             You'll have to convert such samples before they can be played
  116.             from now on.
  117.         · Added Storm C include files.
  118.         · More device commands:  CMD_RESET, CMD_STOP, CMD_START and
  119.             CMD_FLUSH.
  120.         · Stereo sounds can now be used too.
  121.         · Max frequency for AHI_SetFreq() increased once again:  1048575.
  122.         · Added two functions to calculate CPU usage and avoid lockups
  123.             (ahiac_PreTimer and ahiac_PostTimer).
  124.         · Localized it.
  125.  
  126. 3.948
  127.         · AHIR_Locale should work now.
  128.         · AHIDB_MaxChannels didn't work in AHI_BestAudioID().
  129.         · The users preferred audio mode can now be selected in the
  130.             requester, by setting AHIR_DoDefaultMode to TRUE.
  131.         · Added an infowindow to the requester.
  132.         · All functions that take an audio mode id as input can now use
  133.             AHI_DEFAULT_ID as well.
  134.         · CMD_READ should actually work now.  I hope.
  135.         · Faster 16 bit mixing of 16 bit samples when using a "fast" mode.
  136.         · New flag for OpenDevice():  AHIDF_NOMODESCAN (private).
  137.         · (Wrote user docs.)
  138.         · (Updated "Programming Guidelines".)
  139.  
  140. 3.1080
  141.         · CMD_STOP and CMD_START should work better now?
  142.         · The freqgadget wasn't ghosted if the requester was opened with
  143.             audioid set to AHI_DEFAULT_ID.  Now it is.
  144.         · Up to 4 device units are now available.
  145.         · No more alignment restriction for CMD_WRITE.
  146.         · Removed IORequest size check for OpenDevice(AHI_NO_UNIT) in
  147.             order to make some programs that open V3 without a valid V3
  148.             AHIRequest work.
  149.         · AHIST_INPUT redefined.
  150.         · Rewrote AHI_LoadSound() and AHI_UnloadSound() in C.
  151.         · Playing 16 bit stereo samples in mono-not-fast mode did not
  152.             work.
  153.         · AHI_BestAudioID() and FilterTags in the audio mode requester had
  154.             got the FullDuplex flag all wrong.
  155.         · The audio mode requester can now handle AHIR_PubScreenName set
  156.             to NULL, meaning that is should open on the default public
  157.             screen.
  158.         · The echo routines is now rewritten.  "Fast echo" routines added.
  159.             "No-cross-Full-mix" too.
  160.         · I tried to get AHIST_INPUT working, but I couldn't make the
  161.             recording and playback sync.  I suspect the problem is in the
  162.             Paula driver, but I don't know...
  163.  
  164. 3.1091
  165.         · Major bug in the device interface code fixed.  It could crash,
  166.             and never used more that one channel.
  167.         · Amiga E modules added.
  168.  
  169. 4.20
  170.         · Bumped version to 4.
  171.         · (Transformed "Programming Guidelines" into "AHI Developer's
  172.             Guide".)
  173.         · Added AHIE_HALFDUPLEX error code.
  174.  
  175. 4.26
  176.         · Some tweaks...
  177.         · AHIET_DSPMASK didn't work!  Now it does.
  178.  
  179. 4.99
  180.         · Fixed a race condition when playing small chunks with CMD_WRITE.
  181.         · Fixed the problems with unreplied IO requests.
  182.         · Fixed a lockup problem with CMD_START (it's still far from
  183.             perfect).
  184.         · Fixed some problems in AHI_BestAudioIDA().
  185.         · ahiam_AudioID and ahiam_MixFreq are now left unchanged if the
  186.             user cancels the audio mode requester.
  187.         · Added optional clipping when using master volume > 100%.  So
  188.             there.
  189.         · The functions that returned BOOL (AHI_GetAudioAttrsA() and
  190.             AHI_AudioRequestA()) now sets all 32 bits and not just the lower
  191.             word of the return code (BOOL is only 16 bit).
  192.         · Bug fixes in the "normal" mixing routines (not fast or hifi).
  193.         · Much faster HiFi routines.
  194.  
  195. 4.109
  196.         · Oops!  I had some debug code left in the device (flashing
  197.             backgrounds, anyone?)...
  198.         · Added 68060 version.
  199.  
  200. 4.158 (R4.14)
  201.         · AHI_LoadSound() now returns an error if the user tries to play
  202.             unsigned samples in HiFi modes (i.e., I removed the
  203.             AHI-Noteplayer-for-Delitracker kludge).
  204.         · AHI_LoadSound() always returned 0 if the driver overloaded the
  205.             function.  Now it returns the correct value.
  206.         · AHI_SetEffect() would return 0 even if the driver overloaded the
  207.             function.
  208.         · Fixed an overflow error in the HiFi-routines.
  209.         · Removed distortion when playing sounds backwards in HiFi mode.
  210.         · CMD_START was never executed...  Sigh.
  211.         · NSCMD_DEVICEQUERY didn't know about CMD_START and CMD_STOP.
  212.         · Echo will no longer trash memory.
  213.         · Bug in the 32 bit stereo echo routine removed.
  214.  
  215. 4.164
  216.         · Bug fixes in the HiFi routines.  There was also debug code left
  217.             (!), that disabled stereo for some 16 bit samples.
  218.         · Booleans variables in the tag lists and the audio mode database
  219.             are now compared using logical XNOR instead of equality.
  220.  
  221. 4.165
  222.         · Removed an accidental KPrintF() from the device code.
  223.  
  224. 4.180 (R4.15)
  225.         · Improved debugger output.
  226.  
  227.  
  228. AHI preferences
  229. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  230. 0.1
  231.         · There is now a prefs program, written by Ruediger Sopp, that can
  232.             be used to select default audio mode, frequency etc.
  233.  
  234. 1.0
  235.         · New preferences program, rewritten from scratch.  This one
  236.             (barely) fits on a 640×200 screen using Topaz 8.
  237.  
  238. 4.3
  239.         · Bumped version to 4.
  240.         · Localized it.
  241.         · "Reset to Defaults" didn't reset the Global Options.
  242.         · "Restore" fixed (always loaded ENV:Sys/ahi.prefs, even if
  243.             invoked with a FROM argument.
  244.  
  245. 4.5
  246.         · New global option:  Mastervolume with(%|out) clipping.
  247.         · MUI version written by Stéphane Barbaray added.
  248.         · Small bug fix in the MUI version, and CTRL-C also works now.
  249.  
  250.  
  251. AddAudioModes
  252. ¯¯¯¯¯¯¯¯¯¯¯¯¯
  253. 1.1
  254.         · AddAudioModes rewritten.  New switch:  REMOVE.
  255.  
  256. 1.2
  257.         · AddAudioModes got another switch, DBLSCAN, which tries to open
  258.             and then immediately close a native, double-scan screen.  At
  259.             least CyberGraphX keeps the scan rate when ECS/AGA screens are
  260.             closed, so this enables >28 kHz sample rates for graphic card
  261.             owners.  My guess is that this requires V39 or greater to work,
  262.             but it should work with both ECS and AGA.  Don't forget to
  263.             install a doublescan monior driver if you don't already have one.
  264.  
  265. 1.5
  266.         · AddAudioModes DBLSCAN now scans the audio mode database for the
  267.             screen mode that allows highest sample rates.
  268.         · The device is now opened with the AHIDF_NOMODESCAN flag.
  269.  
  270. 4.1
  271.         · Bumped version to 4.
  272.  
  273.  
  274. AHI-Handler
  275. ¯¯¯¯¯¯¯¯¯¯¯
  276. 1.8
  277.         · Changed the priority of the AUDIO:  handler to 5.
  278.  
  279. 4.1
  280.         · Bumped version to 4.
  281.  
  282. 4.2
  283.         · Much improved error handling.
  284.  
  285.  
  286. concierto.audio
  287. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  288.         Note:  concierto.audio is ©1997 Village Tronic Computer and
  289.             written by Olaf Barthel.
  290.  
  291.  
  292. delfina.audio
  293. ¯¯¯¯¯¯¯¯¯¯¯¯¯
  294.         Note:  delfina.audio is ©1996-1997 Petsoff Limited Partnership
  295.             and written by Teemu Suikki.  The latest release of this driver
  296.             can be found at <URL:http://www.sci.fi/~petsoff/ftp/>.
  297.  
  298.  
  299. filesave.audio
  300. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  301. 1.0
  302.         · First version.
  303.  
  304. 1.1
  305.         · Updated for HiFi (32 bit) mixing routines.
  306.  
  307. 2.0
  308.         · Bumped version to 2.
  309.         · Bug fix:  Previously called AslRequest instead of
  310.             AslRequestTags, resulting in an Enforcer hit.
  311.  
  312. 2.1
  313.         · Minor bug fixes.
  314.         · Added sampler emulation.  This means that this driver can now be
  315.             used to simulate a sound card with sampler.  Just select an audio
  316.             file when the requester pops up.  (This feature is only for
  317.             programmers and requires OS 3.0 or higher, because
  318.             datatypes.library is used to load the audio file.)
  319.  
  320. 2.2
  321.         · Now works with 2.0 systems, too.  The file should be a raw 8 bit
  322.             signed sample (i.e.  no headers).
  323.  
  324. 2.3
  325.         · Changed the number of avalable mixing/sampling frequencies.
  326.  
  327. 2.4
  328.         · MC68000-version added.
  329.         · Minor improvements and larger buffer makes it several times
  330.             faster.
  331.         · Fixed a bug in AHIsub_Enable().
  332.         · AHIsub_AllocAudio() did not return the correct error code on
  333.             failure.
  334.  
  335. 2.5
  336.         · Now displays a requester instead of an alert if asl.library
  337.             cannot be opened.
  338.  
  339. 2.6
  340.         · The requester about missing asl.library is now only showed once.
  341.  
  342.  
  343. maestropro.audio
  344. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  345.         Note:  maestropro.audio is ©1997 Richard Körber.  The latest
  346.             release of this driver can be found at
  347.             <URL:http://www.is-koeln.de/einwohner/shred>.
  348.  
  349.  
  350. melody.audio
  351. ¯¯¯¯¯¯¯¯¯¯¯¯
  352.         Note:  melody.audio is ©1997 Kato and written by Thorsten
  353.             Hansen.  The latest release of this driver can be found at
  354.             <URL:http://home.pages.de/~kato>.
  355.  
  356.  
  357. paula.audio
  358. ¯¯¯¯¯¯¯¯¯¯¯
  359. 2.0
  360.         · Bumped version to 2.
  361.         · Bug fix:  14 bit uncalibrated mode now works as it should.
  362.  
  363. 2.2
  364.         · Various bugfixes.
  365.         · Added support for parallel port samplers (only generic mono this
  366.             time).
  367.         · Changed the number of avalable mixing/sampling frequencies.
  368.         · The video mode is now checked to see if mixing frequencies above
  369.             28867 Hz is possible.
  370.  
  371. 2.3
  372.         · Bug fix:  Driver reported wrong resolution for 14 bit modes.
  373.         · MC68000-version added.
  374.         · Bug fix:  Distortion because of playing samples from an odd
  375.             address.  Kinda lame bug:  I made sure the length was even, but
  376.             forgot the start address.
  377.  
  378. 2.4
  379.         · Can now use the Aura sound card as sampler instead of one in the
  380.             parallel port.
  381.  
  382. 2.5
  383.         · Better handling of the Aura sampler.  The driver is now defined
  384.             to have two inputs, instead of using two separate mode files.
  385.  
  386. 3.0
  387.         · Added protection against CPU overload.
  388.  
  389. 3.1
  390.         · The variable AHIpaulaFilterFreq is now checked when the audio is
  391.             allocated.
  392.  
  393. 4.1
  394.         · Bumped version to 4.
  395.  
  396. 4.2
  397.         · This is unbelievable, but I had swapped the left and right
  398.             channel!
  399.  
  400. 4.5
  401.         · Crashed related to the PCMCIA code removed.  Oops.
  402.  
  403. 4.6
  404.         · Better checks for >28 kHz modes.
  405.  
  406. 4.7
  407.         · Added variable AHIpaulaSampleLimit, to remove the screen mode
  408.             checks.
  409.  
  410. 4.8
  411.         · Better checking of videomode with Picasso 96 (req. 1.18+).
  412.  
  413. 4.10
  414.         · HiFi modes added.
  415.         · Added support for the Clarity sampler?
  416.  
  417. 4.11
  418.         · Rewrote the conversion routines, they should be faster now?
  419.         · Added the AHIpaulaBufferLength environment variable.
  420.  
  421. 4.12
  422.         · There were errors in the new conversion routines, when the tempo
  423.             changed.
  424.         · 8 bit modes now have hardware volume control.
  425.  
  426. 4.13
  427.         · Added the AHIpaulaSwapChannels environment variable.
  428.         · AHIsub_GetAttr() is much faster now.
  429.  
  430. 4.14 (R4.15)
  431.         · Enclosed FindTask("Picasso96") with Forbid()/Permit(), in order
  432.             to silence PatchWork.
  433.  
  434.  
  435. prelude.audio
  436. ¯¯¯¯¯¯¯¯¯¯¯¯¯
  437.         Note:  prelude.audio is ©1996-1997 A.C.T.  and written by Thomas
  438.             Wenzel.  The latest release of this driver and documentation can
  439.             be found at
  440.             <URL:http://linux.rz.fh-hannover.de/~wenzel/Prelude.html>.
  441.  
  442.  
  443. toccata.audio
  444. ¯¯¯¯¯¯¯¯¯¯¯¯¯
  445. 2.1
  446.         · First public version.
  447.  
  448. 2.10
  449.         · Lots of bug fixes, but there is need for many more.
  450.  
  451. 2.11
  452.         · More bug fixes.  I think it actually is usable now...
  453.  
  454. 2.12
  455.         · Will now do all mixing in a software interrupt if the
  456.             environment variable AHItoccataNoTask is set to 1.
  457.  
  458. 2.14
  459.         · Added support for the hacked "toccata..library".  It works much
  460.             better than the AHItoccataNoTask kludge.
  461.         · AHIC_MonitorVolume works as it was supposed to now.
  462.         · Bug in the mutal exclusive code fixed.
  463.  
  464. 2.15
  465.         · A little less clicks now.
  466.  
  467. 2.17
  468.         · Better hardint checking.
  469.         · Doesn't fail to load anymore if toccata.library v12 cannot be
  470.             opened.
  471.  
  472. 4.1
  473.         · Added protection against CPU overload.
  474.         · Added HiFi modes.
  475.  
  476. 4.3
  477.         · Added the AHItoccataIrqSize environment variable.
  478.  
  479. 4.4
  480.         · Added workarounds for bugs in the AD1845 chip.  No more white
  481.             noise on the DraCo Motion!
  482.  
  483.  
  484. wavetools.audio
  485. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  486. 1.10
  487.         · Updated for beta 2 (AHIC_MonitorVolume,
  488.             AHIC_MonitorVolume_Query)
  489.  
  490. 2.0
  491.         · Bumped version to 2.
  492.         · Added support for AHIC_OutputVolume, AHIC_OutputVolume_Query,
  493.             AHIDB_MinMonitorVolume, AHIDB_MaxMonitorVolume,
  494.             AHIDB_MinOutputVolume, AHIDB_MaxOutputVolume, AHIDB_Inputs,
  495.             AHIDB_Input, AHIDB_Outputs and AHIDB_Output.
  496.  
  497. 2.1
  498.         · Wow, at last!  Somebody is actually USING this driver now!
  499.             Version 2.0 didn't even work, and nobody reported it until
  500.             recently...
  501.  
  502.         Note:  The following changes were done by Johan Nyblom
  503.             <nyblom@ludd.luth.se>
  504.  
  505. 2.11
  506.         · Bug fixes, input gain added.
  507.  
  508.  
  509. Other software
  510. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  511.  
  512.         · The hook structure in PT-AHIPlay.s missed the userdata field.
  513.         · PT-AHIPlay.s doesn't use AHIST_LOOP sounds anymore.
  514.         · RecordTestQnD.s now uses AHIC_MonitorVolume.
  515.         · ScanAudioModes updated for V2.
  516.         · PT-AHIPlay.s updated to use Fixed instead of ULONG for player
  517.             frequencies.
  518.         · DoubleBuffer example program added.
  519.         · HarddiskRecord example program added.
  520.         · The protracker replay code has been rewritten.
  521.         · Protracker datatype added.
  522.         · RecordTest example program added.
  523.         · PlayTest example program added.
  524.         · Updated the AHI-Noteplayer for Delitracker to version 1.4.
  525.         · Audio handler added.
  526.         · Simpleplay updated.
  527.         · The protracker replay code fixed (left/righ channel swapped),
  528.             and a major bug in the example PlayerFunc was removed (didn't
  529.             save register a2!).
  530.         · Protracker datatype updated.  Now it actually obeys the AHI
  531.             rules, which hopefully means no more crashes with Toccata.
  532.         · Added DSPECHO and DSPMASK to SimplePlay.
  533.         · Protracker datatype would cause a total lockup with the filesave
  534.             driver.  Not anymore.
  535.         · ARGH!!  The doublebuffer.c example used an incorrect formual for
  536.             calculating the buffer size!
  537.         · Moved the Delitracker noteplayer out of the developer archive
  538.             (what's the point when it doesn't include any source?).
  539.         · The protracker replay code called AHI_ControlAudioA() every
  540.             interrupt, since I fotgot to clear ptd_NewTempo.
  541.         · Added Melody to the distribution.
  542.  
  543. R4.15
  544.         · Added Maestro Pro to the distribution.
  545.         · The documentation now has the same version number as the
  546.             distribution.
  547.  
  548. R4.16
  549.         · Added Concierto to the distribution.
  550.         · Added the CheckAHIPrefs example.
  551.  
  552.