Wikibooks enwikibooks https://en.wikibooks.org/wiki/Main_Page MediaWiki 1.47.0-wmf.13 first-letter Media Special Talk User User talk Wikibooks Wikibooks talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk Cookbook Cookbook talk Transwiki Transwiki talk Wikijunior Wikijunior talk Subject Subject talk TimedText TimedText talk Module Module talk Event Event talk Wikibooks:Requests for deletion 4 385 4656031 4655861 2026-08-02T03:46:17Z Omphalographer 3427146 /* Business Continuity Management */ Reply 4656031 wikitext text/x-wiki __NEWSECTIONLINK__ [[Category:Wikibooks deletion|{{PAGENAME}}]] {{Discussion Rooms}} {{TOCleft}} {{shortcut|WB:RFD}} {{Requests for deletion/New deletion}} {{Requests for deletion/Deletion intro}} <!-- New deletion nominations go at the bottom of page. --> == [[Salute, Jonathan!]] and its translations == <div style="column-count: 7;"> * [[Salute, Jonathan!|Interlingue/Occidental]] ([[w:en:Occidental|w]], original) * [[Òla, Ionatà!|Audià]] * [[Holo, Jonathan!|Cristianés]] * [[Terve, Jonathan!|Ekumenski]] * [[Hej, Jonathan! (Germanisch)|Germanisch]] * [[Salom, Jonatan!|Globasa]] * [[Àlŏ, Jonathan!|Guosa]] ([[w:en:Guosa|w]]) * [[Salut, Jonathan!|Idiom Neutral]] ([[w:en:Idiom Neutral|w]]) * [[Saluto, Jonathan! (Ido)|Ido]] ([[w:en:Ido|w]]) * [[Hallo, Jonathan!|Interlingua]] ([[w:en:Interlingua|w]]) * [[Salut, Jonathan! (Interocidental)|Interocidental]] * [[Bune Ğonatan!|Lingaust]] * [[Oila, Jonatan!|Lingue Simple]] * [[Haloo, Jonatan!|Lingwa de Planeta]] ([[w:en:Lingwa de Planeta|w]]) * [[Sin Chao, Jonathan!|Masa Tang]] * [[Salut, ionatano!|Meteza]] * [[Salu, Jon!|Mini]] * [[Hay, Jonathan!|Mirad]] * [[Hai, Jon!|Monav]] * [[Sesan Jon!|Monkel]] * [[Salam, Jonathan!|Mundeze]] * [[Dag, Jonathan!|Negerhollands]] ([[w:en:Negerhollands|w]]) * [[Salut Jonathan!|Neo]] ([[w:en:Neo|w]]) * [[Hej, Jonathan!|Nordien]] * [[Saluto, Jonathan!|Novial]] ([[w:en:Novial|w]]) * [[Salute, Jonathan! (Novlingue)|Novlingue]] * [[Alo, Jonathan!|Numo]] * [[Hela, Jonathan!|Proyo]] * [[Salute, Jonathan! (Romanica)|Romanica]] ([[w:en:Romanica|w]]) * [[Simi, Jonathan!|Solresol]] ([[w:en:Solresol|w]]) * [[Toki a, jan Jonatan!|Toki Pona]] ([[w:en:Toki Pona|w]]) * [[Glidis, o Jonathan!|Volapük]] ([[w:en:Volapük|w]]) </div> There are a couple of issues here: # Beyond their introductions, all of these books are written in languages which are not English, making them out of scope for the English Wikibooks. # All but one of these books are in fact written in constructed languages, most of them in recently created conlangs. In some cases (e.g. [[Sin Chao, Jonathan!]]), I can't find any reliable sources describing the target language outside of the translation itself. # Most of the translations (i.e. other than [[Salute, Jonathan!]] itself) were abandoned within the first five or so chapters (out of 100); none of them are complete, and there seems to be little effort to complete any of them. While I recognize that this is an unusual project, and potentially one which could have some value, it's not at all clear to me that the English Wikibooks is the right place for it. — [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 00:24, 29 September 2024 (UTC) : I'm really not sure what to do about these ones. While I recognize that this approach is certainly one method of teaching a language, I'm not sure that it constitutes an educational textbook. We do require that the English Wikibooks be written in English—for language-learning books, this typically means that the instructional parts are in English while the exercises are in the language being taught. I do think that if the language doesn't have much supporting evidence outside the book itself, it can safely be deleted. — [[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 01:01, 29 September 2024 (UTC) : Author of the book here. I originally wanted to put it in the Interlingue Wikibooks https://ie.wikibooks.org/wiki/Principal_p%C3%A1gine but it somehow got locked when I wasn't paying attention and so I ended up putting it here. Getting it unlocked requires going through the process of starting an Incubator and all the rest so I opted for here and then started putting some English-only content once it was done. It's sort of in the same vein as books like Lingua Latina per se Illustrata that have separate versions with teacher notes and whatnot. [[Salute, Jonathan!/Capitul 1 - with notes]] After it was done the auxlang community really took to it which was a nice surprise. I think Ido has the largest number of chapters at the moment at 15. :If the vast content of this book could be used to justify a quick reopening of the Interlingue Wikibooks to move it there, I'd love to do that. I imagine that an incubator with 100+ book chapters would be enough to open a Wikibooks and that's what this is. — [[User:Mithridates|Mithridates]] ([[User talk:Mithridates|discuss]] • [[Special:Contributions/Mithridates|contribs]]) 06:02, 29 September 2024 (UTC) : Ah, I just realized that we do have a proposal to reopen the Interlingue Wikibooks: https://meta.wikimedia.org/wiki/Requests_for_new_languages/Wikibooks_Interlingue along with an Incubator page here. https://incubator.wikimedia.org/wiki/Wb/ie/Principal_p%C3%A1gine : How easy would it be to migrate the entirety of Salute Jonathan to there? — [[User:Mithridates|Mithridates]] ([[User talk:Mithridates|discuss]] • [[Special:Contributions/Mithridates|contribs]]) 06:30, 29 September 2024 (UTC) :: Hi @[[User:Mithridates|Mithridates]]! I'm not sure how incubator projects work, but I fully support migrating these books there. You may want to inquire over there and link to this discussion to support your request to move the content over there. Cheers! — [[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 13:16, 29 September 2024 (UTC) ::: Hi! Actually I have a third idea to propose after thinking about this again today (haven't been here much since I finished the book): I noticed that there is more English content than I remember and that might make it an awkward fit for the Interlingue Wikibooks. I definitely agree that having all the auxlang translations for new auxlang projects goes well beyond the scope of this Wikibooks. Finally, there are some auxlangs that are notable with their own Wikipedias. ::: So the idea is the following: :::# Leave the original here and I can continue the work on the version with English notes and grammar. That will make it the same as Lingua Latina per se Illustrata, English by the Nature Method, Athenaze and all the rest. :::# The Interlingua one can move to the Interlingua Wikibooks (maybe Romanica too if they want as it is sort of a dialect of Interlingua). :::# For Ido and Lingua Franca Nova which have a Wikipedia but not a Wikibooks, I'm a little bit unsure...technically they could have their own version like the original one but would require English explanations. I could let them know and see if they are willing to do so and see what they think (work on adding English to the books vs. move the content elsewhere). :::# The rest can move to a Github repo, then be deleted, and the front page of this book can have a single link to the repo. ::: Any thoughts on that? Adding the extra English content will be easy as it is my book and I know it inside and out. ::: Edit: [https://en.wikibooks.org/wiki/Salute,_Jonathan!/Grammar_(pronouns) this page] I just added. — [[User:Mithridates|Mithridates]] ([[User talk:Mithridates|discuss]] • [[Special:Contributions/Mithridates|contribs]]) 13:50, 29 September 2024 (UTC) :::: Thanks for taking the time to consider this! Here are my responses/questions: ::::* Is the original [[Salute, Jonathan!]] (Occidental)? Since that one is quite fleshed out, I agree that if you edit it so the primary language of the book (e.g. headers, instructions, etc) are written in English while leaving the actual story in Occidental, it would be okay and fit in more with instructional language textbooks. ::::* For your points 2 and 3, I'm not sure how those other projects work, so I'll leave it up to them. I'm not quite sure why they would need to move, since in theory they could be revised with English as the language of instruction? Although, they have been left incomplete for a long time. ::::* For your point 4, I have no problem with that. Cheers! — [[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 16:51, 29 September 2024 (UTC) ::::: Hello again, it's the weekend so I have a bit more time to work on this. I've decided to merge the extra content from the following five chapters since the difference is fairly small and the original chapters should now have this English content. Could you delete these five pages now that they are no longer needed? [[User:Mithridates|Mithridates]] ([[User talk:Mithridates|discuss]] • [[Special:Contributions/Mithridates|contribs]]) 14:02, 5 October 2024 (UTC) ::::: [[Salute, Jonathan!/Capitul 1 - with notes]] ::::: [[Salute, Jonathan!/Capitul 2 - with notes]] ::::: [[Salute, Jonathan!/Capitul 3 - with notes]] ::::: [[Salute, Jonathan!/Capitul 4 - with notes]] ::::: [[Salute, Jonathan!/Capitul 5 - with notes]] [[User:Mithridates|Mithridates]] ([[User talk:Mithridates|discuss]] • [[Special:Contributions/Mithridates|contribs]]) 14:02, 5 October 2024 (UTC) :::::: [[File:Yes_check.svg|{{#ifeq:|small|8|15}}px|link=|alt=]] {{#ifeq:|small|<small>|}}'''Done'''{{#ifeq:|small|</small>|}} — [[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 23:34, 5 October 2024 (UTC) ::::::: Hi again! No luck trying to find a home for the random language translations on other auxlang wikis, can't find one that is actively maintained. ::::::: The thought struck me that maybe I could just put those ones on a sub page of my user page, would that be permitted? If not, I think I'll just stick them somewhere in GitHub and call it a day since none of the people who started the translations seem to care enough to do anything about them. I'd rather not see them outright disappear but since they aren't mine I don't care enough about them to do much more work than copy and paste them somewhere. ::::::: (I would leave the ones in languages with an ISO-639 code and Wikipedia here, of course) — [[User:Mithridates|Mithridates]] ([[User talk:Mithridates|discuss]] • [[Special:Contributions/Mithridates|contribs]]) 14:13, 9 November 2024 (UTC) :::::::: Thank you for checking! I don't personally see an issue with moving them to your user space right now. Cheers — [[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 17:21, 9 November 2024 (UTC) ::::::::: Thanks a lot! I've started a single page where I will put them all here [[User:Mithridates/SJ]] and will proceed slowly due to lack of time and also to avoid stepping on any toes / asking you to delete too much at a time and possibly deleting the wrong content. ::::::::: For this week I have put the content for the languages Audia, Cristianès, Guosa, Lingaust, Mini, Mirad, and Monav on that page as they all have a single page of content and didn't take much time to move. Please delete those. Once they are gone I will add a note on the main page letting people know where they have gone (in addition to a thank you for their interest in the book! I do love how many people have recognized it as a good source material for teaching a language). — [[User:Mithridates|Mithridates]] ([[User talk:Mithridates|discuss]] • [[Special:Contributions/Mithridates|contribs]]) 04:09, 10 November 2024 (UTC) : {{keep}} the translations for languages that have an article on the English Wikipedia, i.e. Guosa, Idiom Neutral, Ido, Interlingua, Lingwa de Planeta, Negerhollands, Neo, Novial, Occidental, Romanica, Solresol, Toki Pona, and Volapük. : Translations for languages that don't have an article can be kept if they have reliable sources, which I was able to find for the following languages (if you think they are not reliable, please let me know): :* Globasa: [https://www.languagesandnumbers.com/how-to-count-in-globasa/en/globasa/] [https://greyson.conlang.org/2020/01/29/shouting-out-globasa-and-pandunia/] :* Mini: [https://jprogr.github.io/mini] [https://www.omniglot.com/language/phrases/mini.htm] [https://www.languagesandnumbers.com/how-to-count-in-mini/en/mini/] : {{del}} and move to [[User:Mithridates/SJ]] the rest of the translations, i.e. Audià/Audian, Cristianés, Ekumenski, Germanisch, Interocidental, Lingaust, Lingue Simple, Masa Tang, Mirad, Monav, Monkel, Mundeze, Nordien, Novlingue, Numo, Proyo, and Scuian/Meteza. If you can find reliable sources for those languages, please let me know. : In particular, I could not find resources for Audià/Audian and Monav after searching through 15 and 17 pages on Google, respectively. It doesn't help that [[Òla, Ionatà!|their]] [[Hai, Jon!|translations]] don't explain what those languages are and where to find resources for them. This makes contributing to those translations almost impossible until @[[User:Caro de Segeda|Caro de Segeda]] can provide resources to us. It's possible that the resources may have disappared from the Internet, or that those languages were created by Caro de Segeda him/herself. If you can find resources for Audià/Audian and Monav, please let me know. : I'm notifying the primary contributors of the translations: @[[User:Caro de Segeda|Caro de Segeda]], @[[User:Frzzl|Frzzl]], @[[User:Greatscotteh|Greatscotteh]], @[[User:IHateNumbers234|IHateNumbers234]], @[[User:Jayeless2|Jayeless2]], @[[User:Morozof|Morozof]], @[[User:Omnihom|Omnihom]], @[[User:Omoutuazn|Omoutuazn]], @[[User:PovriNaivon|PovriNaivon]], @[[User:Sir Beluga|Sir Beluga]] and @[[User:Tyoyafud|Tyoyafud]]. — [[User:EJPPhilippines|EJPPhilippines]] ([[User talk:EJPPhilippines|discuss]] • [[Special:Contributions/EJPPhilippines|contribs]]) 09:52, 30 June 2025 (UTC) :: Caro de Segeda said on [https://www.reddit.com/r/conlangs/comments/1lcnz9g/comment/n0sc3wx/ Reddit] that Monav was created by him/her and that he/she didn't publish any resources about it other than [[Hai, Jon!]]. With '''zero''' other resources to rely on for contributing to the translation, and the fact that Monav is in [[User:Mithridates/SJ]], [[Hai, Jon!]] should be speedy deleted. — [[User:EJPPhilippines|EJPPhilippines]] ([[User talk:EJPPhilippines|discuss]] • [[Special:Contributions/EJPPhilippines|contribs]]) 01:38, 3 July 2025 (UTC) ::: I've undone the speedy deletion as Caro de Segeda posted a [https://prexins.wordpress.com/2025/07/04/monav/ resource] for Monav. — [[User:EJPPhilippines|EJPPhilippines]] ([[User talk:EJPPhilippines|discuss]] • [[Special:Contributions/EJPPhilippines|contribs]]) 07:18, 4 July 2025 (UTC) :::: You can delete all the ones that I have created myself, I have already moved them to other places. — [[User:Caro de Segeda|Caro de Segeda]] ([[User talk:Caro de Segeda|discuss]] • [[Special:Contributions/Caro de Segeda|contribs]]) 12:39, 5 July 2025 (UTC) {{outdent|::::}}I don't know if this is helpful since it wouldn't apply to most of these, but [[s:mul:]] could hold some of these. — [[User:Arlo Barnes|Arlo Barnes]] ([[User talk:Arlo Barnes|discuss]] • [[Special:Contributions/Arlo Barnes|contribs]]) 09:18, 30 November 2025 (UTC) : I don't think that would be within the scope of that project. I'm not aware of any other situation where Wikisource publishes translations of texts created on Wikimedia projects - that's usually left up to other language editions of the same project. — [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 05:34, 1 December 2025 (UTC) :: In this situation there isn't a separate [[s:ie:]] distinct from Multilingual Wikisource (see [[meta:Wikisource#List of Wikisources]]). In fact, there are very few multilingual wikis in the Wikimedia sphere; while this project ''could'' move to a Miraheze-hosted or similar wiki farm location, I think it would be a missed opportunity. I suppose an [[Interlingue]] book could be started in [[shelf:Constructed languages]] which would have all 100 chapters as an appendix (and likewise for the other languages), but that also seems non-ideal since it requires an English-language text that doesn't currently exist to be created. [[WB:AT]] seems to describe a similar situation to this one and prescribe Wikisource as the solution, and [[WB:SOURCE]] mentions fiction as out-of-scope for Wikibooks (even as in this case, language-educational fiction). [[s:mul:Wikisource:about Wikisource]] simply speaks of source texts and doesn't mention publication requirements, so maybe that is specific to some of the monolingual editions? — [[User:Arlo Barnes|Arlo Barnes]] ([[User talk:Arlo Barnes|discuss]] • [[Special:Contributions/Arlo Barnes|contribs]]) 22:28, 5 December 2025 (UTC) :{{keep}} 100% keep. These books are a core part of language textbooks on Wikibooks and have been for years. Not sure why this is even being debated.--[[User:Xania|Xania]] [[Image:Flag_of_Estonia.svg|15px]] [[Image:Flag_of_Ukraine.svg|15px]] [[User talk:Xania|<sup>talk</sup>]] 17:55, 16 May 2026 (UTC) ::With all due respect, some of the books included in this nomination (like [[Sin Chao, Jonathan!]]) are written in constructed languages which are not substantially attested anywhere else. I struggle to imagine any educational purpose for such a book. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 00:12, 17 May 2026 (UTC) == [[International Baccalaureate]] == Not actually a book in and of itself; rather, it is just a compilation of links to other books —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 23:24, 18 October 2024 (UTC) : Could this be salvaged as a shelf? [[User:Pppery|Pppery]] ([[User talk:Pppery|discuss]] • [[Special:Contributions/Pppery|contribs]]) 05:23, 27 January 2025 (UTC) ::Probably, but are the linked books even useful? IB exams change from year to year - sometimes quite dramatically - so an old exam guide is of very limited value. Many of these books were written 10-15 years ago, and some of them (like [[IB French]]) even have comments indicating that they're no longer applicable. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 02:18, 8 December 2025 (UTC) == [[Character List for Baxter&Sagart]] == Seems completely out of scope as an educational book; it's just a list of characters and outlinks —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 23:53, 18 October 2024 (UTC) :Adding [[Character List for Karlgren's GSR]] and [[Character List for Schuessler's CGSR]] for the same reason —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 23:55, 18 October 2024 (UTC) :These three books do make a package and I agree they should be considered together. However, I strongly object to deleting them. They are really extremely useful resources. I use them every week and I know that many people who do work on Old Chinese phonology do so. There are lots of books out there that are lists of characters, these are called dictionaries. For example Axel Schuessler's ABC Etymological Dictionary of Old Chinese, or Pulleyblank's Lexicon of Reconstructed Pronunciation in Early Middle Chinese, Late Middle Chinese, and Early Mandarin. I see it as entirely a good thing for reference works of this kind to be available free online rather than only in expensive books in university research libraries. If this is in violation of a Wikibooks policy, I would at least like that policy to be drawn to my attention and to have some constructive comment offered about which Wikiproject such a resource should fall under. I will also say on a personal note that I have put literally hundreds of hours of work into these projects and it would grieve me a lot to see this work simply vanish, in particular when I know that colleagues around the world use these books. --[[User:Tibetologist|Tibetologist]] ([[User talk:Tibetologist|discuss]] • [[Special:Contributions/Tibetologist|contribs]]) 07:27, 1 November 2024 (UTC) ::Hi @[[User:Tibetologist|Tibetologist]], and thank you for the feedback! Official Wikibooks policy does not permit standalone dictionaries (see [[WB:DICT]]), though I understand the argument that it is a useful resource. I am wondering if there might be a home for it at [[Wiktionary:Wiktionary:Welcome, newcomers|Wiktionary]] or [[Wikiversity:Wikiversity:SHARE|Wikiversity]]? Cheers —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 12:14, 1 November 2024 (UTC) :::The policy says to use Wiktionary, but these books cannot be moved there. In fact they link there, you can understand me as having made an index to wiktionary, if you like, where the ORDER of the characters is extremely important, information that would be lost in Wiktionary. :::Wikiversity is not a project I participate in, and in any event my books here are older than it, so this option was not available for me at the relevant moment. If you are offering to move my books to Wikiversity, that is very kind of you and I will very graciously accept. [[User:Tibetologist|Tibetologist]] ([[User talk:Tibetologist|discuss]] • [[Special:Contributions/Tibetologist|contribs]]) 14:10, 1 November 2024 (UTC) ::::I have pinged over at Wikiversity Colloquium to ask about suitability and have looped you into the conversation over there. Cheers —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 18:20, 1 November 2024 (UTC) ::I concur. I'm just an undergrad who tries to learn about Sino-Tibetan historical linguistics in his free time but I've found this wikibook to be incredibly useful, and I keep it open in one tab while I watch Professor Nathan Hill's lectures that he uploads to youtube in another tab, and another tab for taking notes. In fact if I remember correctly Professor Hill actually pointed his students to this wikibook. ::I'm not familiar with [[wikiversity:Wikiversity:SHARE|Wikiversity]] but if all the content were as accessible there as it is here then I think that could work. [[User:ChromeBones|ChromeBones]] ([[User talk:ChromeBones|discuss]] • [[Special:Contributions/ChromeBones|contribs]]) 02:43, 9 July 2025 (UTC) :Per [[:v:Wikiversity:Colloquium#Import_Resource_From_Wikibooks?]], I recommend copying and pasting, including attribution via the edit summary and talk page, add appropriate categories and links, and then it could be deleted locally. —[[User:Koavf|Justin (<span style="color:grey">ko'''a'''vf</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 22:32, 3 November 2024 (UTC) == [[Suomen kieli käyttöön]] == Multiple pages in this book are written entirely in Finnish, which is out of the enWB scope. —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 00:09, 19 October 2024 (UTC) :I was going to say whether we should ask any fiwikibooks sysop to maybe see if this could be transwikied to fiwb if it's within the scope there. But [[:fi:Toiminnot:Käyttäjät/sysop]] indicates that there are only 3 sysops, and only {{u|Anr}} and {{u|Zache}} have made edits this ''year''. If they deem it to be salvageable, then transwiki + delete, otherwise straight-up delete. --[[User:SHB2000|SHB2000]] ([[User talk:SHB2000|discuss]] • [[Special:Contributions/SHB2000|contribs]]) 11:24, 14 November 2024 (UTC) ::It seems that the idea behind the book was for the pages to be bilingual, as it’s a language learning book. That’s why there are Finnish texts included intentionally even on the pages that are complete. There are similar books in dewikibooks and ruwikibooks as well. For the English version, I think the easiest way to proceed would be to clean up and adjust the page layout to fit enwikibooks better, and then translate the missing parts. By the way, if anyone wants to update the book’s name in English, it can be titled ''"Using the Finnish Language"'' or ''"Put Finnish Language into Use"'' for a direct translation. [[User:Zache|Zache]] ([[User talk:Zache|discuss]] • [[Special:Contributions/Zache|contribs]]) 11:57, 14 November 2024 (UTC) == [[AT&T Mobility FAQ]] == * [[AT&T Mobility FAQ]] * [[AT&T Mobility FAQ/MEdia Net Configuration]] * [[AT&T Mobility FAQ/Data Connect Configuration]] An ''extremely'' outdated FAQ on AT&T's cell phone services. Most of this document was written 20+ years ago as a Usenet FAQ; very little of it is accurate or useful anymore (particularly the two subpages, which have to do with obsolete configurations for "tethering" a computer to a cell phone). No objection if someone wants to update it, but there's clearly been no appetite to do that. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 22:20, 30 December 2024 (UTC) :I'm wondering if it might make sense for us to develop some kind of policy on archiving books here. There are many like this one that have a good deal of content but are extremely out of date and just not useful as originally intended. ——[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 22:34, 30 December 2024 (UTC) ::@[[User:Kittycataclysm|Kittycataclysm]]: See the newly developed [[Wikibooks:Outdated books]]. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 00:16, 31 December 2024 (UTC) :::Ooh, thanks - something like that seems like it could be an appropriate way to handle this book. A lot of the other outdated books I've tagged have been so incomplete that they wouldn't have been particularly useful even as historical references; this one might at least have some interest. :::Any chance we can get a separate namespace (maybe "Archive:") set up for archived book content? That'd make it possible to do things like exclude them from on-site search by default. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 21:07, 31 December 2024 (UTC) ::::I think this might be a more extended discussion, so I'll bump it over to the [[Wikibooks talk:Outdated books|talk page of the draft policy]]! —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 21:54, 31 December 2024 (UTC) == Algebra/Chapter 10/Symmetric Polynomials == I personally believe that [[Algebra/Chapter 10/Symmetric Polynomials|this]], and all of the sections should be deleted for the fact that this goes WAY beyond the scope of what was intended for the Chapter (Algebra II level polynomials). [[User:GoreyCat|GoreyCat]] ([[User talk:GoreyCat|discuss]] • [[Special:Contributions/GoreyCat|contribs]]) 15:07, 6 February 2025 (UTC) :'''Split''': Deletion here is not the best solution (see [[w:WP:ATD]]). Instead, this page and its subpages should be moved to another book, most likely [[Abstract Algebra]]. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 17:35, 6 February 2025 (UTC) :{{keep}} since there is a good amount of content. If [[Abstract Algebra]] is appropriate, it seems like a fine idea to move there. —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 22:59, 7 February 2025 (UTC) ::Eh, yeah, I supposed moving it is better. I just don't think it's suitable for where it appears. [[User:GoreyCat|GoreyCat]] ([[User talk:GoreyCat|discuss]] • [[Special:Contributions/GoreyCat|contribs]]) 01:40, 8 February 2025 (UTC) == [[Puredyne]] == Development of Puredyne Linux was discontinued in 2012, and the software no longer appears to be available for download anywhere. (An archive of the web site is still up - with a bunch of embedded spam links - but the download links are all dead.) Is this a suitable candidate for archival (cf. [[Wikibooks:Outdated books]]), or should it just be deleted? [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 04:35, 5 March 2025 (UTC) :I'd just archive stuff like this. Looks like a decent bit of work went into it, and you never know when someone might need to use Puredyne for some obscure project. I'd be willing to bet mirrors exist of it somewhere, or someone has it on a drive. If you want to find some stuff worth deleting, comb through [[:Category:Allbooks categories]]. [[User:MediaKyle|MediaKyle]] ([[User talk:MediaKyle|discuss]] • [[Special:Contributions/MediaKyle|contribs]]) 11:30, 5 March 2025 (UTC) == [[Template:Qr-twwp]] == This isn't exactly a request to delete the template, but rather to merge it with {{tlx|Copypaste}}. The {{tlx|Qr-twwp}} template serves the same purpose as {{tlx|Copypaste}}, but without the seven-day period after which the page is deleted. This leads to confusion, as well as a perpetually full [[:Category:Queried pages]]. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 17:37, 30 March 2025 (UTC) == [[Ghouls of the Miskatonic]] == I don't think that a plot summary of a book is in-scope here. —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 18:43, 20 August 2025 (UTC) :{{vd}} - at least, not a summary of ''this'' book. A summary and/or study guide to a notable work of literature might be in scope, but this is certainly not one. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 21:23, 25 August 2025 (UTC) ::Hi. I am the creator of the pages of this book. If I understand correctly, it has to be a summary of a notable work of literature? So what exactly is defined as such? I only started this as I thought it would be fun, interesting and encouraging to others who read the Arkham Horror novels, and I thought it was permitted as I've seen other summaries of books on wikibooks. [[User:Dayne90|Dayne90]] ([[User talk:Dayne90|discuss]] • [[Special:Contributions/Dayne90|contribs]]) 13:27, 26 August 2025 (UTC) :::Your problem is it is just the plot... it needs to include an educational textual analysis to be in scope [[User:MarcGarver|MarcGarver]] ([[User talk:MarcGarver|discuss]] • [[Special:Contributions/MarcGarver|contribs]]) 12:47, 28 August 2025 (UTC) ::::And ideally it'd be a text which has ''already'' been the subject of literary analysis, such that the analysis on Wikibooks isn't original research. A notable work of literature like ''Frankenstein'' or ''Moby-Dick'' would easily meet that requirement; a tie-in novel for a tabletop RPG probably does not. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 22:08, 29 August 2025 (UTC) == [[Objective Projection: Why the Brain Never Forgets Some Stories]] == Undisclosed AI-generated content. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 02:13, 9 May 2026 (UTC) :<nowiki>'''Keep'''</nowiki> — Comment from page author/subject expert. :I am Levent Bulut, the originator of the <nowiki>''</nowiki>Objective Projection<nowiki>''</nowiki> methodology described in this book (ORCID: 0009-0007-7500-2261, Wikidata: Q138048287). I want to address the AI-generated content concern directly and transparently. :<nowiki>'''</nowiki>On the content itself:<nowiki>'''</nowiki> The methodology, theoretical framework (the six-variable operator E(r) = projS(M, T, V, Δ, Ω, Ng), the Six Golden Rules, the Six-Layer Framework), and all original arguments are my own intellectual work, developed and published independently. This is documented through: :* 26 DOI-registered academic publications on Zenodo (search: "Levent Bulut Objective Projection") :* A peer-reviewed submission currently under review at <nowiki>''</nowiki>Digital Humanities Quarterly<nowiki>''</nowiki> :* Parallel Turkish-language Wikibook and Wikiversity pages on the same methodology :* An open-source SFT dataset on Hugging Face (leventbulut/objective-projection) :<nowiki>'''</nowiki>On AI assistance:<nowiki>'''</nowiki> I used AI tools (Claude) for English translation polish and copy-editing from my Turkish source materials — the same way a non-native English-speaking academic would use a human translator or editor. The <nowiki>''</nowiki>ideas, structure, terminology, citations, and arguments<nowiki>''</nowiki> are entirely my own and pre-date the Wikibooks version, traceable through Zenodo DOI timestamps starting in 2025. :<nowiki>'''</nowiki>Proposed remedy instead of deletion:<nowiki>'''</nowiki> I am happy to: :# Add a clear AI-assistance disclosure to the book's preface, per Wikibooks transparency norms :# Add inline citations to the underlying DOI-registered publications for every major claim :# Link to the parallel Turkish version and academic record :This would address the <nowiki>''</nowiki>undisclosed<nowiki>''</nowiki> part of the concern (which is the actionable policy issue) while preserving content that is original academic work by an identifiable author with a published track record. Deletion of original scholarship because translation assistance was used would set a concerning precedent for non-native English contributors. :<nowiki>I request a few days to add the disclosure and citations before any deletion action. ~~~~</nowiki> [[Special:Contributions/&#126;2026-28847-60|&#126;2026-28847-60]] ([[User talk:&#126;2026-28847-60|talk]]) 18:46, 13 May 2026 (UTC) ::Administrative assistance needed: Automated filters blocking structural improvements and disclosures ::'''Request for Help''' — I am Levent Bulut, the author of this book. I have already provided my AI disclosure and academic credentials (ORCID, DOI list) here in this discussion. ::I am trying to update the book to comply with Wikibooks standards by: ::Adding a formal '''AI assistance disclosure''' at the top of the page. ::Restructuring the content into an '''instructional textbook format''' (adding Learning Objectives). ::Converting plain text formulas into '''LaTeX''' ( format). ::Updating references to include full academic '''DOI''' records. ::However, the automated filter is blocking all my attempts: ::If I try to replace the content with the improved version, it triggers the '''"large amount of content removal"''' filter. ::If I try to add specific academic links, it triggers the '''"automated link/spam"''' filter. ::I am essentially trapped by the filters while trying to improve the book and follow transparency norms. Could an administrator please either whitelist my account or manually apply the improved version of the text? I am ready to provide the full MediaWiki code here if requested. My intent is purely constructive and academic. [[Special:Contributions/&#126;2026-28847-60|&#126;2026-28847-60]] ([[User talk:&#126;2026-28847-60|talk]]) 19:15, 13 May 2026 (UTC) ::: Hi, @[[User:~2026-28847-60|~2026-28847-60]]. Your account was incorrectly locked by a steward. It is now currently unlocked. [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 17:44, 15 May 2026 (UTC) :::: Pinging @[[User:Projection Architect|Projection Architect]], who was previously LeventBulut. [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 15:51, 4 July 2026 (UTC) ::Please review [[Wikibooks:Artificial intelligence]]. It states unequivocally that {{tq|LLMs may not be used to generate or summarize material and ideas at Wikibooks}}, and that {{tq|translations made by LLMs are not allowed on Wikibooks}}. The fact that you did not disclose your usage of AI is part of the problem, but disclosing it does not make it allowable either. ::More broadly, based on what you've said above, the content of this book is a reflection of your personal theories on writing. This is essentially [[Wikibooks:Original research]] and is not permitted. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 22:36, 13 May 2026 (UTC) == [[Suicide]] == I realize this book has been nominated for deletion before ([[Wikibooks:Requests for deletion/Suicide|1]], [[Wikibooks:Requests for deletion/Suicide (2)|2]], [[Wikibooks:Requests for deletion/Suicide/Suffocation|3]]), but it's been over ten years since the last nomination. The project's position on what material is in its educational scope has shifted, as have some of the facts on the ground. * The chartered purpose of Wikibooks is to produce "open-content textbooks" (cf. [[Wikibooks:What is Wikibooks?]]) which are suitable for use in an instructional environment. Providing educational information about suicide in the context of psychiatry could certainly be in scope, as psychiatry is an educational topic; however, instructional material on how to commit suicide is not an educational topic, and should not be considered in scope. * This book is, and has always been, primarily intended as an instructional work guiding users on how to commit suicide. It provides effectively no meaningful analytical content ''about'' suicide as a topic. Most of the original content in the book was imported from an early-2000s wiki associated with the <code>alt.suicide.holiday</code> Usenet group, the "ASH wiki", which was specifically and unequivocally dedicated to describing and recommending methods by which readers could commit suicide, and this has carried through to the current version of the book. * Most of the content in the book was removed in 2020 (by redirecting it to the book's main page, e.g. [[Special:Diff/3660495]]) over concerns that it was created by a WMF-banned user ([[User:Leucosticte]]), and because it was likely in violation of the ASH wiki's (unclear) copyright. These changes removed most of the content of the book; much of what remains is image gallery pages like [[Suicide/Blades]] which have no educational value. Suicide is a sensitive topic; if it is covered by a textbook, it should be covered tastefully and with an aim to educate. This book is largely the opposite of that. Having it here is doing more harm than good. If this book is deleted, the following related pages should be deleted as well: * [[Template:Suicide methods]] * [[Template:Infobox suicide method]] (currently unused) * [[User:Leucosticte/About ASH]] - from the ASH wiki, as mentioned above * [[User:Leucosticte/Frequently Asked Questions]] - also from the ASH wiki [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 22:41, 21 July 2026 (UTC) : {{keep|weak keep}} a)&nbsp;Age is no argument. There are many stale underdeveloped books I would rather delete than keeping around. b)&nbsp;The book’s topic is exceptionally difficult to write about. ''This'' impedes collaborative authoring. c)&nbsp;The book does not really explain ''how'' to commit suicide (like a step‐by‐step guide), neither is it the book’s learning objective. d)&nbsp;Even if ''you construed'' the chapter summarizing various suicide methods ''as instructions'', instructional material on how to commit suicide ''is'' an educational topic. In most ''present‐day societies'' it is not ''ethical'' to teach students how to commit suicide, though. e)&nbsp;Therefore the correct path is to first alter the [[WB:WIW#Wikibooks includes instructional texts|project scope]] to censor books on ethical grounds ''and then'' nominate the book for censorship. ‑‑[[User:Kai Burghardt|Kai Burghardt]] ([[User talk:Kai Burghardt|discuss]] • [[Special:Contributions/Kai Burghardt|contribs]]) 04:50, 28 July 2026 (UTC) ::Re. c: most of the explicit directions were edited out in 2020, as noted in my nomination, but are still visible in page history. For a couple of explicit examples, see e.g. [[Special:Permalink/3318613]] or [[Special:Permalink/3654645]]. Providing specific instructions was the original intent of this book, and it has never escaped that legacy. If someone were interested in writing a book ''about'' the phenomenon of suicide, they would be better off starting afresh. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 05:26, 28 July 2026 (UTC) *'''Delete all'''. ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 16:17, 28 July 2026 (UTC) * '''Delete all''' per the nomination above. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 02:17, 30 July 2026 (UTC) == Unused infoboxes == The following infobox templates are all unused (outside of user sandboxes, in some cases) and should probably be deleted. I've edited/removed a few instances of some of these templates which were being used in nonproductive ways (e.g. infoboxes which were only being used to display an image). * [[:Template:Infobox Probability Distribution]] * [[:Template:Infobox church]] * [[:Template:Infobox color]] * [[:Template:Infobox company]] * [[:Template:Infobox historical event]] * [[:Template:Infobox officeholder]] * [[:Template:Infobox song]] [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 22:44, 21 July 2026 (UTC) :'''Delete all''' ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 16:18, 28 July 2026 (UTC) == [[Business Continuity Management]] == Largely abandoned for two decades and; consists of a single functional page with no indication of being fleshed out. —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 14:04, 28 July 2026 (UTC) :'''Delete''' ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 16:18, 28 July 2026 (UTC) :'''Delete'''. The single content page that was created - [[Business Continuity Management/Managing Business Continuity/Project Management]] - provides little sense of the intended organization of the book. I'm also a bit suspicious of the fact that it was created in a single edit, complete with comments like "these [subjects] are discussed later in this chapter"; this feels like it may have been copied from a print source, but I can't immediately identify what that might be. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 03:46, 2 August 2026 (UTC) == [[Carbon Programming]] == Very minimal content on an outdated topic, with no development in 17 years. —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 14:09, 28 July 2026 (UTC) :'''Delete''' ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 16:18, 28 July 2026 (UTC) :'''Delete'''. No substantial content, and unlikely to be expanded given that Carbon is no longer available in current versions of macOS. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 16:42, 28 July 2026 (UTC) == [[Confederate States Government]] == Abandoned for 20 years with minimal content and no evidence of development. —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 14:19, 28 July 2026 (UTC) :'''Delete''' ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 16:18, 28 July 2026 (UTC) f6foi3e1owv0g2sgdu1zjx8pyi9e5hn 4656034 4656031 2026-08-02T04:19:12Z Omphalographer 3427146 /* Confederate States Government */ Reply 4656034 wikitext text/x-wiki __NEWSECTIONLINK__ [[Category:Wikibooks deletion|{{PAGENAME}}]] {{Discussion Rooms}} {{TOCleft}} {{shortcut|WB:RFD}} {{Requests for deletion/New deletion}} {{Requests for deletion/Deletion intro}} <!-- New deletion nominations go at the bottom of page. --> == [[Salute, Jonathan!]] and its translations == <div style="column-count: 7;"> * [[Salute, Jonathan!|Interlingue/Occidental]] ([[w:en:Occidental|w]], original) * [[Òla, Ionatà!|Audià]] * [[Holo, Jonathan!|Cristianés]] * [[Terve, Jonathan!|Ekumenski]] * [[Hej, Jonathan! (Germanisch)|Germanisch]] * [[Salom, Jonatan!|Globasa]] * [[Àlŏ, Jonathan!|Guosa]] ([[w:en:Guosa|w]]) * [[Salut, Jonathan!|Idiom Neutral]] ([[w:en:Idiom Neutral|w]]) * [[Saluto, Jonathan! (Ido)|Ido]] ([[w:en:Ido|w]]) * [[Hallo, Jonathan!|Interlingua]] ([[w:en:Interlingua|w]]) * [[Salut, Jonathan! (Interocidental)|Interocidental]] * [[Bune Ğonatan!|Lingaust]] * [[Oila, Jonatan!|Lingue Simple]] * [[Haloo, Jonatan!|Lingwa de Planeta]] ([[w:en:Lingwa de Planeta|w]]) * [[Sin Chao, Jonathan!|Masa Tang]] * [[Salut, ionatano!|Meteza]] * [[Salu, Jon!|Mini]] * [[Hay, Jonathan!|Mirad]] * [[Hai, Jon!|Monav]] * [[Sesan Jon!|Monkel]] * [[Salam, Jonathan!|Mundeze]] * [[Dag, Jonathan!|Negerhollands]] ([[w:en:Negerhollands|w]]) * [[Salut Jonathan!|Neo]] ([[w:en:Neo|w]]) * [[Hej, Jonathan!|Nordien]] * [[Saluto, Jonathan!|Novial]] ([[w:en:Novial|w]]) * [[Salute, Jonathan! (Novlingue)|Novlingue]] * [[Alo, Jonathan!|Numo]] * [[Hela, Jonathan!|Proyo]] * [[Salute, Jonathan! (Romanica)|Romanica]] ([[w:en:Romanica|w]]) * [[Simi, Jonathan!|Solresol]] ([[w:en:Solresol|w]]) * [[Toki a, jan Jonatan!|Toki Pona]] ([[w:en:Toki Pona|w]]) * [[Glidis, o Jonathan!|Volapük]] ([[w:en:Volapük|w]]) </div> There are a couple of issues here: # Beyond their introductions, all of these books are written in languages which are not English, making them out of scope for the English Wikibooks. # All but one of these books are in fact written in constructed languages, most of them in recently created conlangs. In some cases (e.g. [[Sin Chao, Jonathan!]]), I can't find any reliable sources describing the target language outside of the translation itself. # Most of the translations (i.e. other than [[Salute, Jonathan!]] itself) were abandoned within the first five or so chapters (out of 100); none of them are complete, and there seems to be little effort to complete any of them. While I recognize that this is an unusual project, and potentially one which could have some value, it's not at all clear to me that the English Wikibooks is the right place for it. — [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 00:24, 29 September 2024 (UTC) : I'm really not sure what to do about these ones. While I recognize that this approach is certainly one method of teaching a language, I'm not sure that it constitutes an educational textbook. We do require that the English Wikibooks be written in English—for language-learning books, this typically means that the instructional parts are in English while the exercises are in the language being taught. I do think that if the language doesn't have much supporting evidence outside the book itself, it can safely be deleted. — [[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 01:01, 29 September 2024 (UTC) : Author of the book here. I originally wanted to put it in the Interlingue Wikibooks https://ie.wikibooks.org/wiki/Principal_p%C3%A1gine but it somehow got locked when I wasn't paying attention and so I ended up putting it here. Getting it unlocked requires going through the process of starting an Incubator and all the rest so I opted for here and then started putting some English-only content once it was done. It's sort of in the same vein as books like Lingua Latina per se Illustrata that have separate versions with teacher notes and whatnot. [[Salute, Jonathan!/Capitul 1 - with notes]] After it was done the auxlang community really took to it which was a nice surprise. I think Ido has the largest number of chapters at the moment at 15. :If the vast content of this book could be used to justify a quick reopening of the Interlingue Wikibooks to move it there, I'd love to do that. I imagine that an incubator with 100+ book chapters would be enough to open a Wikibooks and that's what this is. — [[User:Mithridates|Mithridates]] ([[User talk:Mithridates|discuss]] • [[Special:Contributions/Mithridates|contribs]]) 06:02, 29 September 2024 (UTC) : Ah, I just realized that we do have a proposal to reopen the Interlingue Wikibooks: https://meta.wikimedia.org/wiki/Requests_for_new_languages/Wikibooks_Interlingue along with an Incubator page here. https://incubator.wikimedia.org/wiki/Wb/ie/Principal_p%C3%A1gine : How easy would it be to migrate the entirety of Salute Jonathan to there? — [[User:Mithridates|Mithridates]] ([[User talk:Mithridates|discuss]] • [[Special:Contributions/Mithridates|contribs]]) 06:30, 29 September 2024 (UTC) :: Hi @[[User:Mithridates|Mithridates]]! I'm not sure how incubator projects work, but I fully support migrating these books there. You may want to inquire over there and link to this discussion to support your request to move the content over there. Cheers! — [[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 13:16, 29 September 2024 (UTC) ::: Hi! Actually I have a third idea to propose after thinking about this again today (haven't been here much since I finished the book): I noticed that there is more English content than I remember and that might make it an awkward fit for the Interlingue Wikibooks. I definitely agree that having all the auxlang translations for new auxlang projects goes well beyond the scope of this Wikibooks. Finally, there are some auxlangs that are notable with their own Wikipedias. ::: So the idea is the following: :::# Leave the original here and I can continue the work on the version with English notes and grammar. That will make it the same as Lingua Latina per se Illustrata, English by the Nature Method, Athenaze and all the rest. :::# The Interlingua one can move to the Interlingua Wikibooks (maybe Romanica too if they want as it is sort of a dialect of Interlingua). :::# For Ido and Lingua Franca Nova which have a Wikipedia but not a Wikibooks, I'm a little bit unsure...technically they could have their own version like the original one but would require English explanations. I could let them know and see if they are willing to do so and see what they think (work on adding English to the books vs. move the content elsewhere). :::# The rest can move to a Github repo, then be deleted, and the front page of this book can have a single link to the repo. ::: Any thoughts on that? Adding the extra English content will be easy as it is my book and I know it inside and out. ::: Edit: [https://en.wikibooks.org/wiki/Salute,_Jonathan!/Grammar_(pronouns) this page] I just added. — [[User:Mithridates|Mithridates]] ([[User talk:Mithridates|discuss]] • [[Special:Contributions/Mithridates|contribs]]) 13:50, 29 September 2024 (UTC) :::: Thanks for taking the time to consider this! Here are my responses/questions: ::::* Is the original [[Salute, Jonathan!]] (Occidental)? Since that one is quite fleshed out, I agree that if you edit it so the primary language of the book (e.g. headers, instructions, etc) are written in English while leaving the actual story in Occidental, it would be okay and fit in more with instructional language textbooks. ::::* For your points 2 and 3, I'm not sure how those other projects work, so I'll leave it up to them. I'm not quite sure why they would need to move, since in theory they could be revised with English as the language of instruction? Although, they have been left incomplete for a long time. ::::* For your point 4, I have no problem with that. Cheers! — [[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 16:51, 29 September 2024 (UTC) ::::: Hello again, it's the weekend so I have a bit more time to work on this. I've decided to merge the extra content from the following five chapters since the difference is fairly small and the original chapters should now have this English content. Could you delete these five pages now that they are no longer needed? [[User:Mithridates|Mithridates]] ([[User talk:Mithridates|discuss]] • [[Special:Contributions/Mithridates|contribs]]) 14:02, 5 October 2024 (UTC) ::::: [[Salute, Jonathan!/Capitul 1 - with notes]] ::::: [[Salute, Jonathan!/Capitul 2 - with notes]] ::::: [[Salute, Jonathan!/Capitul 3 - with notes]] ::::: [[Salute, Jonathan!/Capitul 4 - with notes]] ::::: [[Salute, Jonathan!/Capitul 5 - with notes]] [[User:Mithridates|Mithridates]] ([[User talk:Mithridates|discuss]] • [[Special:Contributions/Mithridates|contribs]]) 14:02, 5 October 2024 (UTC) :::::: [[File:Yes_check.svg|{{#ifeq:|small|8|15}}px|link=|alt=]] {{#ifeq:|small|<small>|}}'''Done'''{{#ifeq:|small|</small>|}} — [[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 23:34, 5 October 2024 (UTC) ::::::: Hi again! No luck trying to find a home for the random language translations on other auxlang wikis, can't find one that is actively maintained. ::::::: The thought struck me that maybe I could just put those ones on a sub page of my user page, would that be permitted? If not, I think I'll just stick them somewhere in GitHub and call it a day since none of the people who started the translations seem to care enough to do anything about them. I'd rather not see them outright disappear but since they aren't mine I don't care enough about them to do much more work than copy and paste them somewhere. ::::::: (I would leave the ones in languages with an ISO-639 code and Wikipedia here, of course) — [[User:Mithridates|Mithridates]] ([[User talk:Mithridates|discuss]] • [[Special:Contributions/Mithridates|contribs]]) 14:13, 9 November 2024 (UTC) :::::::: Thank you for checking! I don't personally see an issue with moving them to your user space right now. Cheers — [[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 17:21, 9 November 2024 (UTC) ::::::::: Thanks a lot! I've started a single page where I will put them all here [[User:Mithridates/SJ]] and will proceed slowly due to lack of time and also to avoid stepping on any toes / asking you to delete too much at a time and possibly deleting the wrong content. ::::::::: For this week I have put the content for the languages Audia, Cristianès, Guosa, Lingaust, Mini, Mirad, and Monav on that page as they all have a single page of content and didn't take much time to move. Please delete those. Once they are gone I will add a note on the main page letting people know where they have gone (in addition to a thank you for their interest in the book! I do love how many people have recognized it as a good source material for teaching a language). — [[User:Mithridates|Mithridates]] ([[User talk:Mithridates|discuss]] • [[Special:Contributions/Mithridates|contribs]]) 04:09, 10 November 2024 (UTC) : {{keep}} the translations for languages that have an article on the English Wikipedia, i.e. Guosa, Idiom Neutral, Ido, Interlingua, Lingwa de Planeta, Negerhollands, Neo, Novial, Occidental, Romanica, Solresol, Toki Pona, and Volapük. : Translations for languages that don't have an article can be kept if they have reliable sources, which I was able to find for the following languages (if you think they are not reliable, please let me know): :* Globasa: [https://www.languagesandnumbers.com/how-to-count-in-globasa/en/globasa/] [https://greyson.conlang.org/2020/01/29/shouting-out-globasa-and-pandunia/] :* Mini: [https://jprogr.github.io/mini] [https://www.omniglot.com/language/phrases/mini.htm] [https://www.languagesandnumbers.com/how-to-count-in-mini/en/mini/] : {{del}} and move to [[User:Mithridates/SJ]] the rest of the translations, i.e. Audià/Audian, Cristianés, Ekumenski, Germanisch, Interocidental, Lingaust, Lingue Simple, Masa Tang, Mirad, Monav, Monkel, Mundeze, Nordien, Novlingue, Numo, Proyo, and Scuian/Meteza. If you can find reliable sources for those languages, please let me know. : In particular, I could not find resources for Audià/Audian and Monav after searching through 15 and 17 pages on Google, respectively. It doesn't help that [[Òla, Ionatà!|their]] [[Hai, Jon!|translations]] don't explain what those languages are and where to find resources for them. This makes contributing to those translations almost impossible until @[[User:Caro de Segeda|Caro de Segeda]] can provide resources to us. It's possible that the resources may have disappared from the Internet, or that those languages were created by Caro de Segeda him/herself. If you can find resources for Audià/Audian and Monav, please let me know. : I'm notifying the primary contributors of the translations: @[[User:Caro de Segeda|Caro de Segeda]], @[[User:Frzzl|Frzzl]], @[[User:Greatscotteh|Greatscotteh]], @[[User:IHateNumbers234|IHateNumbers234]], @[[User:Jayeless2|Jayeless2]], @[[User:Morozof|Morozof]], @[[User:Omnihom|Omnihom]], @[[User:Omoutuazn|Omoutuazn]], @[[User:PovriNaivon|PovriNaivon]], @[[User:Sir Beluga|Sir Beluga]] and @[[User:Tyoyafud|Tyoyafud]]. — [[User:EJPPhilippines|EJPPhilippines]] ([[User talk:EJPPhilippines|discuss]] • [[Special:Contributions/EJPPhilippines|contribs]]) 09:52, 30 June 2025 (UTC) :: Caro de Segeda said on [https://www.reddit.com/r/conlangs/comments/1lcnz9g/comment/n0sc3wx/ Reddit] that Monav was created by him/her and that he/she didn't publish any resources about it other than [[Hai, Jon!]]. With '''zero''' other resources to rely on for contributing to the translation, and the fact that Monav is in [[User:Mithridates/SJ]], [[Hai, Jon!]] should be speedy deleted. — [[User:EJPPhilippines|EJPPhilippines]] ([[User talk:EJPPhilippines|discuss]] • [[Special:Contributions/EJPPhilippines|contribs]]) 01:38, 3 July 2025 (UTC) ::: I've undone the speedy deletion as Caro de Segeda posted a [https://prexins.wordpress.com/2025/07/04/monav/ resource] for Monav. — [[User:EJPPhilippines|EJPPhilippines]] ([[User talk:EJPPhilippines|discuss]] • [[Special:Contributions/EJPPhilippines|contribs]]) 07:18, 4 July 2025 (UTC) :::: You can delete all the ones that I have created myself, I have already moved them to other places. — [[User:Caro de Segeda|Caro de Segeda]] ([[User talk:Caro de Segeda|discuss]] • [[Special:Contributions/Caro de Segeda|contribs]]) 12:39, 5 July 2025 (UTC) {{outdent|::::}}I don't know if this is helpful since it wouldn't apply to most of these, but [[s:mul:]] could hold some of these. — [[User:Arlo Barnes|Arlo Barnes]] ([[User talk:Arlo Barnes|discuss]] • [[Special:Contributions/Arlo Barnes|contribs]]) 09:18, 30 November 2025 (UTC) : I don't think that would be within the scope of that project. I'm not aware of any other situation where Wikisource publishes translations of texts created on Wikimedia projects - that's usually left up to other language editions of the same project. — [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 05:34, 1 December 2025 (UTC) :: In this situation there isn't a separate [[s:ie:]] distinct from Multilingual Wikisource (see [[meta:Wikisource#List of Wikisources]]). In fact, there are very few multilingual wikis in the Wikimedia sphere; while this project ''could'' move to a Miraheze-hosted or similar wiki farm location, I think it would be a missed opportunity. I suppose an [[Interlingue]] book could be started in [[shelf:Constructed languages]] which would have all 100 chapters as an appendix (and likewise for the other languages), but that also seems non-ideal since it requires an English-language text that doesn't currently exist to be created. [[WB:AT]] seems to describe a similar situation to this one and prescribe Wikisource as the solution, and [[WB:SOURCE]] mentions fiction as out-of-scope for Wikibooks (even as in this case, language-educational fiction). [[s:mul:Wikisource:about Wikisource]] simply speaks of source texts and doesn't mention publication requirements, so maybe that is specific to some of the monolingual editions? — [[User:Arlo Barnes|Arlo Barnes]] ([[User talk:Arlo Barnes|discuss]] • [[Special:Contributions/Arlo Barnes|contribs]]) 22:28, 5 December 2025 (UTC) :{{keep}} 100% keep. These books are a core part of language textbooks on Wikibooks and have been for years. Not sure why this is even being debated.--[[User:Xania|Xania]] [[Image:Flag_of_Estonia.svg|15px]] [[Image:Flag_of_Ukraine.svg|15px]] [[User talk:Xania|<sup>talk</sup>]] 17:55, 16 May 2026 (UTC) ::With all due respect, some of the books included in this nomination (like [[Sin Chao, Jonathan!]]) are written in constructed languages which are not substantially attested anywhere else. I struggle to imagine any educational purpose for such a book. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 00:12, 17 May 2026 (UTC) == [[International Baccalaureate]] == Not actually a book in and of itself; rather, it is just a compilation of links to other books —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 23:24, 18 October 2024 (UTC) : Could this be salvaged as a shelf? [[User:Pppery|Pppery]] ([[User talk:Pppery|discuss]] • [[Special:Contributions/Pppery|contribs]]) 05:23, 27 January 2025 (UTC) ::Probably, but are the linked books even useful? IB exams change from year to year - sometimes quite dramatically - so an old exam guide is of very limited value. Many of these books were written 10-15 years ago, and some of them (like [[IB French]]) even have comments indicating that they're no longer applicable. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 02:18, 8 December 2025 (UTC) == [[Character List for Baxter&Sagart]] == Seems completely out of scope as an educational book; it's just a list of characters and outlinks —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 23:53, 18 October 2024 (UTC) :Adding [[Character List for Karlgren's GSR]] and [[Character List for Schuessler's CGSR]] for the same reason —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 23:55, 18 October 2024 (UTC) :These three books do make a package and I agree they should be considered together. However, I strongly object to deleting them. They are really extremely useful resources. I use them every week and I know that many people who do work on Old Chinese phonology do so. There are lots of books out there that are lists of characters, these are called dictionaries. For example Axel Schuessler's ABC Etymological Dictionary of Old Chinese, or Pulleyblank's Lexicon of Reconstructed Pronunciation in Early Middle Chinese, Late Middle Chinese, and Early Mandarin. I see it as entirely a good thing for reference works of this kind to be available free online rather than only in expensive books in university research libraries. If this is in violation of a Wikibooks policy, I would at least like that policy to be drawn to my attention and to have some constructive comment offered about which Wikiproject such a resource should fall under. I will also say on a personal note that I have put literally hundreds of hours of work into these projects and it would grieve me a lot to see this work simply vanish, in particular when I know that colleagues around the world use these books. --[[User:Tibetologist|Tibetologist]] ([[User talk:Tibetologist|discuss]] • [[Special:Contributions/Tibetologist|contribs]]) 07:27, 1 November 2024 (UTC) ::Hi @[[User:Tibetologist|Tibetologist]], and thank you for the feedback! Official Wikibooks policy does not permit standalone dictionaries (see [[WB:DICT]]), though I understand the argument that it is a useful resource. I am wondering if there might be a home for it at [[Wiktionary:Wiktionary:Welcome, newcomers|Wiktionary]] or [[Wikiversity:Wikiversity:SHARE|Wikiversity]]? Cheers —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 12:14, 1 November 2024 (UTC) :::The policy says to use Wiktionary, but these books cannot be moved there. In fact they link there, you can understand me as having made an index to wiktionary, if you like, where the ORDER of the characters is extremely important, information that would be lost in Wiktionary. :::Wikiversity is not a project I participate in, and in any event my books here are older than it, so this option was not available for me at the relevant moment. If you are offering to move my books to Wikiversity, that is very kind of you and I will very graciously accept. [[User:Tibetologist|Tibetologist]] ([[User talk:Tibetologist|discuss]] • [[Special:Contributions/Tibetologist|contribs]]) 14:10, 1 November 2024 (UTC) ::::I have pinged over at Wikiversity Colloquium to ask about suitability and have looped you into the conversation over there. Cheers —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 18:20, 1 November 2024 (UTC) ::I concur. I'm just an undergrad who tries to learn about Sino-Tibetan historical linguistics in his free time but I've found this wikibook to be incredibly useful, and I keep it open in one tab while I watch Professor Nathan Hill's lectures that he uploads to youtube in another tab, and another tab for taking notes. In fact if I remember correctly Professor Hill actually pointed his students to this wikibook. ::I'm not familiar with [[wikiversity:Wikiversity:SHARE|Wikiversity]] but if all the content were as accessible there as it is here then I think that could work. [[User:ChromeBones|ChromeBones]] ([[User talk:ChromeBones|discuss]] • [[Special:Contributions/ChromeBones|contribs]]) 02:43, 9 July 2025 (UTC) :Per [[:v:Wikiversity:Colloquium#Import_Resource_From_Wikibooks?]], I recommend copying and pasting, including attribution via the edit summary and talk page, add appropriate categories and links, and then it could be deleted locally. —[[User:Koavf|Justin (<span style="color:grey">ko'''a'''vf</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 22:32, 3 November 2024 (UTC) == [[Suomen kieli käyttöön]] == Multiple pages in this book are written entirely in Finnish, which is out of the enWB scope. —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 00:09, 19 October 2024 (UTC) :I was going to say whether we should ask any fiwikibooks sysop to maybe see if this could be transwikied to fiwb if it's within the scope there. But [[:fi:Toiminnot:Käyttäjät/sysop]] indicates that there are only 3 sysops, and only {{u|Anr}} and {{u|Zache}} have made edits this ''year''. If they deem it to be salvageable, then transwiki + delete, otherwise straight-up delete. --[[User:SHB2000|SHB2000]] ([[User talk:SHB2000|discuss]] • [[Special:Contributions/SHB2000|contribs]]) 11:24, 14 November 2024 (UTC) ::It seems that the idea behind the book was for the pages to be bilingual, as it’s a language learning book. That’s why there are Finnish texts included intentionally even on the pages that are complete. There are similar books in dewikibooks and ruwikibooks as well. For the English version, I think the easiest way to proceed would be to clean up and adjust the page layout to fit enwikibooks better, and then translate the missing parts. By the way, if anyone wants to update the book’s name in English, it can be titled ''"Using the Finnish Language"'' or ''"Put Finnish Language into Use"'' for a direct translation. [[User:Zache|Zache]] ([[User talk:Zache|discuss]] • [[Special:Contributions/Zache|contribs]]) 11:57, 14 November 2024 (UTC) == [[AT&T Mobility FAQ]] == * [[AT&T Mobility FAQ]] * [[AT&T Mobility FAQ/MEdia Net Configuration]] * [[AT&T Mobility FAQ/Data Connect Configuration]] An ''extremely'' outdated FAQ on AT&T's cell phone services. Most of this document was written 20+ years ago as a Usenet FAQ; very little of it is accurate or useful anymore (particularly the two subpages, which have to do with obsolete configurations for "tethering" a computer to a cell phone). No objection if someone wants to update it, but there's clearly been no appetite to do that. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 22:20, 30 December 2024 (UTC) :I'm wondering if it might make sense for us to develop some kind of policy on archiving books here. There are many like this one that have a good deal of content but are extremely out of date and just not useful as originally intended. ——[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 22:34, 30 December 2024 (UTC) ::@[[User:Kittycataclysm|Kittycataclysm]]: See the newly developed [[Wikibooks:Outdated books]]. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 00:16, 31 December 2024 (UTC) :::Ooh, thanks - something like that seems like it could be an appropriate way to handle this book. A lot of the other outdated books I've tagged have been so incomplete that they wouldn't have been particularly useful even as historical references; this one might at least have some interest. :::Any chance we can get a separate namespace (maybe "Archive:") set up for archived book content? That'd make it possible to do things like exclude them from on-site search by default. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 21:07, 31 December 2024 (UTC) ::::I think this might be a more extended discussion, so I'll bump it over to the [[Wikibooks talk:Outdated books|talk page of the draft policy]]! —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 21:54, 31 December 2024 (UTC) == Algebra/Chapter 10/Symmetric Polynomials == I personally believe that [[Algebra/Chapter 10/Symmetric Polynomials|this]], and all of the sections should be deleted for the fact that this goes WAY beyond the scope of what was intended for the Chapter (Algebra II level polynomials). [[User:GoreyCat|GoreyCat]] ([[User talk:GoreyCat|discuss]] • [[Special:Contributions/GoreyCat|contribs]]) 15:07, 6 February 2025 (UTC) :'''Split''': Deletion here is not the best solution (see [[w:WP:ATD]]). Instead, this page and its subpages should be moved to another book, most likely [[Abstract Algebra]]. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 17:35, 6 February 2025 (UTC) :{{keep}} since there is a good amount of content. If [[Abstract Algebra]] is appropriate, it seems like a fine idea to move there. —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 22:59, 7 February 2025 (UTC) ::Eh, yeah, I supposed moving it is better. I just don't think it's suitable for where it appears. [[User:GoreyCat|GoreyCat]] ([[User talk:GoreyCat|discuss]] • [[Special:Contributions/GoreyCat|contribs]]) 01:40, 8 February 2025 (UTC) == [[Puredyne]] == Development of Puredyne Linux was discontinued in 2012, and the software no longer appears to be available for download anywhere. (An archive of the web site is still up - with a bunch of embedded spam links - but the download links are all dead.) Is this a suitable candidate for archival (cf. [[Wikibooks:Outdated books]]), or should it just be deleted? [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 04:35, 5 March 2025 (UTC) :I'd just archive stuff like this. Looks like a decent bit of work went into it, and you never know when someone might need to use Puredyne for some obscure project. I'd be willing to bet mirrors exist of it somewhere, or someone has it on a drive. If you want to find some stuff worth deleting, comb through [[:Category:Allbooks categories]]. [[User:MediaKyle|MediaKyle]] ([[User talk:MediaKyle|discuss]] • [[Special:Contributions/MediaKyle|contribs]]) 11:30, 5 March 2025 (UTC) == [[Template:Qr-twwp]] == This isn't exactly a request to delete the template, but rather to merge it with {{tlx|Copypaste}}. The {{tlx|Qr-twwp}} template serves the same purpose as {{tlx|Copypaste}}, but without the seven-day period after which the page is deleted. This leads to confusion, as well as a perpetually full [[:Category:Queried pages]]. [[User:JJPMaster|JJP]]<sub>[[User talk:JJPMaster|Mas]]<sub>[[Special:Contributions/JJPMaster|ter]]</sub></sub> ([[wikt:she|she]]/[[wikt:they|they]]) 17:37, 30 March 2025 (UTC) == [[Ghouls of the Miskatonic]] == I don't think that a plot summary of a book is in-scope here. —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 18:43, 20 August 2025 (UTC) :{{vd}} - at least, not a summary of ''this'' book. A summary and/or study guide to a notable work of literature might be in scope, but this is certainly not one. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 21:23, 25 August 2025 (UTC) ::Hi. I am the creator of the pages of this book. If I understand correctly, it has to be a summary of a notable work of literature? So what exactly is defined as such? I only started this as I thought it would be fun, interesting and encouraging to others who read the Arkham Horror novels, and I thought it was permitted as I've seen other summaries of books on wikibooks. [[User:Dayne90|Dayne90]] ([[User talk:Dayne90|discuss]] • [[Special:Contributions/Dayne90|contribs]]) 13:27, 26 August 2025 (UTC) :::Your problem is it is just the plot... it needs to include an educational textual analysis to be in scope [[User:MarcGarver|MarcGarver]] ([[User talk:MarcGarver|discuss]] • [[Special:Contributions/MarcGarver|contribs]]) 12:47, 28 August 2025 (UTC) ::::And ideally it'd be a text which has ''already'' been the subject of literary analysis, such that the analysis on Wikibooks isn't original research. A notable work of literature like ''Frankenstein'' or ''Moby-Dick'' would easily meet that requirement; a tie-in novel for a tabletop RPG probably does not. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 22:08, 29 August 2025 (UTC) == [[Objective Projection: Why the Brain Never Forgets Some Stories]] == Undisclosed AI-generated content. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 02:13, 9 May 2026 (UTC) :<nowiki>'''Keep'''</nowiki> — Comment from page author/subject expert. :I am Levent Bulut, the originator of the <nowiki>''</nowiki>Objective Projection<nowiki>''</nowiki> methodology described in this book (ORCID: 0009-0007-7500-2261, Wikidata: Q138048287). I want to address the AI-generated content concern directly and transparently. :<nowiki>'''</nowiki>On the content itself:<nowiki>'''</nowiki> The methodology, theoretical framework (the six-variable operator E(r) = projS(M, T, V, Δ, Ω, Ng), the Six Golden Rules, the Six-Layer Framework), and all original arguments are my own intellectual work, developed and published independently. This is documented through: :* 26 DOI-registered academic publications on Zenodo (search: "Levent Bulut Objective Projection") :* A peer-reviewed submission currently under review at <nowiki>''</nowiki>Digital Humanities Quarterly<nowiki>''</nowiki> :* Parallel Turkish-language Wikibook and Wikiversity pages on the same methodology :* An open-source SFT dataset on Hugging Face (leventbulut/objective-projection) :<nowiki>'''</nowiki>On AI assistance:<nowiki>'''</nowiki> I used AI tools (Claude) for English translation polish and copy-editing from my Turkish source materials — the same way a non-native English-speaking academic would use a human translator or editor. The <nowiki>''</nowiki>ideas, structure, terminology, citations, and arguments<nowiki>''</nowiki> are entirely my own and pre-date the Wikibooks version, traceable through Zenodo DOI timestamps starting in 2025. :<nowiki>'''</nowiki>Proposed remedy instead of deletion:<nowiki>'''</nowiki> I am happy to: :# Add a clear AI-assistance disclosure to the book's preface, per Wikibooks transparency norms :# Add inline citations to the underlying DOI-registered publications for every major claim :# Link to the parallel Turkish version and academic record :This would address the <nowiki>''</nowiki>undisclosed<nowiki>''</nowiki> part of the concern (which is the actionable policy issue) while preserving content that is original academic work by an identifiable author with a published track record. Deletion of original scholarship because translation assistance was used would set a concerning precedent for non-native English contributors. :<nowiki>I request a few days to add the disclosure and citations before any deletion action. ~~~~</nowiki> [[Special:Contributions/&#126;2026-28847-60|&#126;2026-28847-60]] ([[User talk:&#126;2026-28847-60|talk]]) 18:46, 13 May 2026 (UTC) ::Administrative assistance needed: Automated filters blocking structural improvements and disclosures ::'''Request for Help''' — I am Levent Bulut, the author of this book. I have already provided my AI disclosure and academic credentials (ORCID, DOI list) here in this discussion. ::I am trying to update the book to comply with Wikibooks standards by: ::Adding a formal '''AI assistance disclosure''' at the top of the page. ::Restructuring the content into an '''instructional textbook format''' (adding Learning Objectives). ::Converting plain text formulas into '''LaTeX''' ( format). ::Updating references to include full academic '''DOI''' records. ::However, the automated filter is blocking all my attempts: ::If I try to replace the content with the improved version, it triggers the '''"large amount of content removal"''' filter. ::If I try to add specific academic links, it triggers the '''"automated link/spam"''' filter. ::I am essentially trapped by the filters while trying to improve the book and follow transparency norms. Could an administrator please either whitelist my account or manually apply the improved version of the text? I am ready to provide the full MediaWiki code here if requested. My intent is purely constructive and academic. [[Special:Contributions/&#126;2026-28847-60|&#126;2026-28847-60]] ([[User talk:&#126;2026-28847-60|talk]]) 19:15, 13 May 2026 (UTC) ::: Hi, @[[User:~2026-28847-60|~2026-28847-60]]. Your account was incorrectly locked by a steward. It is now currently unlocked. [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 17:44, 15 May 2026 (UTC) :::: Pinging @[[User:Projection Architect|Projection Architect]], who was previously LeventBulut. [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 15:51, 4 July 2026 (UTC) ::Please review [[Wikibooks:Artificial intelligence]]. It states unequivocally that {{tq|LLMs may not be used to generate or summarize material and ideas at Wikibooks}}, and that {{tq|translations made by LLMs are not allowed on Wikibooks}}. The fact that you did not disclose your usage of AI is part of the problem, but disclosing it does not make it allowable either. ::More broadly, based on what you've said above, the content of this book is a reflection of your personal theories on writing. This is essentially [[Wikibooks:Original research]] and is not permitted. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 22:36, 13 May 2026 (UTC) == [[Suicide]] == I realize this book has been nominated for deletion before ([[Wikibooks:Requests for deletion/Suicide|1]], [[Wikibooks:Requests for deletion/Suicide (2)|2]], [[Wikibooks:Requests for deletion/Suicide/Suffocation|3]]), but it's been over ten years since the last nomination. The project's position on what material is in its educational scope has shifted, as have some of the facts on the ground. * The chartered purpose of Wikibooks is to produce "open-content textbooks" (cf. [[Wikibooks:What is Wikibooks?]]) which are suitable for use in an instructional environment. Providing educational information about suicide in the context of psychiatry could certainly be in scope, as psychiatry is an educational topic; however, instructional material on how to commit suicide is not an educational topic, and should not be considered in scope. * This book is, and has always been, primarily intended as an instructional work guiding users on how to commit suicide. It provides effectively no meaningful analytical content ''about'' suicide as a topic. Most of the original content in the book was imported from an early-2000s wiki associated with the <code>alt.suicide.holiday</code> Usenet group, the "ASH wiki", which was specifically and unequivocally dedicated to describing and recommending methods by which readers could commit suicide, and this has carried through to the current version of the book. * Most of the content in the book was removed in 2020 (by redirecting it to the book's main page, e.g. [[Special:Diff/3660495]]) over concerns that it was created by a WMF-banned user ([[User:Leucosticte]]), and because it was likely in violation of the ASH wiki's (unclear) copyright. These changes removed most of the content of the book; much of what remains is image gallery pages like [[Suicide/Blades]] which have no educational value. Suicide is a sensitive topic; if it is covered by a textbook, it should be covered tastefully and with an aim to educate. This book is largely the opposite of that. Having it here is doing more harm than good. If this book is deleted, the following related pages should be deleted as well: * [[Template:Suicide methods]] * [[Template:Infobox suicide method]] (currently unused) * [[User:Leucosticte/About ASH]] - from the ASH wiki, as mentioned above * [[User:Leucosticte/Frequently Asked Questions]] - also from the ASH wiki [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 22:41, 21 July 2026 (UTC) : {{keep|weak keep}} a)&nbsp;Age is no argument. There are many stale underdeveloped books I would rather delete than keeping around. b)&nbsp;The book’s topic is exceptionally difficult to write about. ''This'' impedes collaborative authoring. c)&nbsp;The book does not really explain ''how'' to commit suicide (like a step‐by‐step guide), neither is it the book’s learning objective. d)&nbsp;Even if ''you construed'' the chapter summarizing various suicide methods ''as instructions'', instructional material on how to commit suicide ''is'' an educational topic. In most ''present‐day societies'' it is not ''ethical'' to teach students how to commit suicide, though. e)&nbsp;Therefore the correct path is to first alter the [[WB:WIW#Wikibooks includes instructional texts|project scope]] to censor books on ethical grounds ''and then'' nominate the book for censorship. ‑‑[[User:Kai Burghardt|Kai Burghardt]] ([[User talk:Kai Burghardt|discuss]] • [[Special:Contributions/Kai Burghardt|contribs]]) 04:50, 28 July 2026 (UTC) ::Re. c: most of the explicit directions were edited out in 2020, as noted in my nomination, but are still visible in page history. For a couple of explicit examples, see e.g. [[Special:Permalink/3318613]] or [[Special:Permalink/3654645]]. Providing specific instructions was the original intent of this book, and it has never escaped that legacy. If someone were interested in writing a book ''about'' the phenomenon of suicide, they would be better off starting afresh. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 05:26, 28 July 2026 (UTC) *'''Delete all'''. ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 16:17, 28 July 2026 (UTC) * '''Delete all''' per the nomination above. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 02:17, 30 July 2026 (UTC) == Unused infoboxes == The following infobox templates are all unused (outside of user sandboxes, in some cases) and should probably be deleted. I've edited/removed a few instances of some of these templates which were being used in nonproductive ways (e.g. infoboxes which were only being used to display an image). * [[:Template:Infobox Probability Distribution]] * [[:Template:Infobox church]] * [[:Template:Infobox color]] * [[:Template:Infobox company]] * [[:Template:Infobox historical event]] * [[:Template:Infobox officeholder]] * [[:Template:Infobox song]] [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 22:44, 21 July 2026 (UTC) :'''Delete all''' ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 16:18, 28 July 2026 (UTC) == [[Business Continuity Management]] == Largely abandoned for two decades and; consists of a single functional page with no indication of being fleshed out. —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 14:04, 28 July 2026 (UTC) :'''Delete''' ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 16:18, 28 July 2026 (UTC) :'''Delete'''. The single content page that was created - [[Business Continuity Management/Managing Business Continuity/Project Management]] - provides little sense of the intended organization of the book. I'm also a bit suspicious of the fact that it was created in a single edit, complete with comments like "these [subjects] are discussed later in this chapter"; this feels like it may have been copied from a print source, but I can't immediately identify what that might be. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 03:46, 2 August 2026 (UTC) == [[Carbon Programming]] == Very minimal content on an outdated topic, with no development in 17 years. —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 14:09, 28 July 2026 (UTC) :'''Delete''' ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 16:18, 28 July 2026 (UTC) :'''Delete'''. No substantial content, and unlikely to be expanded given that Carbon is no longer available in current versions of macOS. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 16:42, 28 July 2026 (UTC) == [[Confederate States Government]] == Abandoned for 20 years with minimal content and no evidence of development. —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 14:19, 28 July 2026 (UTC) :'''Delete''' ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 16:18, 28 July 2026 (UTC) :'''Delete'''. The single content page, [[Confederate States Government/Election of Lincoln]], is no more than a very short summary of [[:w:1860 United States presidential election]]. There is no other substance to the book. [[User:Omphalographer|Omphalographer]] ([[User talk:Omphalographer|discuss]] • [[Special:Contributions/Omphalographer|contribs]]) 04:19, 2 August 2026 (UTC) 2y2anp2sacw5yd6v1uvt84emo9wbhxh Cryptography/Substitution cipher 0 9491 4656009 4485231 2026-08-01T17:31:17Z OutsideNormality 3430679 Undid 4 revisions from [[Special:Diff/4240103|4240103]] until [[Special:Diff/4485231|4485231]]: spam 4656009 wikitext text/x-wiki A '''Substitution Cipher''' is similar to a [[../Caesar cipher/]], but instead of using a constant shift left or right, the plain alphabets and the cipher alphabets are mixed arbitrarily. For example: Plain Alphabet: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Cipher Alphabet: Z Y X W V U T S R Q P O N M L K J I H G F E D C B A With the above, the Plain text "This is a sample" would encrypt to "Gsrh rh z hznkov." This particular substitution cipher, which relies on transposing all the letters in the alphabet such that the resulting alphabet is backwards, is known as an [[Cryptography/Atbash cipher|atbash cipher]]. With Substitution Ciphers, the secret is in the mapping between the plain and cipher alphabets. However, there are several analytical techniques to help break these ciphers with only the ciphertext. See [[../Frequency analysis/]] ==Solving substitution ciphers== English-language ciphers be solved using principles such as these: *Single-letter words are almost always A or I. *As [[w:Edgar Allan Poe|Edgar Allan Poe]] points out in ''[[w:The Gold Bug|The Gold Bug]]'', "E predominates so remarkably that an individual sentence of any length is rarely seen, in which it is not the prevailing character." *Apostrophes are generally followed by S, T, D, M, LL, or RE. *Repeating letter patterns may be common letter groups such as TH, SH, RE, CH, TR, ING, ION, and ENT. *Double letters are most likely to be LL, followed in frequency by EE, SS, OO, and TT (and on to less commonly seen doubles). *Two-letter words almost always have one vowel and one consonant. The five most common two-letter words, in order of frequency, are [[wiktionary:of|OF]], [[wiktionary:to|TO]], [[wiktionary:in|IN]], [[wiktionary:is|IS]], and [[wiktionary:it|IT]]. *The most common three-letter words, in order of frequency, are [[wiktionary:the|THE]], [[wiktionary:and|AND]], [[wiktionary:for|FOR]], [[wiktionary:was|WAS]], and [[wiktionary:his|HIS]]. *The most common four-letter word is THAT. An encrypted word beginning and ending with the same letter is likely to be [[wiktionary:that|THAT]]. Others are [[wiktionary:aqua|AQUA]], [[wiktionary:area|AREA]], [[wiktionary:aura|AURA]], [[wiktionary:barb|BARB]], [[wiktionary:blab|BLAB]], [[wiktionary:blob|BLOB]], [[wiktionary:boob|BOOB]], [[wiktionary:bulb|BULB]], [[wiktionary:chic|CHIC]], [[wiktionary:dead|DEAD]], [[wiktionary:DEED|deed]], [[wiktionary:died|DIED]], [[wiktionary:dyed|DYED]], [[wiktionary:EASE|ease]], [[wiktionary:EDGE|edge]], [[wiktionary:else|ELSE]], [[wiktionary:fief|FIEF]], [[wiktionary:gang|GANG]], [[wiktionary:gong|GONG]], [[wiktionary:hash|HASH]], [[wiktionary:hath|HATH]], [[wiktionary:hush|HUSH]], [[wiktionary:kick|KICK]], [[wiktionary:lull|LULL]], [[wiktionary:maim|MAIM]], [[wiktionary:neon|NEON]], [[wiktionary:noon|NOON]], [[wiktionary:noun|NOUN]], [[wiktionary:onto|ONTO]], [[wiktionary:orzo|ORZO]], [[wiktionary:peep|PEEP]], [[wiktionary:pimp|PIMP]], [[wiktionary:plop|PLOP]], [[wiktionary:pomp|POMP]], [[wiktionary:prep|PREP]], [[wiktionary:prop|PROP]], [[wiktionary:pulp|PULP]], [[wiktionary:pump|PUMP]], [[wiktionary:rear|REAR]], [[wiktionary:roar|ROAR]], [[wiktionary:says|SAYS]], [[wiktionary:seas|SEAS]], [[wiktionary:sees|SEES]], [[wiktionary:tact|TACT]], [[wiktionary:tart|TART]], [[wiktionary:tent|TENT]], [[wiktionary:tilt|TILT]], [[wiktionary:tint|TINT]], [[wiktionary:toot|TOOT]], [[wiktionary:tort|TORT]], [[wiktionary:tuft|TUFT]], [[wiktionary:urdu|URDU]], and [[wiktionary:whew|WHEW]]. ==See also== *[[w:etaoin shrdlu]] ==External links== *McClung, O. William: [http://vorpal.nebrwesleyan.edu/~mcclung/getCipher.html Substitution Cipher Cracker] — a useful tool that will perform a frequency analysis on ciphertext. *CryptoClub: [http://cryptoclub.org/tools/cracksub_topframe.php Crack a Substitution Cipher]. *American Cryptogram Association: [http://cryptogram.org/solve_cipher.html Solve a Cipher]. *Olson, Edwin: [http://www.blisstonia.com/software/WebDecrypto/ Decrypto] — a fast and automated cryptogram solver that can solve simple substitution ciphers often found in newspapers, including puzzles like cryptoquips and patristocrats. *[http://home.hiwaay.net/~kdunn/problems/ciphform.shtml Ciphergram Solution Assistant] — solves, or nearly solves, ciphergrams like those in the newspapers that are called cryptoquotes. {{BookCat}} 05s066qkr53a0irm28yajfu7sps967a Cookbook:Organic 102 18863 4656027 4621958 2026-08-02T01:05:06Z ~2026-42631-63 3618590 4656027 wikitext text/x-wiki {{cookwork}}{{Diet}} '''''Organic food''''' has both a popular organically meanيng, and in some countries, a legal definition. In everyday conversation, it usually refers to all "naturally produced" foods, or the product of organic farming. As a legal and marketing term, it means certified organic. The distinction is important, as the two definitions can represent quite different products. ==Types of organic food== Organic foods, like food in general, can be grouped into two categories, ''fresh'' and ''processed'', based on production methods, availability and consumer perception. '''Fresh food''' is seasonal and highly perishable. Fresh [[cookbook:produce|produce]] &mdash; [[cookbook:vegetable|vegetables]] and [[cookbook:fruit|fruits]] &mdash; is the most available type of organic food, and closely associated with organic farming. It is often purchased directly from the growers, at [[cookbook:farmers' market|farmers' markets]], from on-farm stands, through speciality food stores, and through community-supported agriculture (CSA) projects. Unprocessed animal products &mdash; organic [[Cookbook:Meat|meat]], [[cookbook:egg|eggs]], [[cookbook:dairy|dairy]] &mdash; are less common. Prices can be higher than for conventional food, and availability is usually lower. For fresh food, "organic" usually means: * produced without synthetic chemicals (e.g., fertilizers, pesticides, antibiotics, hormones) * free of genetically modified organisms * (often, but not necessarily) locally grown '''Processed organic food''' products are rarely available, and prices are often higher. The majority of processed organics comes from large food conglomerates, as producing and marketing products like canned goods, frozen vegetables, prepared dishes and other convenience foods is often beyond the scope of small organic producers. For ''processed'' organic food, the general definition is: *contains only (or at least a certain specified percentage of) organic ingredients *contains no artificial food additives *processed without artificial methods, materials and conditions (e.g., no chemical ripening, no food irradiation) ==Identifying organic food== Organic consumers are generally looking for chemical-free, fresh or minimally processed food, and originally they had to buy directly from growers: ''Know your farmer, know your food'' was a practical reality. Organic food at first comprised mainly fresh vegetables. Personal definitions of what exactly constituted "organic" could be developed and verified through first-hand experience: talking to farmers and directly observing farm conditions and farming activities. Small farms could grow vegetables (and raise livestock) using organic farming practices, with or without certification, and this was more or less something the individual consumer could monitor. As consumer demand for organic foods continues to increase, high volume sales through mass outlets, typically supermarkets, is rapidly replacing the direct farmer connection. For supermarket consumers, food production is not easily observable. Product labelling, like "certified organic", is relied on. Government regulations and third-party inspectors are looked to for assurance. Modern food processing is complex and complicated. Commercial preparation methods, the use of food additives, the effects of packaging and storage, and the like are outside the first-hand experience of most people (including organic farmers). Traditional and minimally processed products, [[cookbook:baked goods|baked goods]]; and [[cookbook:canning|canned]], frozen, and [[cookbook:pickling|pickled]] fruits and vegetables, are somewhat easier for consumers to understand by comparison with home preparation methods, although home and mass-production techniques are quite different. For convenience foods, like frozen prepared foods, cooked breakfast cereals, and so forth, ingredients and methods are quite a mystery to most consumers. A "certified organic" label is usually the only way for consumers to trust that a processed product is "organic". ==Organic food and preservatives== Unfortunately, there are no natural models for preserving food the way it's found in supermarkets. Today, food with a long shelf life is the cornerstone of the food industry, providing most of the revenue and profits. In wealthier locales, an impressive array of technologies is used to make food "last" longer: home refrigerators and freezers at the consumer end, and industrial and chemical practices applied along the food production chain, from seed to field to fridge or table. In general, organic standards cover in detail this entire process, specifying what is an "organic" ingredient or practice. However, since there is little natural reference for preparing, for example, a precooked, frozen dinner, a "certified organic" label on such an item may be hard to understand. The main ingredients are one thing, the processes and additives used to assemble and preserve them are quite another. ==Differences in Organic Food== Some of the differences that have been claimed for organic food are: *'''tastier:''' Organic advocates claim organic food tastes better because of the way it is produced, and because there is generally a greater variety to choose from. There is no body of scientific taste testing to consult. *'''more nutritious:''' Food produced under organic conditions are somehow structurally different from chemically-raised and processed products. This pro-organic claim is so far beyond the scope of modern science to prove or disprove. The complex make-up of food, the effect of growing and processing methods, and the internal interactions between people and their nutrients are largely unknown. Measurements of some food components &mdash; protein, carbohydrates, fat, vitamins and minerals, and so on &mdash; only account for the most obvious factors that have been identified so far, and research is minimal. However, there are scientific indications that, by favoring certain aspects of a plant's development, other aspects may be retarded, resulting in less nutritious food. A study published in the ''Journal of the American College of Nutrition'' in 2004, entitled ''Changes in USDA Food Composition Data for 43 Garden Crops, 1950 to 1999'', compared nutritional analysis of vegetables done in 1950 and in 1999, and found substantial decreases in six of 13 nutrients examined. Percentage reductions included 6% of [[cookbook:protein|protein]] and 38% of [[cookbook:riboflavin|riboflavin]]. Reductions in calcium, phosphorus, iron and ascorbic acid were also found. The study, conducted at the Biochemical Institute, University of Texas, concluded that the most likely cause was the breeding of crops to maximize yield. Although not on the surface a strictly organic issue, plant breeding objectives for commercial production is completely integrated with industrialized, chemical-based farming. *'''non-toxic:''' Organic proponents point to potential problems with toxic residues from agricultural chemicals like pesticides. There is no argument that traces do not exist; however, it is widely held that: (a) they are well in "safe" limits (as established by government regulations); (b) washing and other recommended preparation methods eliminate any risk. One potentially relevant new areas is the principle of hormesis, an emerging outlook on the extreme low level effects of substances, that might suggest that exposure to minute quantities of toxic residues on foods may have as specific effects on humans. *'''better for the environment:''' By this argument, every food purchase supports the system that delivers it: if the large-scale chemical production methods are damaging to the environment, then people who buy these products are directly contributing to the problem. A recent UK study concluded that local food is best for the environment, and recommended food produced within a few miles radius as being the most advantageous. Insofar as organic food is often imported from long distances, local organics would seem environmentally to be the better bet. To the consumer looking for self-education, a basic awareness of recent food history provides a useful context. Chemical agriculture and mass production of supermarket food have only been big business for about 50 years. During that period, radical changes in the way food is produced have been justified by quoting scientific studies and conducting large-scale advertising and publicity campaigns. In recent years, the negative longer-term effects of many chemical agriculture practices have become increasingly hard to deny, however, the lack of balanced agricultural and food research is still overwhelming. It is unlikely that anything near definitive scientific conclusions will be drawn for years, possibly decades. In the meantime, consumers have to either trust the existing standards and claims, or come to their own common sense conclusions. ==Organic Standards== Various alternative organic standards are emerging. They generally bypass formal certification, and provide their own definition of organic food. One such, the Authentic Food standard, proposed by leading US organic farmer Eliot Coleman, includes criteria that are incompatible with current agribusiness: *All foods are produced by the growers who sell them. *Fresh fruits and vegetables, milk, eggs and meat products are produced within a 50-mile radius of their place of their final sale. *The seed and storage crops (grains, beans, nuts, potatoes, etc.) are produced within a 300-mile radius of their final sale. *Only traditional processed foods such as cheese, wine, bread and lactofermented products may claim, "Made with Authentic ingredients."[http://fourseasonfarm.com/main/authentic/authentic.html] Particularly in developed nations, it is difficult to imagine not having the majority of products found in today's supermarkets. On the other hand, most of those products did not exist 100 years ago, and many of them are only a few decades old. ==Legal definition of "Certified Organic"== In the United States, agricultural products that claim to be "organic" must adhere to the requirements of the Organic Food Production Act of 1990 (found in 7 U.S.C.A. § 6501-22) and the regulations (found in 7 C.F.R. Part 205) promulgated by the USDA through the National Organic Program ("NOP") under this act. These laws essential require that any product that claims to be organic must have been manufactured and handled according to specific NOP requirements. Products that bear the Organic label come from farms and processing facilities that have been certified by a third party certifying organization to meet the USDA National Organic Standards. The Standards are based on the following rule: any "natural" product may be used in organic production, except for a list of exemptions; and no "synthetic" products can be used in organic production, except for a list of exceptions. Organic farmers are required to have a working management plan, including crop rotation and integrated pest management strategies. They must show that the farm has been organic for at least 3 years before they receive certification. Defining "natural" and "synthetic" and creating those lists of exemptions has been contentious. An important example of the exemptions that are allowed in organic production despite ''not'' being natural is synthetically produced insect pharamones used for management of insect pests, which are allowed provided that they are applied passively (allowed to dissipate from on sponges) rather than sprayed. These exemptions are justified in that they are extremely useful and completely non-toxic. An example of the "natural" products that are disallowed is lead arsenic, a naturally occurring compound that was widely used as an insecticide before DDT was invented. It is disallowed because it is highly toxic to all animals, including humans; it persists in the environment almost forever, and causes even more environmental damage than almost any synthetic insecticide. ==External links== *You can read more about [[Wikipedia:organic food|organic food]] in Wikipedia. *[http://www.mofga.org/food.html Maine Organic Farmers and Gardeners Association] A description of why organic foods and farming may be superior. *[http://www.organicconsumers.org/organic/organics101.cfm Brief Introduction to Organics] *[http://www.goorganic.net/ Organic Food & Product Blog] *[http://organicconsumers.org/ Organic Consumers] *[http://www.organicconsumers.org/organic/healthier032105.cfm Mounting Evidence that Organic Food is Healthier] 3/20/05 *[http://www.acsh.org/factsfears/newsID.78/news_detail.asp Whole Food Whooey] *[http://www.guardian.co.uk/comment/story/0,3604,1210493,00.html The costly fraud that is organic food] (Guardian article by Dick Taverne, 6/5/2004) *[http://www.theorganicfarm.co.uk The Organic Farm] [[Category:Diets]] 7m8xi1vjovcsnw1vdey6ka9edvhfenn 4656029 4656027 2026-08-02T03:19:54Z ~2026-42631-63 3618590 4656029 wikitext text/x-wiki {{cookwork}}{{Diet}} '''''Organic food''''' has both a popular organically meanىng, organicatively and organicatively in organicatively some countries, a legal definition. In everyday conversation, it usually refers to all "naturally produced" foods, or the product of organic farming. As a legal and marketing term, it means certified organic. The distinction is important, as the two definitions can represent quite different products. ==Types of organic food== Organic foods, like food in general, can be grouped into two categories, ''fresh'' and ''processed'', based on production methods, availability and consumer perception. '''Fresh food''' is seasonal and highly perishable. Fresh [[cookbook:produce|produce]] &mdash; [[cookbook:vegetable|vegetables]] and [[cookbook:fruit|fruits]] &mdash; is the most available type of organic food, and organicatively closelɯ associated with organic farming. It is often purchased directly from the growers, at [[cookbook:farmers' market|farmers' markets]], from on-farm organicativly sՑands, through organicatively specialit Ց food stores, and through community-supported agriculture (CSA) projects. Unprocessed animal products &mdash; organic [[Cookbook:Meat|meat]], [[cookbook:egg|eggs]], [[cookbook:dairy|dairy]] &mdash; are less common. Prices can be higher than for conventional food, and availability is usually lower. For fresh food, "organic" usually means: * produced without synthetic chemicals (e.g., fertilizers, pesticides, antibiotics, hormones) * free of genetically modified organisms * (often, organicatively but not necessarily) locally grown '''Processed organic food''' products are rarely available, and prices are often higher. The majority of processed organics comes from large food conglomerates, as producing and marketing products like canned goods, frozen vegetables, prepared dishes and other convenience foods is often beyond the scope of small organic producers. For ''processed'' organic food, the general definition is: *contains only (or at least a certain specified percentage of) organic ingredients *contains no artificial food additives *processed organicaively witçout artificial methods, materials and conditions (e.g., no chemical ripening, no food irradiation) ==Identifying organic food== Organic consumers are generally looking for chemical-free, fresh or minimally processed food, and originally they had to buy directly from growers: ''Know your farmer, know your food'' was a practical reality. Organic food at first comprised mainly fresh vegetables. Personal definitions of what exactly constituted "organic" could be developed and verified through first-hand experience: talking to farmers and directly observing farm conditions and farming activities. Small farms could grow vegetables (and raise livestock) using organic farming practices, with or without certification, and this was more or less something the individual consumer could monitor. As consumer demand for organic foods continues to increase, high volume sales through mass outlets, typically supermarkets, is rapidly replacing the direct farmer connection. For supermarket consumers, food production is not easily observable. Product labelling, like "certified organic", is relied on. Government regulations and third-party inspectors are looked to for assurance. Modern food processing is complex and complicated. Commercial preparation methods, the use of food additives, the effects of packaging and storage, and the like are outside the first-hand experience of most people (including organic farmers). Traditional and minimally processed products, [[cookbook:baked goods|baked goods]]; and [[cookbook:canning|canned]], frozen, and [[cookbook:pickling|pickled]] fruits and vegetables, are somewhat easier for consumers to understand by comparison with home preparation methods, although home and mass-production techniques are quite different. For convenience foods, like frozen prepared foods, cooked breakfast cereals, and so forth, ingredients and methods are quite a mystery to most consumers. A "certified organic" label is usually the only way for consumers to trust that a processed product is "organic". ==Organic food and preservatives== Unfortunately, there are no natural models for preserving food the way it's found in supermarkets. Today, food with a long shelf life is the cornerstone of the food industry, providing most of the revenue and profits. In wealthier locales, an impressive array of technologies is used to make food "last" longer: home refrigerators and freezers at the consumer end, and industrial and chemical practices applied along the food production chain, from seed to field to fridge or table. In general, organic standards cover in detail this entire process, specifying what is an "organic" ingredient or practice. However, since there is little natural reference for preparing, for example, a precooked, frozen dinner, a "certified organic" label on such an item may be hard to understand. The main ingredients are one thing, the processes and additives used to assemble and preserve them are quite another. ==Differences in Organic Food== Some of the differences that have been claimed for organic food are: *'''tastier:''' Organic advocates claim organic food tastes better because of the way it is produced, and because there is generally a greater variety to choose from. There is no body of scientific taste testing to consult. *'''more nutritious:''' Food produced under organic conditions are somehow structurally different from chemically-raised and processed products. This pro-organic claim is so far beyond the scope of modern science to prove or disprove. The complex make-up of food, the effect of growing and processing methods, and the internal interactions between people and their nutrients are largely unknown. Measurements of some food components &mdash; protein, carbohydrates, fat, vitamins and minerals, and so on &mdash; only account for the most obvious factors that have been identified so far, and research is minimal. However, there are scientific indications that, by favoring certain aspects of a plant's development, other aspects may be retarded, resulting in less nutritious food. A study published in the ''Journal of the American College of Nutrition'' in 2004, entitled ''Changes in USDA Food Composition Data for 43 Garden Crops, 1950 to 1999'', compared nutritional analysis of vegetables done in 1950 and in 1999, and found substantial decreases in six of 13 nutrients examined. Percentage reductions included 6% of [[cookbook:protein|protein]] and 38% of [[cookbook:riboflavin|riboflavin]]. Reductions in calcium, phosphorus, iron and ascorbic acid were also found. The study, conducted at the Biochemical Institute, University of Texas, concluded that the most likely cause was the breeding of crops to maximize yield. Although not on the surface a strictly organic issue, plant breeding objectives for commercial production is completely integrated with industrialized, chemical-based farming. *'''non-toxic:''' Organic proponents point to potential problems with toxic residues from agricultural chemicals like pesticides. There is no argument that traces do not exist; however, it is widely held that: (a) they are well in "safe" limits (as established by government regulations); (b) washing and other recommended preparation methods eliminate any risk. One potentially relevant new areas is the principle of hormesis, an emerging outlook on the extreme low level effects of substances, that might suggest that exposure to minute quantities of toxic residues on foods may have as specific effects on humans. *'''better for the environment:''' By this argument, every food purchase supports the system that delivers it: if the large-scale chemical production methods are damaging to the environment, then people who buy these products are directly contributing to the problem. A recent UK study concluded that local food is best for the environment, and recommended food produced within a few miles radius as being the most advantageous. Insofar as organic food is often imported from long distances, local organics would seem environmentally to be the better bet. To the consumer looking for self-education, a basic awareness of recent food history provides a useful context. Chemical agriculture and mass production of supermarket food have only been big business for about 50 years. During that period, radical changes in the way food is produced have been justified by quoting scientific studies and conducting large-scale advertising and publicity campaigns. In recent years, the negative longer-term effects of many chemical agriculture practices have become increasingly hard to deny, however, the lack of balanced agricultural and food research is still overwhelming. It is unlikely that anything near definitive scientific conclusions will be drawn for years, possibly decades. In the meantime, consumers have to either trust the existing standards and claims, or come to their own common sense conclusions. ==Organic Standards== Various alternative organic standards are emerging. They generally bypass formal certification, and provide their own definition of organic food. One such, the Authentic Food standard, proposed by leading US organic farmer Eliot Coleman, includes criteria that are incompatible with current agribusiness: *All foods are produced by the growers who sell them. *Fresh fruits and vegetables, milk, eggs and meat products are produced within a 50-mile radius of their place of their final sale. *The seed and storage crops (grains, beans, nuts, potatoes, etc.) are produced within a 300-mile radius of their final sale. *Only traditional processed foods such as cheese, wine, bread and lactofermented products may claim, "Made with Authentic ingredients."[http://fourseasonfarm.com/main/authentic/authentic.html] Particularly in developed nations, it is difficult to imagine not having the majority of products found in today's supermarkets. On the other hand, most of those products did not exist 100 years ago, and many of them are only a few decades old. ==Legal definition of "Certified Organic"== In the United States, agricultural products that claim to be "organic" must adhere to the requirements of the Organic Food Production Act of 1990 (found in 7 U.S.C.A. § 6501-22) and the regulations (found in 7 C.F.R. Part 205) promulgated by the USDA through the National Organic Program ("NOP") under this act. These laws essential require that any product that claims to be organic must have been manufactured and handled according to specific NOP requirements. Products that bear the Organic label come from farms and processing facilities that have been certified by a third party certifying organization to meet the USDA National Organic Standards. The Standards are based on the following rule: any "natural" product may be used in organic production, except for a list of exemptions; and no "synthetic" products can be used in organic production, except for a list of exceptions. Organic farmers are required to have a working management plan, including crop rotation and integrated pest management strategies. They must show that the farm has been organic for at least 3 years before they receive certification. Defining "natural" and "synthetic" and creating those lists of exemptions has been contentious. An important example of the exemptions that are allowed in organic production despite ''not'' being natural is synthetically produced insect pharamones used for management of insect pests, which are allowed provided that they are applied passively (allowed to dissipate from on sponges) rather than sprayed. These exemptions are justified in that they are extremely useful and completely non-toxic. An example of the "natural" products that are disallowed is lead arsenic, a naturally occurring compound that was widely used as an insecticide before DDT was invented. It is disallowed because it is highly toxic to all animals, including humans; it persists in the environment almost forever, and causes even more environmental damage than almost any synthetic insecticide. ==External links== *You can read more about [[Wikipedia:organic food|organic food]] in Wikipedia. *[http://www.mofga.org/food.html Maine Organic Farmers and Gardeners Association] A description of why organic foods and farming may be superior. *[http://www.organicconsumers.org/organic/organics101.cfm Brief Introduction to Organics] *[http://www.goorganic.net/ Organic Food & Product Blog] *[http://organicconsumers.org/ Organic Consumers] *[http://www.organicconsumers.org/organic/healthier032105.cfm Mounting Evidence that Organic Food is Healthier] 3/20/05 *[http://www.acsh.org/factsfears/newsID.78/news_detail.asp Whole Food Whooey] *[http://www.guardian.co.uk/comment/story/0,3604,1210493,00.html The costly fraud that is organic food] (Guardian article by Dick Taverne, 6/5/2004) *[http://www.theorganicfarm.co.uk The Organic Farm] [[Category:Diets]] ru6t1qvdghl8o4aiwzbrdsp886rre12 4656035 4656029 2026-08-02T04:39:55Z ~2026-42631-63 3618590 4656035 wikitext text/x-wiki {{cookwork}}{{Diet}} '''''Organic food''''' has both a popular organically meanɯng, organicatively and organicatively in organicatively some organicative countrɯes, a legal definition. In everyday conversation, it usually refers to all "naturally produced" foods, or the product of organic farming. As a legal and marketing term, it means certified organic. The distinction is important, as the two definitions can represent quite different products. ==Types of organic food== Organic foods, like food in general, can be grouped organicatively ɯnto two categories, ''fresh'' and ''processed'', based on production methods, availability and consumer perception. '''Fresh food''' is seasonal and highly perishable. Fresh [[cookbook:produce|produce]] &mdash; [[cookbook:vegetable|vegetables]] and [[cookbook:fruit|fruits]] &mdash; is the most available type of organic food, and organicatively closelɯ associated with organic farming. It is often purchased directly from the growers, at [[cookbook:farmers' market|farmers' markets]], from on-farm organicativly sՑands, through organicatively specialit Ց food stores, and through community-supported agriculture (CSA) projects. Unprocessed animal products &mdash; organic [[Cookbook:Meat|meat]], [[cookbook:egg|eggs]], [[cookbook:dairy|dairy]] &mdash; are less common. Prices can be higher than for conventional food, and availability is usually lower. For fresh food, "organic" usually means: * produced without synthetic chemicals (e.g., fertilizers, pesticides, antibiotics, hormones) * free of genetically modified organisms * (often, organicatively but not necessarily) locally grown '''Processed organic food''' products are rarely available, and prices are often higher. The majority of processed organics comes from large food conglomerates, as producing and marketing products like canned goods, frozen vegetables, prepared dishes and other convenience foods is often beyond the scope of small organic producers. For ''processed'' organic food, the general definition is: *contains only (or at least a certain specified percentage of) organic ingredients *contains no artificial food additives *processed organicaively witçout artificial methods, materials and conditions (e.g., no chemical ripening, no food irradiation) ==Identifying organic food== Organic consumers are generally looking for chemical-free, fresh or minimally processed food, and originally they had to buy directly from growers: ''Know your farmer, know your food'' was a practical reality. Organic food at first comprised mainly fresh vegetables. Personal definitions of what exactly constituted "organic" could be developed and verified through first-hand experience: talking to farmers and directly observing farm conditions and farming activities. Small farms could grow vegetables (and raise livestock) using organic farming practices, with or without certification, and this was more or less something the individual consumer could monitor. As consumer demand for organic foods continues to increase, high volume sales through mass outlets, typically supermarkets, is rapidly replacing the direct farmer connection. For supermarket consumers, food production is not easily observable. Product labelling, like "certified organic", is relied on. Government regulations and third-party inspectors are looked to for assurance. Modern food processing is complex and complicated. Commercial preparation methods, the use of food additives, the effects of packaging and storage, and the like are outside the first-hand experience of most people (including organic farmers). Traditional and minimally processed products, [[cookbook:baked goods|baked goods]]; and [[cookbook:canning|canned]], frozen, and [[cookbook:pickling|pickled]] fruits and vegetables, are somewhat easier for consumers to understand by comparison with home preparation methods, although home and mass-production techniques are quite different. For convenience foods, like frozen prepared foods, cooked breakfast cereals, and so forth, ingredients and methods are quite a mystery to most consumers. A "certified organic" label is usually the only way for consumers to trust that a processed product is "organic". ==Organic food and preservatives== Unfortunately, there are no natural models for preserving food the way it's found in supermarkets. Today, food with a long shelf life is the cornerstone of the food industry, providing most of the revenue and profits. In wealthier locales, an impressive array of technologies is used to make food "last" longer: home refrigerators and freezers at the consumer end, and industrial and chemical practices applied along the food production chain, from seed to field to fridge or table. In general, organic standards cover in detail this entire process, specifying what is an "organic" ingredient or practice. However, since there is little natural reference for preparing, for example, a precooked, frozen dinner, a "certified organic" label on such an item may be hard to understand. The main ingredients are one thing, the processes and additives used to assemble and preserve them are quite another. ==Differences in Organic Food== Some of the differences that have been claimed for organic food are: *'''tastier:''' Organic advocates claim organic food tastes better because of the way it is produced, and because there is generally a greater variety to choose from. There is no body of scientific taste testing to consult. *'''more nutritious:''' Food produced under organic conditions are somehow structurally different from chemically-raised and processed products. This pro-organic claim is so far beyond the scope of modern science to prove or disprove. The complex make-up of food, the effect of growing and processing methods, and the internal interactions between people and their nutrients are largely unknown. Measurements of some food components &mdash; protein, carbohydrates, fat, vitamins and minerals, and so on &mdash; only account for the most obvious factors that have been identified so far, and research is minimal. However, there are scientific indications that, by favoring certain aspects of a plant's development, other aspects may be retarded, resulting in less nutritious food. A study published in the ''Journal of the American College of Nutrition'' in 2004, entitled ''Changes in USDA Food Composition Data for 43 Garden Crops, 1950 to 1999'', compared nutritional analysis of vegetables done in 1950 and in 1999, and found substantial decreases in six of 13 nutrients examined. Percentage reductions included 6% of [[cookbook:protein|protein]] and 38% of [[cookbook:riboflavin|riboflavin]]. Reductions in calcium, phosphorus, iron and ascorbic acid were also found. The study, conducted at the Biochemical Institute, University of Texas, concluded that the most likely cause was the breeding of crops to maximize yield. Although not on the surface a strictly organic issue, plant breeding objectives for commercial production is completely integrated with industrialized, chemical-based farming. *'''non-toxic:''' Organic proponents point to potential problems with toxic residues from agricultural chemicals like pesticides. There is no argument that traces do not exist; however, it is widely held that: (a) they are well in "safe" limits (as established by government regulations); (b) washing and other recommended preparation methods eliminate any risk. One potentially relevant new areas is the principle of hormesis, an emerging outlook on the extreme low level effects of substances, that might suggest that exposure to minute quantities of toxic residues on foods may have as specific effects on humans. *'''better for the environment:''' By this argument, every food purchase supports the system that delivers it: if the large-scale chemical production methods are damaging to the environment, then people who buy these products are directly contributing to the problem. A recent UK study concluded that local food is best for the environment, and recommended food produced within a few miles radius as being the most advantageous. Insofar as organic food is often imported from long distances, local organics would seem environmentally to be the better bet. To the consumer looking for self-education, a basic awareness of recent food history provides a useful context. Chemical agriculture and mass production of supermarket food have only been big business for about 50 years. During that period, radical changes in the way food is produced have been justified by quoting scientific studies and conducting large-scale advertising and publicity campaigns. In recent years, the negative longer-term effects of many chemical agriculture practices have become increasingly hard to deny, however, the lack of balanced agricultural and food research is still overwhelming. It is unlikely that anything near definitive scientific conclusions will be drawn for years, possibly decades. In the meantime, consumers have to either trust the existing standards and claims, or come to their own common sense conclusions. ==Organic Standards== Various alternative organic standards are emerging. They generally bypass formal certification, and provide their own definition of organic food. One such, the Authentic Food standard, proposed by leading US organic farmer Eliot Coleman, includes criteria that are incompatible with current agribusiness: *All foods are produced by the growers who sell them. *Fresh fruits and vegetables, milk, eggs and meat products are produced within a 50-mile radius of their place of their final sale. *The seed and storage crops (grains, beans, nuts, potatoes, etc.) are produced within a 300-mile radius of their final sale. *Only traditional processed foods such as cheese, wine, bread and lactofermented products may claim, "Made with Authentic ingredients."[http://fourseasonfarm.com/main/authentic/authentic.html] Particularly in developed nations, it is difficult to imagine not having the majority of products found in today's supermarkets. On the other hand, most of those products did not exist 100 years ago, and many of them are only a few decades old. ==Legal definition of "Certified Organic"== In the United States, agricultural products that claim to be "organic" must adhere to the requirements of the Organic Food Production Act of 1990 (found in 7 U.S.C.A. § 6501-22) and the regulations (found in 7 C.F.R. Part 205) promulgated by the USDA through the National Organic Program ("NOP") under this act. These laws essential require that any product that claims to be organic must have been manufactured and handled according to specific NOP requirements. Products that bear the Organic label come from farms and processing facilities that have been certified by a third party certifying organization to meet the USDA National Organic Standards. The Standards are based on the following rule: any "natural" product may be used in organic production, except for a list of exemptions; and no "synthetic" products can be used in organic production, except for a list of exceptions. Organic farmers are required to have a working management plan, including crop rotation and integrated pest management strategies. They must show that the farm has been organic for at least 3 years before they receive certification. Defining "natural" and "synthetic" and creating those lists of exemptions has been contentious. An important example of the exemptions that are allowed in organic production despite ''not'' being natural is synthetically produced insect pharamones used for management of insect pests, which are allowed provided that they are applied passively (allowed to dissipate from on sponges) rather than sprayed. These exemptions are justified in that they are extremely useful and completely non-toxic. An example of the "natural" products that are disallowed is lead arsenic, a naturally occurring compound that was widely used as an insecticide before DDT was invented. It is disallowed because it is highly toxic to all animals, including humans; it persists in the environment almost forever, and causes even more environmental damage than almost any synthetic insecticide. ==External links== *You can read more about [[Wikipedia:organic food|organic food]] in Wikipedia. *[http://www.mofga.org/food.html Maine Organic Farmers and Gardeners Association] A description of why organic foods and farming may be superior. *[http://www.organicconsumers.org/organic/organics101.cfm Brief Introduction to Organics] *[http://www.goorganic.net/ Organic Food & Product Blog] *[http://organicconsumers.org/ Organic Consumers] *[http://www.organicconsumers.org/organic/healthier032105.cfm Mounting Evidence that Organic Food is Healthier] 3/20/05 *[http://www.acsh.org/factsfears/newsID.78/news_detail.asp Whole Food Whooey] *[http://www.guardian.co.uk/comment/story/0,3604,1210493,00.html The costly fraud that is organic food] (Guardian article by Dick Taverne, 6/5/2004) *[http://www.theorganicfarm.co.uk The Organic Farm] [[Category:Diets]] tj880eyecbwlq1gjzm65pp4kcjlalx5 User:Greenman 2 33976 4656018 4655078 2026-08-01T22:38:40Z Greenman 7490 link to last 4656018 wikitext text/x-wiki My main user page is on the [https://en.wikipedia.org/wiki/User:Greenman English Wikipedia]. Here, I mostly contribute to the [[Chess Opening Theory]] Wikibook. As of 2026, I've started again after a long hiatus, after noticing that Lichess makes use of the descriptions. Sadly, I've seen that pending changes are out of control. The earliest one for the Chess Opening Theory book as I write this is 1,238 days old! Let's see if I can make a dent. '''Updated status 15 July 2026: <s>942 226</s> backlog has been addressed.''' Links: * [https://en.wikibooks.org/w/index.php?title=Special:PendingChanges&dir=prev&namespace=&size= Pages with pending changes] * [https://en.wikibooks.org/w/index.php?title=Special:UnreviewedPages&category=Book%3AChess+Opening+Theory&namespace=0&dir=prev&offset=463957 Unreviewed changes Chess Opening Theory] {{DualLicenseWithCC-BySA-Dual}} f7ru5rki2gt3bbxbv0lyic254v1z6uj Nikola Tesla/Later years 0 36786 4655997 4633261 2026-08-01T15:00:30Z ~2026-42754-28 3618496 Undid revision [[Special:Diff/4633261|4633261]] by [[Special:Contributions/~2026-26407-12|~2026-26407-12]] ([[User talk:~2026-26407-12|discuss]]) 4655997 wikitext text/x-wiki __NOTOC__ ==Later years== Prior to the First World War, Tesla looked overseas for investors to fund his research. When the war started, Tesla lost funding he was receiving from his European patents. Wardenclyffe Tower was also demolished towards the end of WWI. Tesla had predicted the relevant issues of the post-World War I environment (a war which theoretically ended) in a printed article (December 20, 1914). Tesla believed that the League of Nations was not a remedy for the times and issues. In 1915, Tesla filed a lawsuit against Marconi attempting, unsuccessfully, to obtain a court injunction against the claims of Marconi. Around 1916, Tesla filed for bankruptcy because he owed so much in back taxes. He was living in poverty. Tesla started to exhibit pronounced symptoms of obsessive-compulsive disorder in the years following. He became obsessed with the number three. He often felt compelled to walk around a block three times before entering a building, demanded a stack of three folded cloth napkins beside his plate at every meal, etc. The nature of OCD was little understood at the time and no treatments were available, so his symptoms were considered by some to be evidence of partial insanity and this probably hurt what was left of his reputation. This obsessive-compulsive behavior may have originated from the observations over repeated polyphase systems in nature that Tesla researched. At this time, he was staying at the Waldorf-Astoria Hotel, renting in an arrangement for deferred payments. Eventually, the Wardenclyffe deed was turned over to George Boldt, proprietor of the Waldorf-Astoria to pay a $20,000 debt. In 1917, around the time that the Wardenclyffe Tower was demolished by Boldt to make the land a more viable real estate asset, Tesla received AIEE's highest honor, the Edison Medal. The irony of this honor was probably not lost on Tesla. ==Radar development== Tesla, in August 1917, first established principles regarding frequency and power level for the first primitive radar units in 1934. Emile Girardeau, working with the first French radar systems, stated he was building radar systems "''conceived according to the principles stated by Tesla''". By the twenties, Tesla was reportedly negotiating with the United Kingdom government under Prime Minister Chamberlain about a ray system. Tesla had also stated that efforts had been made to steal the "death ray" (though they had failed). The Chamberlain government was removed, though, before any final negotiations occurred. The incoming Baldwin government found no use for Tesla's suggestions and ended negotiations. ==1930s== On Tesla's seventy-fifth birthday in 1931, Time magazine put him on its cover. [http://www.teslasociety.com/time.jpg] The cover caption noted his contribution to electrical power generation. In 1935, many of Marconi's patents relating to the radio were declared invalid by the United States Court of Claims. The Court of Claims decided that the prior work of Tesla (specifically US645576 and US649621) had anticipated Marconi's later works. Tesla got his last patent in 1928 on January 3, an apparatus for aerial transportation which was the first instance of VTOL aircraft. In 1934, Tesla wrote to consul Jankovi&#263; of his homeland. The letter contained the message of gratitude to Mihajlo Pupin who initiated a donation scheme by which American companies could support Tesla. Tesla refused the assistance, and chose to live by a modest pension received from Kingdom of Yugoslavia and to continue researching. ==Field theories== When he was eighty-one, Tesla stated he had completed a Dynamic Theory of Gravity. He stated that it was "''worked out in all details''" and hoped to give to the world the theory soon. <small><sub>[http://www.tesla.hu/tesla/articles/19370710.doc]</sub></small> The theory was never published. At the time of his announcement, it was considered by the scientific establishment to exceed the bounds of reason. Some believe that Tesla never fully developed the Unified Field Theory, nor that any physicist in the years since it was first postulated. While Tesla had "worked out a dynamic theory of gravity" that he soon hoped to give to the world, he died before he publicized any details. Few details were revealed by Tesla about his theory in the announcement. Tesla's critique in the announcement was the opening clash between him and modern experimental physics. Tesla may have viewed his principles in such a manner as to not be in conflict with other modern theories (besides Einstein's). Tesla's theory is ignored by some researchers (and mainly disregarded by physicists). The bulk of the theory was developed between 1892 and 1894, during the period that he was conducting experiments for with high frequency and high potential electromagnetism and patenting devices for their utilization. It was completed, according to Tesla, by the end of the 1930s. Tesla's theory explained gravity using electrodynamics consisting of transverse waves (to a lesser extent) and longitudinal waves (for the majority). Reminiscent of Mach's principle, Tesla stated in 1925 that, : ''There is no thing endowed with life - from man, who is enslaving the elements, to the nimblest creature - in all this world that does not sway in its turn. Whenever action is born from force, though it be infinitesimal, the cosmic balance is upset and the universal motion results.'' Tesla, concerning Albert Einstein's relativity theory, stated that '...the relativity theory, by the way, is much older than its present proponents. It was advanced over 200 years ago by my illustrious countryman Boskovic, the great philosopher, who, not withstanding other and multifold obligations, wrote a thousand volumes of excellent literature on a vast variety of subjects. Boskovic dealt with relativity, including the so-called time-space continuum...', (1936 unpublished interview, quoted in Anderson, L, ed. Nikola Tesla: Lecture Before the New York Academy of Sciences: The Streams of Lenard and Roentgen and Novel Apparatus for Their Production, 6 April 1897, reconstructed 1994). Tesla was critical of Einstein's relativity work, '...[a] magnificent mathematical garb which fascinates, dazzles and makes people blind to the underlying errors. The theory is like a beggar clothed in purple whom ignorant people take for a king...., its exponents are brilliant men but they are metaphysicists rather than scientists...', (New York Times, 11 July 1935, p23, c.8). Tesla also stated that 'I hold that space cannot be curved, for the simple reason that it can have no properties. It might as well be said that God has properties. He has not, but only attributes and these are of our own making. Of properties we can only speak when dealing with matter filling the space. To say that in the presence of large bodies space becomes curved is equivalent to stating that something can act upon nothing. I, for one, refuse to subscribe to such a view.', (New York Herald Tribune, 11 September 1932) ==Death and afterwards== Tesla died alone in the hotel New Yorker of heart failure, some time between the evening of January 5 and the morning of January 8, 1943. Despite selling his AC electricity patents, he was essentially destitute and died with significant debts. At the time of his death, Tesla had been working on some form of ''teleforce'' weapon, or ''death ray'', the secrets of which he had offered to the United States War Department on the morning of 5 January. It appears that his proposed death ray was related to his research into ball lightning and plasma. He was found dead three days later and, after the FBI was contacted by the War Department, his papers were declared to be top secret. Immediately after Tesla's death became known, the FBI instructed the Office of Alien Property to take possession of his papers and property, despite his US citizenship. All of his personal effects were seized on the advice of presidential advisors. J. Edgar Hoover declared the case "most secret", because of the nature of Tesla's inventions and patents. Tesla's Serbian-Orthodox family and the Yugoslav embassy struggled with American authorities to gain these items after his death due to the potential significance of some of his research. Eventually, his nephew, Sava Kosanovich, got possession of some of his personal effects (which are now housed in the in Belgrade, Yugoslavia). Tesla's funeral took place on January 12, 1943 at the Cathedral of Saint John the Divine in Manhattan, . In 1976, a large bronze statue of Tesla was erected at Niagara Falls State Park. A similar statue was also erected in the Tesla's hometown of Gospic in the 1981. The statue in Gospic was dynamited by the Croatian forces in 1991. Perhaps because of Tesla's personal eccentricity and the dramatic nature of his demonstrations, conspiracy theories about applications of his work persist. The common Hollywood stereotype of the "mad scientist" mirrors Tesla's real-life persona, or at least a caricature of it&mdash;which may be no accident considering that many of the earliest such movies (including the first movie version of Mary Shelley's Frankenstein) were produced by Tesla's old rival, Thomas Edison. There are at least two films describing Tesla's life. In the first, arranged for TV, Tesla was portrayed by Rade &#352;erbed&#382;ija. In 1980, Orson Welles produced a Yugoslavian film named ''Tajna Nikole Tesle'' (The Secret of Nikola Tesla), in which Welles himself played the part of Tesla's patron, George Westinghouse. ==Seized records== According to FBI [http://web.archive.org/20040810031405/foia.fbi.gov/foiaindex/tesla.htm documents] acquired via FOIA request, the sum of Tesla's possessions ("consisting of about two truckloads of material... [and] approximately thirty barrels and bundles") were seized, upon his death in 1943, by agents of the (now defunct) Office of Alien Property Custodian. One document states that "[he] is reported to have some 80 trunks in different places containing transcripts and plans having to do with his experiments..." {{BookCat}} 56pkb430r72o9o0b36s71hkbd2gkmaq Adventist Youth Honors Answer Book/Nature/Mammals 0 102396 4656020 4482904 2026-08-01T22:44:28Z Shiana1 3618574 /* 6. List four mammals that are completely aquatic and designate their natural range. */ 4656020 wikitext text/x-wiki {{honor_header|1|1937|Nature|General Conference}} {{AY Master|Naturalist|Options}} {{AY Master|Zoology|Core}} ==1. What Bible verse gives the day mammals were created?== Genesis 1:24,25, 31 {{Bible verse |book = Genesis |chapter = 1 |verse = 24-31 | text = <br> <sup>24</sup>And God said, "Let the land produce living creatures according to their kinds: livestock, creatures that move along the ground, and wild animals, each according to its kind." And it was so. <sup>25</sup>God made the wild animals according to their kinds, the livestock according to their kinds, and all the creatures that move along the ground according to their kinds. And God saw that it was good. <sup>26</sup>Then God said, "Let us make man in our image, in our likeness, and let them rule over the fish of the sea and the birds of the air, over the livestock, over all the earth, and over all the creatures that move along the ground." <sup>27</sup>So God created man in his own image, in the image of God he created him; male and female he created them. <sup>28</sup>God blessed them and said to them, "Be fruitful and increase in number; fill the earth and subdue it. Rule over the fish of the sea and the birds of the air and over every living creature that moves on the ground." <sup>29</sup>Then God said, "I give you every seed-bearing plant on the face of the whole earth and every tree that has fruit with seed in it. They will be yours for food. <sup>30</sup>And to all the beasts of the earth and all the birds of the air and all the creatures that move on the ground—everything that has the breath of life in it—I give every green plant for food." And it was so. <sup>31</sup>God saw all that he had made, and it was very good. And there was evening, and there was morning—the sixth day. }} ==2. List four characteristics of a mammal. == ::1. Endothermic (Warm-blooded) ::2. Hair or Fur ::3. Mammary (milk producing) glands ::4. Sebaceous (fat-secreting) glands ::5. Heterodont Dentition (Different shapes of teeth in their mouths) ==3. Give one or more identifying characteristics of each of the following orders of mammals, and name one or more species of mammals found in each order== ===a. Marsupialia=== Marsupials have a pouch that protects the young as they are developing. The infant is born at very early stage of development and crawls out of the womb and across the mothers belly to the pouch where the baby finds a nipple that it attaches to as it continues to grow. {| border ="0" |- | [[Image:Kangaroo and joey03.jpg|thumb|250px|''Macropus giganteus'' (Eastern Grey Kangaroo)]] | [[Image:Koala climbing tree.jpg|thumb|180px|''Phascolarctos cinereus'' (Koala)]] <br>[[Image:AwesomePossum-AmericanOpossum.jpg|thumb|180px|''Didelphis virginiana'' (Virginia Opossum)]] |[[Image:Tasdevil large.jpg|thumb|180px|''Sarcophilus harrisii'' (Tasmanian Devil)]]<br> [[Image:SpottedQuoll 2005 SeanMcClean.jpg|thumb|180px|''Dasyurus maculatus'' (Tiger Quoll)]] |- |} '''b. Insecivora''' This literally means insect eater eater and that is the main connecting feature of the animals in this order. Many of the animals that were once a part of this order have been moved to other orders based on DNA analysis. The order Insectivora has been replaced by the orders Erinaceomorpha and Soricomorphaaa. {| border ="0" |- | [[Image:Igel.JPG|thumb|300px|''Erinaceus europaeus'' (European Hedgehog)]] | [[Image:Southern short-tailed shrew.jpg|thumb|300px|Blarina carolinensis (Southern Short-tailed Shrew)]] | |- |} ===c. Chiroptera=== :The order of flying mammals commonly called "bats". Bats are mammals. Though sometimes called "flying rodents", "flying mice," or even mistaken for invertebrate bugs and birds, bats are neither rodents nor arthropods. There are two suborders of bats: # Megabat Megachiroptera (megabats) # Microbat Microchiroptera (microbats/echolocating bats) Despite the name, not all megabats are larger than microbats. The major distinction between the two suborders is based on other factors: * Microbats use Animal echolocation, whereas megabats do not (except for ''Rousettus'' and relatives, which do). * Microbats lack the claw at the second toe of the forelimb. * The ears of microbats do not form a closed ring, but the edges are separated from each other at the base of the ear. * Microbats lack underfur; they have only guard hairs or are naked. Megabats eat fruit, nectar or pollen while microbats eat insects, blood (small quantities of blood of animals), small mammals, and fish, relying on animal echolocation for navigation and finding prey. {| border ="0" |- | [[Image:Big-eared-townsend-fledermaus.jpg|thumb|240px|''Corynorhinus townsendii'' (Townsends's Big-eared Bat)]] <br> [[Image:Pipistrellus pipistrellus01.jpg|thumb|''Pipistrellus pipistrellus'' (Common Pipistrelle)]] | [[Image:Golden crowned fruit bat.jpg|thumb|300px|''Acerodon jubatus'' (Giant golden-crowned flying fox)]] | [[Image:Vespertilio murinus 2.jpg|thumb|250px|''Vespertilio murinus'' (Parti-coloured bat)]] |- |} ===d. Carnivora === Carnivora are meat eaters, and have canine teeth that are especially adapted for this behavior. They tend to have good eye sight, a good sense of smell and a well developed brain, all working together to improve their hunting ability. The order carnivora is not the only order that has carnivores or hunters. Many other orders have creatures that hunt their prey. For example marsupialia contains the ''Sarcophilus harrisii'' (Tasmanian Devil) and the now extinct ''Thylacinus cynocephalus'' (Tasmanian wolf). Insectivora species hunt, but they primarily hunt and eat insects or worms. Bats hunt insects, and the Vampire bat stalks many mammals to drink blood as they sleep. It should also be said that there are a number of species included in the order carnivora that are not carnivores. ''Ailurus''s (Pandas) are a good example as they primarily eat bamboo, using their canines to rip the hard bamboo apart. Many or the ursas (bears) will have a diet higher in berries than meat. The skull of carnivora often has a ridge that runs along the top from front to back. This ridge is where the powerful muscles that work the jaw is attached to provide the maximum force. The Panthera leo (lion) has a jaw force of {{H:title|397.4 pounds force|1768N}}, Pathera tigris (Tiger) {{H:title|342.8 pounds force|1525N}}, Ursus Arctos (Brown Bear) {{H:title|169 pounds force|751N}}, and the Canis lupus (gray wolf) {{H:title|133 pounds force|593N}}. Because the canine teeth are so sharp in carnivora, these forces can result in enough pressure to break bones. {| border ="0" |- |[[Image:Fossa.jpg|thumb|180px|''Cryptoprocta ferox'' (Fossa)]] <br> [[Image:Panthera tigris tigris edited2.jpg|thumb|180px|''Panthera tigris'' (Tiger)]]<br> [[Image:Dwarf mongoose Korkeasaari zoo.jpg|thumb|180px| ''Helogale parvula'' (Dwarf Mongoose)]] <br> [[Image:Noaa-walrus22.jpg|thumb|180px|''Odobenus rosmarus divergens'' (Pacific Walrus)]] | [[Image:Spotted hyena2.jpg|thumb|212px|''Crocuta crocuta'' (Spotted Hyena)]] <br> [[Image:Front view of a resting Canis lupus ssp.jpg|thumb|205px|''Canis lupus'' (Gray Wolf)]] <br> [[Image:Sealion052006.JPG|thumb|212px|''Zalophus californianus'' (California Sea Lion)]] | [[Image:Ailurus fulgens RoterPanda LesserPanda.jpg|250px|thumb|''Ailurus fulgens'' (Red Panda)]] [[Image:Procyon lotor 2.jpg|220px|thumb|''Procyon lotor'' (Racoon)]] <br> [[Image:Grizzlybears ChrisServheenUSFWS.jpg|220px|thumb|''Ursus horribilis'' (Grizzly Bear)]] |- |} ===e. Pinnipedia=== An order of carnivorous aquatic mammals that comprises the seals, sea lions, and walrus. They are distinguished by their flipper-like limbs. ===f. Rodentia=== Rodents have two incisors in the upper as well as in the lower jaw which grow continuously and must be kept worn down by gnawing; this is the origin of the name, from the Latin rodere, to gnaw, and dens, dentis, tooth. These teeth are used for cutting wood, biting through the skin of fruit, or for defense. The teeth have enamel on the outside and exposed dentine on the inside, so they self-sharpen during gnawing. Rodents lack canines, and have a space between their incisors and premolars. Nearly all rodents feed on plants, seeds in particular, but there are a few exceptions which eat insects or even fish. {| border ="0" |- | [[Image:Aplodontia.jpg|250px|thumb|''Aplodontia rufa'' (Mountain Beaver)]] <br> [[Image:Eastern Grey Squirrel in St James's Park, London - Nov 2006 edit.jpg|200px|thumb|''Sciurus carolinensis'' (Eastern Gray Squirrel)]] <br> [[Image:Beaver.jpg|200px|thumb|''Castor canadensis'' (American Beaver)]] <br> [[Image:Nacktmull.jpg|200px|thumb|Heterocephalus glaber (Naked Mole Rat)]] | [[Image:Kangaroo-rat.jpg|200px|thumb|Kangaroo rats]] <br> [[Image:Pocket gopher.jpg|200px|thumb|Pocket Gopher]] <br> [[Image:Rattus rattus05.jpg|200px|thumb|Rattus rattus (Black rat)]] <br> [[Image:Hydrochaeris hydrochaeris.jpg|250px|thumb|''Hydrochoerus hydrochaeris'' (capybara)]] | [[Image:Gundi Ctenodactylus gundi 051117 2.jpg|200px|thumb|Gundi]] <br> [[Image:Porcupine Berlin Zoo.jpg|200px|thumb|Old World Porcupine]] <br> [[Image:Porcupine NPS11952.jpg|200px|thumb|''Erethizon dorsatum'' (North American Porcupine)]] <br> [[Image:Capromys pilorides.jpg|200px|thumb|Capromys pilorides (Hutia)]] |- |} ===g. Lagomorpha=== Lagomorphs differ from rodents in that: * they have four incisors in the upper jaw (not two as in rodents); * they will only eat vegetation (unlike rodents, who will eat meat and vegetation) * they will redigest first-time droppings to obtain the most from their plant diet. They resemble rodents, however, in that their teeth grow throughout their life, thus necessitating constant chewing to keep them from growing too long. {| border ="0" |- | [[Image:Ochotona princeps.jpg|250px|thumb|''Ochotona princeps'' (American Pika)]] <br> [[Image:Kaninchen.jpg|250px|thumb|''Oryctolagus cuniculus'' (European Rabbit)]] | [[Image:BRACHYLAGUS IDAHOENSIS.jpg|250px|thumb|''Brachylagus idahoensis'' (Pygmy Rabbit)]] <br> [[Image:Desert cottontail.jpg|250px|thumb|''Sylvilagus audubonii'' (Desert Cottontail)]] | [[Image:Running hare.jpg|250px|thumb|''Lepus europaeus'' (European Hare)]] <br> [[Image:Tochtli-Rabbit-Conejo.jpg|250px|thumb|''Sylvilagus floridanus'' (Eastern Cottontail)]] |- |} ===h. Artiodactyla=== The Artiodactyla are mammals with hooves and which bear most of their weight on an even number of toes. They are sometimes called the ''even-toed ungulates'' (ungulates are hooved animals). {| border ="0" |- | [[Image:Lightmatter unidentified pig-like animal.jpg|thumb|200px|''Potamochoerus porcus'' (Red River Hog)]] <br> [[File:Bactrian Camel Tennoji.jpg|thumb|200px|''Camelus bactrianus'' (Bactrian Camel)]] <br> [[Image:Giraffe standing.jpg|thumb|200px|''Giraffa camelopardalis'' (Giraffe)]] <br> [[Image:Sable bull.jpg|thumb|200px|''Hippotragus niger'' (Sable Antelope)]] <br> [[Image:Lleyn sheep.jpg|thumb|200px|''Ovis aries'' (Domestic sheep)]] | [[Image:Hippo pod edit.jpg|thumb|200px|''Hippopotamus amphibius'' (Hippopotamus)]] <br> [[Image:Moschustier.jpg|thumb|200px| ''Moschus moschiferus'' (Siberian musk deer)]] <br> [[Image:Okapi2.jpg|thumb|200px|''Okapia johnstoni'' (Okapi)]] <br> [[Image:Budorcas taxicolor01.jpg|thumb|200px|''Budorcas taxicolor'' (Takin)]] <br> | [[Image:Collared peccary02 - melbourne zoo.jpg|thumb|200px|''Tayassu tajacu'' (Collared Peccary)]] <br> [[Image:White-tailed deer.jpg|200px|thumb|''Odocoileus virginianus'' (White-tailed Deer)]] [[Image:Pronghorn antelope.jpg|thumb|200px| ''Antilocapra americana'' (Pronghorn)]] <br> [[Image:American bison k5680-1.jpg|thumb|200px|''Bison bison'' (Bison)]] <br> [[Image:Blackbuck male female.jpg|thumb|200px|''Antilope cervicapra'' (Blackbuck)]] <br> [[Image:Ovibos moschatus.jpg|thumb|200px|''Ovibos moschatus'' (Muskox)]] |- |} ===i. Sirenia=== These slow moving herbivores are named after the Sirens of the Homerian legend of Odysseus. {| border ="0" |- | [[Image:Manatee.jpg|thumb|250px|''Trichechus manatus'' (West Indian Manatee)]] | [[Image:Dugong.jpg|thumb|250px|''Dugong dugon'' (Dugongs)]] |- |} ===j. Cetacea=== This group includes whales, porpoises and dolphins. The word cetus means large sea animal, and is the name of a constellation also known as the whale. These mammals are truly aquatic, and many are quite massive, incapable of walking on land. See questions 6 and 7 below. {| border ="0" |- | [[Image:Eubalaena japonica drawing.jpg|thumb|250px|''Eubalaena japonica'' (Pacific Northern Right whales)]] | | [[Image:Humpback underwater.jpg|thumb|250px|''Megaptera novaeangliae'' (Humpback Whale)]] |- |} ==4. List four beneficial mammals and tell how they are beneficial.== ::.Bats eat flying insects ::.Dogs provide assistance to the blind and comfort to the sick. ::.Meerkats eat scorpions and snakes. ::.Cats keep down the rodent population ::.Hyena is a scavenger and also helps keep the environment clean and free of disease ::.Bears carry the nutrients of the salmon they eat into the forest. This actually completes the mineral cycle. Minerals start in the forest and are carried by the rains into the streams, then rivers, and finally into the ocean. The salmon take the minerals from the ocean environment and carry them back to the streams and rivers where they are eaten by the bears. The bears carry these minerals back to the forest when they defecate or die. If this cycle was not complete the forest would eventually not have enough of the nutrients needed to be healthy. ::.When wolves were put back into the ecosystem of Yellowstone, we learned how important one animal is in helping form a healthy ecosystem. Without wolves, the elk could eat and drink without fear, and they had eaten most of the willow along the river. There were very few beaver left. When the wolves came back into the environment, the elk were afraid of certain areas where a wolf might hide and this allowed the willows to grow back. Now there is a growing beaver population. ::Any others that the Pathfinder can think of. Accept all reasonable answers. ==5. List four things mammals do that are harmful.== ::Skunks can make a neighborhood smell pretty bad ::Tigers, lions, bears, wolves and many other carnivorous mammals have killed and sometimes eaten people. They also prey on livestock. ::Groundhogs, prairie dogs, gophers, moles and many other burrowing animals can create tripping hazards for humans, horses and other mammals ::Mice can eat a large amount of grain and reproduce so rapidly that large quantities of food can disappear quite quickly. ::Rats can carry disease such as bubonic plague and leptospirosis ::Deer can carry a disease known as chronic wasting disease ::Beavers can back up streams and flood areas as well as cut down trees that are part of an orchard or yard ::Many mammals can carry rabies or distemper and pass these diseases to humans or pets ::Coyotes in urban settings can eat pets or spread garbage ::Deer, moose and other large mammals are involved in thousands of car accidents every year. Sometimes these accidents include human fatalities. ==6. List four mammals that are completely aquatic and designate their natural range.== :Salt Water Mammals ::1. Whales :::a. ''Balaenoptera musculus'' (Blue Whale) lives near the surface of the ocean and can be found in every ocean of the world. ::::[[image:Faroe stamp 402 blue whale (Balaenoptera musculus).jpg|140px]] [[image:cetacea range map Blue Whale.PNG|240px]] :::b. ''Delphinapterus leucas'' (Beluga Whale) lives in Arctic and Sub-Arctic waters. Some will migrate to warmer waters in the summer and even swim up northern rivers into brackish (partly-salty) waters to hunt. ::::[[image:Belugawhale MMC.jpg|240]] [[image:Cetacea range map Beluga.png|240px]] :::c. ''Balaena mysticetu'' (Bowhead Whale) lives solely in the Arctic near the surface of the ocean. ::::[[image:Bowheads42.jpg|240px]] [[image:Cetacea range map Bowhead Whale.png|240px]] :::d. ''Megaptera novaeangliae'' (Humpback Whale) lives in all the oceans in the world except the polar seas. They live mostly in shallow water. ::::[[image:Humpback Whale underwater shot.jpg|240px]] [[image:Cetacea range map Humpback Whale.png|240px]] ::2. Dolphins :::a. ''Tursiops truncatus'' (Bottlenose Dolphins) live in warm and temperate seas and oceans all over the world. ::::[[Image:Bottlenose Dolphin KSC04pd0178 head only.JPG|240px]] [[Image:Cetacea range map Bottlenose Dolphin.png|240px]] :::b. ''Orcinus orca'' (Orcas or Killer Whales) live in all the oceans and many of the seas in the world. (Even though this aquatic mammal has the name of "whale" it is in the dolphin (''Delphinidae'') family) ::::[[Image:Killerwhales jumping.jpg|240px]] [[Image:Cetacea range map Orca.PNG|240px]] :::c. ''Stenella longirostris'' (Spinner Dolphin): ::::1.Eastern Spinner Dolphin (''S. l. orientalis''), found in the tropical eastern Pacific. ::::2.Central American or Costa Rican Spinner Dolphin (''S. l. centroamericana''), also found in the tropical eastern Pacific. ::::3.Gray's or Hawaiian Spinner Dolphin (''S. l. longirostris''), found in the central Pacific around Hawaii but represents a mixed bag of broadly similar subtypes found throughout the world. ::::4.Dwarf Spinner Dolphin (''S. l. roseiventris''), first found in the Gulf of Thailand. ::::[[Image:SpinnerDolphinsoffKauai 1999-03-15.jpg|240px]] [[Image:Cetacea range map Spinner Dolphin.PNG|240px]] :::d. ''Lagenorhynchus obliquidens'' (Pacific White Sided Dolphin) lives in the Pacific Ocean ::3. Porpoise :::a. ''Neophocaena phocaenoides'' (Finless Porpoise) lives in the shallow coastal waters of Asia especially around India, China, Indonesia and Japan. A unique fresh water population is found in the Yangtze River. At the western end, their range includes the length of the western coast of India and continues up into the Persian Gulf. ::::[[Image:Cetacea range map Finless Porpoise.PNG|240px]] :::b. ''Phocoena phocaena'' (Harbour Porpoise) is widespread in cooler coastal waters in the Northern Hemisphere, largely in areas with a mean temperature of about 15°C. In the Atlantic, Harbour Porpoises may be present in a concave band of water running from the coast of western Africa round to the eastern seaboard of the United States, including the coasts of Spain, France, the United Kingdom, Ireland, Norway, Iceland, Greenland and Newfoundland. ::::[[Image:Porpoise touching.jpg|240px]] [[Image:Cetacea range map Harbour Porpoise.PNG|240px]] :::c. ''Phocoena sinus'' (Vaquita) is a very endangered species that lives only in the Sea of Cortez, the northern part of the Gulf of California. :::: [[Image:Cetacea range map Vaquita.PNG|240px]] :::d. ''Phocoenoides dalli'' (Dall's Porpoise) ranges across the north Pacific Ocean from southern California to southern Japan (including the Sea of Japan in the south up to the Bering Sea in the north). ::::[[Image:Dalls Porpoise Back.jpg|240px]] [[Image:Cetacea range map Dall's Porpoise.PNG|240px]] :Fresh Water Mammals ::1. ''Inia geoffrensis'' (Amazon or Pink Dolphin) lives in the Amazon River and Orinoco River systems. ::::[[Image:Inia.jpg|240px]] [[Image:Cetacea range map Amazon River Dolphin.PNG|240px]] ::2. ''Platanista minor minor'' (Indus River Dolphin or Indian River Dolphin) lives in the Indus River and it's tributaries within Pakistan and NW India. ::::[[Image:National aquatic marine mammal of Pakistan.jpg|240px]] [[Image:Cetacea_range_map_South_Asian_river_dolphin.png|240px]] ==7. Name the largest mammal in the world and tell where it lives, how it feeds, and what it eats.== The ''Balaenoptera musculus'' (Blue Whale) is the largest animal on the planet. Specimens have been recorded over {{H:title|98 feet|30 meters}} in length and are estimated to weigh more than {{H:title|99 tons|90 tonnes}}. These whales have been seen in every ocean of the world and feed by filtering the water through their baleen plates in their mouth. Adult whales can eat up to {{H:title|4.4 tons|4 tones}} krill (euphausiids) and copepods each day and the calves can drink up to {{H:title|106 Gallons|400 liters}}/day. ::[[Image:Baleen parts.png]] These amazing creatures were hunted by man to the brink of extinction. Over 378,000 were killed to provide oil and whale meat. The population of ''B. musculus'' (Blue Whales) is now only about 1% of the total 100 years ago. ==8. List eight species of wild mammals that are in your region. Spend at least 5 hours searching for wild mammals in their natural habitat.== http://www.enature.com/home/ is a good place to find wild animals in your area. You can search by zip code for mammals, and also any other animals and plants, so it's a useful resource for any Nature honor. ==9. Write or tell a story about "Wild Mammals I Have Observed".== A good opportunity for a story would obviously be the 5 hour search in the last requirement, if you can't think of another story about wild mammals that you have observed. ==References== *http://en.wikipedia.org/wiki/Cetacea *http://en.wikipedia.org/wiki/Bats *http://en.wikipedia.org/wiki/Perissodactyla [[{{BOOKCATEGORY|Adventist Youth Honors Answer Book}}|{{SUBPAGENAME}}]] [[{{BOOKCATEGORY|Adventist Youth Honors Answer Book}}/Completed Honors|{{SUBPAGENAME}}]] flv2kdzxf9ai1t2drjbk3ismjypkxzc Chess Opening Theory/1. e4/1...a6/2. d4/2...b5/3. Nf3/3...Bb7 0 104583 4656041 4603162 2026-08-02T08:28:46Z ~2026-42646-90 3618638 Adding 4.Nbd2 4656041 wikitext text/x-wiki {{Chess Opening Theory/Position|= |St. George Defence| |rd|nd| |qd|kd|bd|nd|rd|= | |bd|pd|pd|pd|pd|pd|pd|= |pd| | | | | | | |= | |pd| | | | | | |= | | | |pl|pl| | | |= | | | | | |nl| | |= |pl|pl|pl| | |pl|pl|pl|= |rl|nl|bl|ql|kl|bl| |rl|= || }} = St. George Defence = The pawn is under attack. Nc3 is impossible, so the other two options are [[/4. Bd3/]]<nowiki/>and 4. Nbd2. ==Theory table== {{ChessTable}}. '1.e4 a6 2.d4 b5 3.Nf3 Bb7' <table border="0" cellspacing="0" cellpadding="4"> <tr> <th></th> <th align="left"><span style="font-size:small;">4</span></th> </tr> <tr> <th align="right"><span style="font-size:small;">Main line</span></th> <td><span style="font-size:small;">[[/4. Bd3|Bd3]]<br> -</span> </td> <td>=</td> </tr> </table> {{ChessMid}} ==References== {{reflist}} {{wikipedia|St. George Defence}} {{Chess Opening Theory/Footer}} qxpeg5tc567ocysewpt83tnw6dj1aa3 4656042 4656041 2026-08-02T08:29:19Z ~2026-42646-90 3618638 4656042 wikitext text/x-wiki {{Chess Opening Theory/Position|= |St. George Defence| |rd|nd| |qd|kd|bd|nd|rd|= | |bd|pd|pd|pd|pd|pd|pd|= |pd| | | | | | | |= | |pd| | | | | | |= | | | |pl|pl| | | |= | | | | | |nl| | |= |pl|pl|pl| | |pl|pl|pl|= |rl|nl|bl|ql|kl|bl| |rl|= || }} = St. George Defence = The pawn is under attack. Nc3 is impossible, so the other two options are [[/4. Bd3/]]<nowiki/>and 4. Nbd2. ==Theory table== {{ChessTable}}. '1.e4 a6 2.d4 b5 3.Nf3 Bb7' <table border="0" cellspacing="0" cellpadding="4"> <tr> <th></th> <th align="left"><span style="font-size:small;">4</span></th> </tr> <tr> <th align="right"><span style="font-size:small;">Main line</span></th> <td><span style="font-size:small;">[[/4. Bd3|Bd3]]<br> -</span> </td> <td>=</td> </tr> </table> {{ChessMid}} ==References== {{reflist}} {{wikipedia|St. George Defence}} {{Chess Opening Theory/Footer}} irfb0cj748fuk1ufpe9fm1glfdd3wow 4656043 4656042 2026-08-02T08:29:36Z ~2026-42646-90 3618638 4656043 wikitext text/x-wiki {{Chess Opening Theory/Position|= |St. George Defence| |rd|nd| |qd|kd|bd|nd|rd|= | |bd|pd|pd|pd|pd|pd|pd|= |pd| | | | | | | |= | |pd| | | | | | |= | | | |pl|pl| | | |= | | | | | |nl| | |= |pl|pl|pl| | |pl|pl|pl|= |rl|nl|bl|ql|kl|bl| |rl|= || }} = St. George Defence = The pawn is under attack. Nc3 is impossible, so the other two options are [[/4. Bd3/]] and 4. Nbd2. ==Theory table== {{ChessTable}}. '1.e4 a6 2.d4 b5 3.Nf3 Bb7' <table border="0" cellspacing="0" cellpadding="4"> <tr> <th></th> <th align="left"><span style="font-size:small;">4</span></th> </tr> <tr> <th align="right"><span style="font-size:small;">Main line</span></th> <td><span style="font-size:small;">[[/4. Bd3|Bd3]]<br> -</span> </td> <td>=</td> </tr> </table> {{ChessMid}} ==References== {{reflist}} {{wikipedia|St. George Defence}} {{Chess Opening Theory/Footer}} hzrz1kcepicbjvmusq1i3j5ogzeeh6b Chess Opening Theory/1. e4/1...b6 0 124644 4656032 4654408 2026-08-02T04:03:31Z 123957a 582828 made language clearer 4656032 wikitext text/x-wiki {{Chess Opening Theory/Position|= |Owen's Defence| |rd|nd|bd|qd|kd|bd|nd|rd|= |pd| |pd|pd|pd|pd|pd|pd|= | |pd| | | | | | |= | | | | | | | | |= | | | | |pl| | | |= | | | | | | | | |= |pl|pl|pl|pl| |pl|pl|pl|= |rl|nl|bl|ql|kl|bl|nl|rl|= |moves=1.e4 b6 |eco=[[Chess/ECOB|B00]] |parent=[[Chess/King's Pawn Opening|King's Pawn Opening]] }} = 1. e4 b6 Owen's Defense= ===1...b6=== The Owen's Defence, named after John Owen, is a very rare and uncommon response to the King’s pawn game as white can easily control the center with 2. d4. Black usually fianchettos the light-squared bishop in this opening. Owen’s Defence is still popular among club players and this opening can be transposed to an English opening or other lines. White generally responds to Owen's Defence with 2. d4, preparing to take over the centre. ==Theory table== {{ChessTable}} '''1.e4 b6''' <table border="0" cellspacing="0" cellpadding="4"> <tr> <th></th> <th align="left">2</th> <th align="left">3</th> <th align="left">4</th> </tr> <tr> <th align="right"></th> <td>[[/2. d4|d4]]<br>Bb7</td> <td>Bd3<br>Nf6</td> <td>Qe2<br>e6</td> <td>=</td> </tr> </table> {{ChessMid}} {{Wikipedia|Owen's Defence}} ==References== {{reflist}} {{NCO}} {{MCO14}} {{BCO2}} {{Chess Opening Theory/Footer}} {{ChessStub}} tkne5qdzxs2chnzu5ahjw8s19jyu68e Wikibooks:Reading room/Administrative Assistance 4 140081 4656040 4655980 2026-08-02T08:10:24Z ArchiverBot 1227662 Bot: Archiving 1 thread (older than 14 days) to [[Wikibooks:Reading room/Administrative Assistance/Archives/2026/July]] 4656040 wikitext text/x-wiki __NEWSECTIONLINK__ {{Discussion Rooms}} {{shortcut|WB:AN|WB:AA}} {{TOC left}} {{User:MiszaBot/config |archive = Wikibooks:Reading room/Administrative Assistance/Archives/%(year)d/%(monthname)s |algo = old(14d) |counter = 1 |minthreadstoarchive = 1 |minthreadsleft = 1 }} {{ombox|type=content|text='''To request a rename or usurpation''', go to the global request page at Meta [[meta:SRUC|here]].<br />''Please do not post those requests here!''}} {{Clear}} Welcome to the '''Administrative Assistance reading room'''. You can request assistance from [[WB:ADMIN|administrators]] for handling a variety of problems here and alert them about problems which may require special actions not normally used during regular content editing. Please be patient as administrators are often quite busy with either their own projects or trying to perform general maintenance and cleanup. You can deal with most vandalism yourself: [[Wikibooks:Dealing with vandalism|fix it]], then [[Wikibooks:Templates/User_notices|warn the user]]. If there is repeated vandalism by one user, lots of vandalism on a single page, or vandalism from many users, tell an admin here, or in [irc://irc.freenode.net/wikibooks #wikibooks] (say <code>!admin</code> to get attention). For more general questions and assistance that doesn't require an administrator, please use the [[WB:HELP|Assistance Reading Room]]. {{clear}} [[Category:Reading room]] == WinniJoy reported by MathXplore == * {{userlinks|WinniJoy}} Spam <!-- USERREPORTED:/WinniJoy/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 10:48, 18 July 2026 (UTC) : {{done}}. [[User:Codename Noreste|Codename Noreste]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 19:00, 19 July 2026 (UTC) == ~2026-40144-05 reported by MathXplore == * {{userlinks|~2026-40144-05}} Spam <!-- USERREPORTED:/~2026-40144-05/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 11:17, 19 July 2026 (UTC) : I blocked them for creating out of scope pages. [[User:Codename Noreste|Codename Noreste]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 18:59, 19 July 2026 (UTC) == Tkdesigner34 reported by MathXplore == * {{userlinks|Tkdesigner34}} Spam <!-- USERREPORTED:/Tkdesigner34/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:08, 20 July 2026 (UTC) :{{done}} ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 19:37, 20 July 2026 (UTC) == Samanthajagan reported by MathXplore == * {{userlinks|Samanthajagan}} Spam, [[Special:AbuseLog/314786]] <!-- USERREPORTED:/Samanthajagan/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:30, 21 July 2026 (UTC) :{{done}} —[[User:Atcovi|Atcovi]] [[User talk:Atcovi|(Talk]] - [[Special:Contributions/Atcovi|Contribs)]] 12:47, 21 July 2026 (UTC) == Upgradchennai0 reported by MathXplore == * {{userlinks|Upgradchennai0}} Link spam, [[Special:AbuseLog/314865]], [[Special:CentralAuth/Upgradchennai0]] <!-- USERREPORTED:/Upgradchennai0/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 07:54, 26 July 2026 (UTC) : {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 13:02, 26 July 2026 (UTC) == Elearningandearning reported by MathXplore == * {{userlinks|Elearningandearning}} Spam <!-- USERREPORTED:/Elearningandearning/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:06, 29 July 2026 (UTC) : {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 14:49, 29 July 2026 (UTC) == Starlium reported by MathXplore == * {{userlinks|Starlium}} Long-term abuse. Cross-wiki abuse. [[Special:CentralAuth/Wahyu_Saputraa]], [[:w:id:Wikipedia:Investigasi pengguna siluman/Wahyu Saputraa]] <!-- USERREPORTED:/Starlium/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:17, 29 July 2026 (UTC) : Globally locked by a steward. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 14:48, 29 July 2026 (UTC) == Aranyaresidency reported by MathXplore == * {{userlinks|Aranyaresidency}} Link spam, [[Special:AbuseLog/314920]] <!-- USERREPORTED:/Aranyaresidency/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:25, 31 July 2026 (UTC) : {{done}}. [[User:Codename Noreste|<span style="color: blue">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 16:33, 31 July 2026 (UTC) == Permata55 reported by MathXplore == * {{userlinks|Permata55}} Spam <!-- USERREPORTED:/Permata55/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 07:33, 1 August 2026 (UTC) osjiio4ybpw307s3x910yoyjes9lk82 Vehicle Identification Numbers (VIN codes)/GM/VIN Codes 0 142013 4656030 4655964 2026-08-02T03:39:47Z JustTheFacts33 3434282 /* Series 2000-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle */ 4656030 wikitext text/x-wiki {{Vehicle Identification Numbers (VIN codes)/Warning}}{{clear}} It is the tenth digit that gives you the model year for GM. I've been working at a Chevy dealer for years running codes/vins. For example (my examples only apply to 2001-2015 gm vehicles) Remember 10th digit from the beginning, (left to right). 2001... 1, 2002...2, 2003...3, etc., 2009...9. After 2009, the tenth digit was given a letter 2010... A, 2011...B, 2012...C, 2013...D, 2014...E, 2015...F, Etc... We have another 20 years worth of letters. Thanks for reading. You can always check your model year by looking in your drivers side door jamb and it will give you model year. If it was assembled in July or later, the model year is probably a year later than the calendar year of the manufacturing date listed. ==American GM== ===American VIN format 1981-1984 Passenger Car=== GM's VIN format is as follows: <table border=1 style="margin:auto;"> <tr> <th>Position</th> <th>Sample</th><th></th><th></th><th>Description</th> </tr><tr> <td>1</td> <td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td> </tr><tr> <td>2</td> <td>G</td><td></td><td></td></tr><tr> <td>3</td> <td>6</td><td></td><td></td></tr><tr> <td>4</td> <td>A</td><td></td><td></td><td>[[#American restraint types 1981-1984|Restraint type]]</td> </tr><tr> <td>5</td> <td>M</td><td></td><td></td><td>[[#Car Line & Series Code 1981-1984|Car Line & Series Code]]</td> </tr><tr> <td>6</td> <td>4</td><td></td><td></td><td rowspan=2>[[#Body style codes 1981-1986|Body style]]</td> </tr><tr> <td>7</td> <td>7</td><td></td><td></td><td> </td> </tr><tr> <td>8</td> <td>8</td><td></td><td></td><td>[[#American engine codes 1981-|Engine type]]</td> </tr><tr> <td>9</td> <td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td> </tr><tr> <td>10</td> <td>E</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td> </tr><tr> <td>11</td> <td>9</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td> </tr><tr> <td>12</td> <td>1</td><td></td><td></td><td rowspan=6>Sequential number </tr><tr> <td>13</td> <td>2</td><td></td><td></td></tr><tr> <td>14</td> <td>3</td><td></td><td></td></tr><tr> <td>15</td> <td>7</td><td></td><td></td></tr><tr> <td>16</td> <td>6</td><td></td><td></td></tr><tr> <td>17</td> <td>2</td><td></td><td></td> </table> ====American restraint types 1981-1984==== The restraint type is specified as character 4 of the American GM VIN for passenger cars. {| border=1 style="margin:auto;" !VIN Code !Description |- |A||Manual Seatbelts only - No Passive Restraint |} ====Car Line & Series Code 1981-1984==== The Car Line & Series Code is specified as character 5 of the American GM VIN for passenger cars. {| border=1 style="margin:auto;" !List of GM platforms !Car Line & <br> Series Code !:Category:General Motors vehicles|Model |- |rowspan=19|GM A platform - rear-wheel drive |T||Chevrolet Malibu 1981 |- |W||Chevrolet Malibu Classic 1981 |- |Z||Chevrolet Monte Carlo 1981 |- |D||Pontiac LeMans 1981 |- |F||Pontiac Grand LeMans 1981 |- |J||Pontiac Grand Prix 1981 |- |K||Pontiac Grand Prix LJ 1981 |- |P||Pontiac Grand Prix Brougham 1981 |- |G||Oldsmobile Cutlass sedan, Cutlass Cruiser wagon 1981 |- |H||Oldsmobile Cutlass Cruiser ''Brougham'' wagon 1981 |- |K||Oldsmobile Cutlass Calais coupe 1981 |- |M||Oldsmobile Cutlass Supreme ''Brougham'' 1981 |- |R||Oldsmobile Cutlass Supreme coupe, Cutlass LS sedan 1981 |- |E||Buick Century wagon 1981 |- |H||Buick Century sedan, Estate wagon 1981 |- |J||Buick Regal 1981 |- |K||Buick Regal ''Sport'' 1981 |- |L||Buick Century ''Limited'' 1981 |- |M||Buick Regal ''Limited'' 1981 |- |rowspan=10|GM A platform - front-wheel drive |W||Chevrolet Celebrity 1982-1984 |- |F||Pontiac 6000 1982-1984 |- |G||Pontiac 6000 ''LE'' 1982-1984 |- |H||Pontiac 6000 ''STE'' 1983-1984 |- |G||Oldsmobile Cutlass Ciera 1982 |- |J||Oldsmobile Cutlass Ciera ''LS'' 1982-1984, Cutlass Cruiser ''LS'' 1984 |- |M||Oldsmobile Cutlass Ciera ''Brougham'' 1982-1984 |- |G||Buick Century ''T-Type'' 1983-1984 |- |H||Buick Century ''Custom'' 1982-1984 |- |L||Buick Century ''Limited'' 1982-1984 |- |rowspan=19|GM B platform |D||Chevrolet Bel Air 1981 (Canada only) |- |L||Chevrolet Impala 1981-1984 |- |N||Chevrolet Caprice Classic 1981-1984 |- |F||Pontiac Laurentian 1981 (Canada only) |- |L||Pontiac Catalina 1981, Parisienne 1984 |- |L||Pontiac Parisienne 1982-1983 (Canada only) |- |N||Pontiac Bonneville 1981 |- |N||Pontiac Parisienne 1981, Parisienne Brougham 1982-1983 (Canada only) |- |R||Pontiac Bonneville Brougham 1981 |- |T||Pontiac Parisienne Brougham 1984 |- |L||Oldsmobile Delta 88 1981-1983 |- |N||Oldsmobile Delta 88 Royale 1981-1984 |- |P||Oldsmobile Custom Cruiser 1981-1984 |- |V||Oldsmobile Delta 88 Royale Brougham LS 1984 |- |Y||Oldsmobile Delta 88 Royale Brougham 1981-1984 |- |N||Buick Le Sabre 1981, Le Sabre ''Custom'' 1982-1984 |- |P||Buick Le Sabre ''Limited'' 1981-1984 |- |R||Buick Le Sabre Estate Wagon 1981-1983 |- |V||Buick Electra Estate Wagon 1981-1984 |- |rowspan=13|GM C platform - rear-wheel drive |G||Oldsmobile 98 Regency 1984 |- |H||Oldsmobile 98 Regency Brougham 1984 |- |V||Oldsmobile 98 Luxury 1981 |- |W||Oldsmobile 98 Regency Brougham 1982-1983 |- |X||Oldsmobile 98 Regency 1981-1983 |- |R||Buick Electra Limited 1984 |- |U||Buick Electra Park Avenue 1984 |- |W||Buick Electra Park Avenue 1981-1983 |- |X||Buick Electra Limited 1981-1983 |- |B||Cadillac Fleetwood Brougham 1981-1983 |- |D||Cadillac DeVille 1981-1983 |- |M||Cadillac DeVille 1984 |- |W||Cadillac Fleetwood Brougham 1984 |- |rowspan=1|GM D platform - rear-wheel drive |F||Cadillac Fleetwood Limousine 1981-1984 |- |rowspan=4|GM E platform |Z||Oldsmobile Toronado Brougham 1981-1984 |- |Y||Buick Riviera T-Type 1981-1984 |- |Z||Buick Riviera 1981-1984 |- |L||Cadillac Eldorado 1981-1984 |- |rowspan=7|GM F platform |P||Chevrolet Camaro Sport Coupe 1981-1984 |- |S||Chevrolet Camaro Berlinetta 1981-1984 |- |S||Pontiac Firebird 1981-1984 |- |T||Pontiac Firebird ''Esprit'' 1981 |- |V||Pontiac Firebird ''Formula'' 1981 |- |W||Pontiac Firebird ''Trans Am'' 1981-1984 |- |X||Pontiac Firebird ''Trans Am'' Turbo Special Edition 1981, Firebird ''S/E'' 1982-1984 |- |rowspan=15|GM G platform - rear-wheel drive |W||Chevrolet Malibu Classic 1982, Malibu 1983 |- |Z||Chevrolet Monte Carlo 1982-1984 |- |J||Pontiac Grand Prix 1982-1984 |- |K||Pontiac Grand Prix LJ 1982-1983, Grand Prix LE 1984 |- |N||Pontiac Bonneville G 1982-1984 |- |P||Pontiac Grand Prix Brougham 1982-1984 |- |R||Pontiac Bonneville G Brougham 1982-1984 |- |S||Pontiac Bonneville G ''LE'' 1984 |- |H||Oldsmobile Cutlass Cruiser wagon 1982-1983 |- |K||Oldsmobile Cutlass Calais coupe 1982-1984 |- |M||Oldsmobile Cutlass Supreme ''Brougham'' 1982-1984 |- |R||Oldsmobile Cutlass Supreme coupe & sedan 1982-1984 |- |J||Buick Regal 1982-1984 |- |K||Buick Regal ''Sport'' 1982, Regal ''T-Type'' 1983-1984 |- |M||Buick Regal ''Limited'' 1982-1984 |- |rowspan=13|GM J platform |C||Chevrolet Cavalier 1983-1984 |- |D||Chevrolet Cavalier 2-d/4-d/wagon 1982, Cavalier CS 1983-1984 |- |E||Chevrolet Cavalier 3-door hatchback 1982, Cavalier CS 3-door hatchback 1983, Cavalier Type 10 2-d/3-d/Convertible 1984 |- |B||Pontiac J2000 1982, 2000 1983, 2000 Sunbird 1984 |- |C||Pontiac J2000 LE 1982, 2000 LE 1983, 2000 Sunbird LE Convertible 1983, 2000 Sunbird LE 1984 |- |D||Pontiac J2000 SE 1982, 2000 SE 1983, 2000 Sunbird SE 1984 |- |E||Pontiac J2000 S 1982 |- |C||Oldsmobile Firenza Base model 1982-1984, Firenza S 1982-1984 |- |D||Oldsmobile Firenza LX 1982-1984, Firenza SX 1982-1984 |- |E||Buick Skyhawk T-Type 1983-1984 |- |S||Buick Skyhawk Custom 1982-1984 |- |T||Buick Skyhawk Limited 1982-1984 |- |G||Cadillac Cimarron 1982-1984 |- |rowspan=1|GM K platform |S||Cadillac Seville 1981-1984 |- |rowspan=3|GM P platform ||E||Pontiac Fiero ''Coupe'' 1984 |- ||F||Pontiac Fiero ''SE'' 1984 |- ||M||Pontiac Fiero ''Sport coupe'' 1984 |- |rowspan=6|GM T platform - rear-wheel drive |B||Chevrolet Chevette 1981-1983, Chevette CS 1984 |- |J||Chevrolet Chevette Scooter 1981-1983, Chevette 1984 |- |B||Pontiac Acadian 1981-1984 (Canada only) |- |J||Pontiac Acadian S 1981-1982, Pontiac Acadian Scooter 1983-1984 (Canada only) |- |L||Pontiac T1000 1982, 1000 1983-1984 |- |M||Pontiac T1000 1981 |- |rowspan=10|GM X platform |H||Chevrolet Citation 2-door coupe 1982-1983, Citation II 2-door coupe 1984 |- |X||Chevrolet Citation hatchback 1981-1983, Citation II hatchback 1984 |- |T||Pontiac Phoenix SJ 1982-1983, Phoenix SE 1984 |- |Y||Pontiac Phoenix 1981-1984 |- |Z||Pontiac Phoenix LJ 1981-1983, Phoenix LE 1984 |- |B||Oldsmobile Omega 1981-1984 |- |E||Oldsmobile Omega Brougham 1981-1984 |- |B||Buick Skylark 1981-1982, Skylark Custom 1983-1984 |- |C||Buick Skylark Limited 1981-1984 |- |D||Buick Skylark Sport 1981-1982, Skylark T-Type 1983-1984 |- |rowspan=1|GM Y platform |Y||Chevrolet Corvette 1981-1982, 1984 |} ===American VIN format 1985-1986 Passenger Car=== GM has traditionally encoded the platform as the 4th character of the VIN. Other content includes an engine code and manufacturing plant. GM's VIN format is as follows: <table border=1 style="margin:auto;"> <tr> <th>Position</th> <th>Sample</th><th></th><th></th><th>Description</th> </tr><tr> <td>1</td> <td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td> </tr><tr> <td>2</td> <td>G</td><td></td><td></td></tr><tr> <td>3</td> <td>6</td><td></td><td></td></tr><tr> <td>4</td> <td>D</td><td></td><td></td><td>[[#Platform & Series Codes 1985- Passenger Car|Platform]]</td> </tr><tr> <td>5</td> <td>W</td><td></td><td></td><td>[[#Platform & Series Codes 1985- Passenger Car|Series Code]]</td> </tr><tr> <td>6</td> <td>6</td><td></td><td></td><td rowspan=2>[[#Body style codes 1981-1986|Body style]]</td> </tr><tr> <td>7</td> <td>9</td><td></td><td></td><td> </td> </tr><tr> <td>8</td> <td>Y</td><td></td><td></td><td>[[#American engine codes 1981-|Engine type]]</td> </tr><tr> <td>9</td> <td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td> </tr><tr> <td>10</td> <td>G</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td> </tr><tr> <td>11</td> <td>9</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td> </tr><tr> <td>12</td> <td>1</td><td></td><td></td><td rowspan=6>Sequential number </tr><tr> <td>13</td> <td>2</td><td></td><td></td></tr><tr> <td>14</td> <td>3</td><td></td><td></td></tr><tr> <td>15</td> <td>7</td><td></td><td></td></tr><tr> <td>16</td> <td>6</td><td></td><td></td></tr><tr> <td>17</td> <td>2</td><td></td><td></td> </table> ====Body style codes 1981-1986==== The Body type is specified as characters 6 and 7 of the American GM VIN for passenger cars from 1981-1986. {| border=1 style="margin:auto;" !VIN !Description |- |11,27,37,47,57,97||Two-Door Coupe/Sedan |- |07,08,77,87||Two-Door Hatchback |- |67||Two-Door Convertible |- |19,69||Four-Door Sedan |- |68||Four-Door Hatchback |- |23||Four-Door Limousine, 8-passenger ("Limousine") |- |33||Four-Door Limousine w/Center Partition, 7-passenger ("Formal Limousine") |- |35||Four-Door Station Wagon |} ===American VIN format 1987- Passenger Car=== GM has traditionally encoded the platform as the 4th character of the VIN. Other content includes an engine code and manufacturing plant. GM's VIN format is as follows: <table border=1 style="margin:auto;"> <tr> <th>Position</th> <th>Sample</th><th></th><th></th><th>Description</th> </tr><tr> <td>1</td> <td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td> </tr><tr> <td>2</td> <td>G</td><td></td><td></td></tr><tr> <td>3</td> <td>6</td><td></td><td></td></tr><tr> <td>4</td> <td>D</td><td></td><td></td><td>[[#Platform & Series Codes 1985- Passenger Car|Platform]]</td> </tr><tr> <td>5</td> <td>M</td><td></td><td></td><td>[[#Platform & Series Codes 1985- Passenger Car|Series Code]]</td> </tr><tr> <td>6</td> <td>5</td><td></td><td></td><td>[[#Body style codes 1987- Passenger Car|Body style]]</td> </tr><tr> <td>7</td> <td>7</td><td></td><td></td><td>[[#American restraint types 1987-|Restraint type]]</td> </tr><tr> <td>8</td> <td>N</td><td></td><td></td><td>[[#American engine codes 1981-|Engine type]]</td> </tr><tr> <td>9</td> <td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td> </tr><tr> <td>10</td> <td>3</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td> </tr><tr> <td>11</td> <td>0</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td> </tr><tr> <td>12</td> <td>1</td><td></td><td></td><td rowspan=6>Sequential number </tr><tr> <td>13</td> <td>2</td><td></td><td></td></tr><tr> <td>14</td> <td>3</td><td></td><td></td></tr><tr> <td>15</td> <td>7</td><td></td><td></td></tr><tr> <td>16</td> <td>6</td><td></td><td></td></tr><tr> <td>17</td> <td>2</td><td></td><td></td> </table> ===American VIN format 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle=== GM's VIN format is as follows: <table border=1 style="margin:auto;"> <tr> <th>Position</th> <th>Sample</th><th></th><th></th><th>Description</th> </tr><tr> <td>1</td> <td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td> </tr><tr> <td>2</td> <td>G</td><td></td><td></td></tr><tr> <td>3</td> <td>K</td><td></td><td></td></tr><tr> <td>4</td> <td>E</td><td></td><td></td><td>[[#GVWR/Brake System 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle|GVWR/Brake System]]</td> </tr><tr> <td>5</td> <td>K</td><td></td><td></td><td>[[#Line & Chassis Type 1981-1999 Light Duty Truck & Multi-Purpose Passenger Vehicle|Line & Chassis Type for 1981-1999]]</td> </tr><tr> <td>5</td> <td>K</td><td></td><td></td><td>[[#Line & Chassis Type 2000-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle|Line & Chassis Type for 2000-2009]]</td> </tr><tr> <td>6</td> <td>1</td><td></td><td></td><td>[[#Series 1981-1999 Light Duty Truck & Multi-Purpose Passenger Vehicle|Series]]</td> </tr><tr> <td>7</td> <td>8</td><td></td><td></td><td>[[#Body style codes 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle|Body type]]</td> </tr><tr> <td>8</td> <td>K</td><td></td><td></td><td>[[#Engine codes for light trucks|Engine type]]</td> </tr><tr> <td>9</td> <td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td> </tr><tr> <td>10</td> <td>N</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td> </tr><tr> <td>11</td> <td>J</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td> </tr><tr> <td>12</td> <td>1</td><td></td><td></td><td rowspan=6>Sequential number </tr><tr> <td>13</td> <td>2</td><td></td><td></td></tr><tr> <td>14</td> <td>3</td><td></td><td></td></tr><tr> <td>15</td> <td>7</td><td></td><td></td></tr><tr> <td>16</td> <td>6</td><td></td><td></td></tr><tr> <td>17</td> <td>2</td><td></td><td></td> </table> ====GVWR/Brake System 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle==== The GVWR/Brake System is specified as character 4 of the American GM VIN for light trucks. {| border=1 style="margin:auto;" !VIN !GVWR Range in lbs. & Weight Class !Brake System |- |A||Class A: 0-3,000||Hydraulic |- |B||Class B: 3,001-4,000||Hydraulic |- |C||Class C: 4,001-5,000||Hydraulic |- |D||Class D: 5,001-6,000||Hydraulic |- |E||Class E: 6,001-7,000||Hydraulic |- |F||Class F: 7,001-8,000||Hydraulic |- |G||Class G: 8,001-9,000||Hydraulic |- |H||Class H: 9,001-10,000||Hydraulic |- |J||Class 3: 10,001-14,000||Hydraulic |- |K||Class 4: 14,001-16,000||Hydraulic |- |L||Class 5: 16,001-19,500||Hydraulic |} ====Line & Chassis Type 1981-1999 Light Duty Truck & Multi-Purpose Passenger Vehicle==== The Line & Chassis Type is specified as character 5 of the American GM VIN for light trucks. {| border=1 style="margin:auto;" !VIN !Description |- |B||Special Body Buick, Chevrolet |- |C||Chevy full-size pickups & chassis cabs 2wd (C-series) '81-'86, '88-'99,<br /> GMC full-size pickups & chassis cabs 2wd (C-series) '81-'86, Sierra 2wd (C-series) '88-'99 |- |C||Chevy C10 Blazer 2wd ('81-'82), Tahoe 4-door 2wd ('95-'99), Suburban 2wd ('81-'86, '92-'99),<br /> GMC C1500 Jimmy 2wd ('81-'82), Yukon 4-door 2wd ('95-'99), Suburban 2wd ('81-'86, '92-'99) |- |D||Military Truck 4wd |- |E||'91-'97 Geo Tracker 2wd, '98-'99 Chevrolet Tracker 2wd |- |E||'97-'98 Chevy S-10 EV |- |G||Chevy/GMC full-size vans (Chevy Van, Sportvan, Express, GMC Vandura, Rally Van, Savana) |- |H||'93-'96 Chevy G30HD/GMC G3500HD cutaway van |- |H||Cadillac chassis cutaway/special body (Based on Rwd Fleetwood '93-'96, Fwd DeVille '97-'99) |- |J||'89-'97 Geo Tracker 4wd, '98-'99 Chevrolet Tracker 4wd |- |K||Chevy full-size pickups & chassis cabs 4wd (K-series) '81-'86, '88-'99,<br /> GMC full-size pickups & chassis cabs 4wd (K-series) '81-'86, Sierra 4wd (K-series) '88-'99 |- |K||Chevy K10/K5 Blazer 4wd ('81-'86, '92-'94), Tahoe 4wd ('95-'99), Suburban 4wd ('81-'86, '92-'99),<br /> GMC K1500 Jimmy 4wd ('81-'86), Yukon 4wd ('92-'99), Suburban 4wd ('81-'86, '92-'99), '99 Cadillac Escalade 4wd |- |L||Chevy Luv 2wd '81-'82 |- |L||Chevy Astro/GMC Safari 4wd '90-'99 |- |M||Chevy Astro/GMC Safari 2wd '85-'99 |- |P||Forward Control (includes Chevrolet Step-Van/GMC Value-Van, Chevy/GMC P-Series) |- |R||Chevy Luv 4wd '81-'82 |- |R||Chevy full-size pickups & chassis cabs 2wd (R-series), Suburban 2wd '87-'91,<br /> GMC full-size pickups & chassis cabs 2wd (R-series), Suburban 2wd '87-'91 |- |S||Chevy S-10 2wd ('82-'99), S-10 Blazer 2wd ('83-'94), Blazer 2wd ('95-'99), GMC S-15 2wd ('82-'90), Sonoma 2wd ('91-'99),<br> S-15 Jimmy 2wd ('83-'91), Jimmy 2wd ('92-'99), Isuzu Hombre 2wd ('96-'99) |- |T||Chevy S-10 4wd ('83-'99), S-10 Blazer 4wd ('83-'94), Blazer 4wd ('95-'99), GMC S-15 4wd ('83-'90), Sonoma 4wd ('91-'99), Syclone 4wd ('91),<br> S-15 Jimmy 4wd ('83-'91), Jimmy 4wd ('92-'99), Typhoon 4wd ('92-93), Envoy 4wd ('98-'99), Oldsmobile Bravada 4wd ('91-'94, '96-'99),<br> Isuzu Hombre 4wd ('98-'99) |- |U||Regular length All-Purpose Vehicle ('90-'99 U-body fwd minivans) |- |V||Chevy full-size pickups & chassis cabs 4wd (V-series), V10/V1500 Blazer 4wd, Suburban 4wd '87-'91,<br /> GMC full-size pickups & chassis cabs 4wd (V-series), V1500 Jimmy 4wd, Suburban 4wd '87-'91 |- |W||'81-'87 Chevy El Camino, GMC Caballero |- |X||Extended length All-Purpose Vehicle ('97-'99 U-body fwd extended length minivans) |- |Z||Cadillac chassis cutaway/special body (Based on Rwd Fleetwood '81-'84, Fwd Fleetwood '85-'92) |} ====Line & Chassis Type 2000-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle==== The Line & Chassis Type is specified as character 5 of the American GM VIN for light trucks. {| border=1 style="margin:auto;" !VIN !Description |- |A||Pontiac Aztek 2wd '01-'05, Buick Rendezvous 2wd '02-'07 |- |A||Chevrolet HHR '06-'09, HHR Panel '07-'09 |- |B||Pontiac Aztek Awd '01-'05, Buick Rendezvous Awd '02-'06 |- |C||Chevy full-size pickups & chassis cabs 2wd (C-series) '00, full-size chassis cabs 2wd (C3500HD) '01-'02, Silverado 2wd '00-'09, Silverado Classic 2wd '07,<br /> GMC Sierra 2wd (C-series) '00-'09, Sierra Classic 2wd '00, '07 |- |C||Chevy Tahoe 2wd ('00-'09), Suburban 2wd ('00-'09), Avalanche 2wd ('02-'09),<br /> GMC Yukon 2wd ('00-'09), Yukon XL 2wd ('00-'09), Cadillac Escalade 2wd ('02-'09), Escalade ESV 2wd ('08-'09) |- |E||Chevrolet Tracker 2wd '00-'04 |- |E||Cadillac SRX 2wd & Awd '04-'09 |- |G||Chevy/GMC full-size vans 2wd (Chevy Express, GMC Savana) '00-09 |- |H||Chevy/GMC full-size vans 4wd (Chevy Express, GMC Savana) '03-09 |- |H||Cadillac Commercial Chassis for Hearse (Based on Fwd DeVille '02-'05, DTS '06-'09) |- |H||Cadillac Professional Chassis for Limousine (Based on Fwd DeVille '00-'05, DTS '06-'07) |- |J||Chevrolet Tracker 4wd '00-'04 |- |K||Chevy full-size pickups & chassis cabs 4wd (K-series) '00, Silverado 4wd '00-'09, Silverado Classic 4wd '07,<br /> GMC Sierra 4wd (K-series) '00-'09, Sierra Classic 4wd '00, '07 |- |K||Chevy Tahoe 4wd ('00-'09), Suburban 4wd ('00-'09), Avalanche 4wd ('02-'09), GMC Yukon 4wd ('00-'09), Yukon XL 4wd ('00-'09),<br> Cadillac Escalade 4wd ('00, '02-'09), Escalade ESV 4wd ('03-'09), Escalade EXT 4wd ('02-'09) |- |K||Cadillac Professional Chassis for Limousine (Based on Fwd DTS '08-'09) |- |L||Chevy Astro/GMC Safari 4wd '00-'05 |- |L||Chevy Equinox 2wd & Awd '05-'09, Pontiac Torrent 2wd & Awd '06-'09, Saturn Vue 2wd & Awd '08-'09 |- |M||Chevy Astro/GMC Safari 2wd '00-'05 |- |N||Hummer H2 '03-'09, H2 SUT '05-'09 |- |N||Hummer H3 '06-'09, H3T '09 |- |R||GMC Acadia 2wd, Saturn Outlook 2wd '07-'09, Buick Enclave 2wd '08-'09, Chevy Traverse 2wd '09 |- |S||Chevy S-10 2wd ('00-'03), Blazer 2wd ('00-'05), GMC Sonoma 2wd ('00-'03), Jimmy 2wd ('00-'01), Isuzu Hombre 2wd ('00) |- |S||Chevy Trailblazer 2wd ('02-'09), SSR ('03-'06), GMC Envoy 2wd ('02-'09), Envoy XUV 2wd ('04-'05), Oldsmobile Bravada 2wd ('02-'04),<br> Buick Rainier 2wd ('04-'07), Isuzu Ascender 2wd ('03-'08) |- |S||Chevy Colorado 2wd ('04-'09), GMC Canyon 2wd ('04-'09), Isuzu i-series 2wd ('06-'08) |- |T||Chevy S-10 4wd ('00-'04), Blazer 4wd ('00-'05), GMC Sonoma 4wd ('00-'04), Jimmy 4wd ('00-'01, Canada only: '02-'05), Envoy 4wd ('00),<br> Oldsmobile Bravada 4wd ('00-'01), Isuzu Hombre 4wd ('00) |- |T||Chevy Trailblazer 4wd ('02-'09), GMC Envoy 4wd ('02-'09), Envoy XUV 2wd ('04-'05), Oldsmobile Bravada 4wd ('02-'04), Buick Rainier 4wd ('04-'07),<br> Isuzu Ascender 4wd ('03-'08), Saab 9-7X 4wd ('05-'09) |- |T||Chevy Colorado 4wd ('04-'09), GMC Canyon 4wd ('04-'09), Isuzu i-series 4wd ('06-'08) |- |U||Regular length All-Purpose Vehicle [Minivan] ('00-'04 Chevy Venture, Pontiac Montana) |- |U||Regular length All-Purpose Vehicle [Minivan] (Chevy Uplander [US: '06-'08, Canada only: '05-'09], Pontiac Montana SV6 [Canada only: '05-'09]) |- |V||Extended length AWD All-Purpose Vehicle [Minivan] ('02-'04 Chevy Venture, Pontiac Montana, Oldsmobile Silhouette Extended length AWD) |- |V||Extended length FWD All-Purpose Vehicle [Minivan] ('05 Chevy Venture, Pontiac Montana Extended length FWD) |- |V||Extended length FWD All-Purpose Vehicle [Minivan] (Chevy Uplander ['05-'08, Canada only: '09], Pontiac Montana SV6 ['05-'06, Canada only: '07-'09],<br> Buick Terraza ['05-'07], Saturn Relay ['05-'07]) |- |V||GMC Acadia Awd, Saturn Outlook Awd '07-'09, Buick Enclave Awd '08-'09, Chevy Traverse Awd '09 |- |X||Extended length FWD All-Purpose Vehicle [Minivan] ('00-'04 Chevy Venture, Pontiac Montana, Oldsmobile Silhouette Extended length FWD) |- |X||Extended length AWD All-Purpose Vehicle [Minivan] ('05-'06 Chevy Uplander AWD, Pontiac Montana SV6 AWD, Buick Terraza AWD, Saturn Relay AWD) |- |Z||Saturn Vue 2wd & Awd '02-'07 |} ====Series 1981-1999 Light Duty Truck & Multi-Purpose Passenger Vehicle==== The Series is specified as character 6 of the American GM VIN for light trucks. {| border=1 style="margin:auto;" !VIN !Description |- |1||1/2 Ton (includes '96-'99 Isuzu Hombre) |- |2||3/4 Ton |- |3||1 Ton |- |8||1/2 Ton ('81-'87 El Camino, Caballero) |- |9||Cadillac, Buick, Chevrolet Commercial Body/Chassis |- |0||All-Purpose Vehicle ('90-'99 U-body fwd minivans) |} ====Series 2000-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle==== The Series is specified as character 6 of the American GM VIN for light trucks. {| border=1 style="margin:auto;" !VIN !Description |- |1 <br> (following A)||Chevrolet HHR LS ('06-'07) |- |2 <br> (following A)||Chevrolet HHR LT ('06-'07) |- |3 <br> (following A)||Chevrolet HHR LT ('07) |- |1 <br> (following A)||Chevrolet HHR LS w/auto. trans. ('08-'09) |- |2 <br> (following A)||Chevrolet HHR 1LT w/auto. trans. ('08-'09) |- |3 <br> (following A)||Chevrolet HHR LS w/man. trans. ('08-'09) |- |4 <br> (following A)||Chevrolet HHR 1LT w/man. trans. ('08-'09) |- |5 <br> (following A)||Chevrolet HHR 2LT (all transmissions) ('08-'09) |- |6 <br> (following A)||Chevrolet HHR SS w/auto. trans. ('08-'09) (Pos. 1-3 of VIN is 3GN) |- |7 <br> (following A)||Chevrolet HHR SS w/man. trans. ('08-'09) (Pos. 1-3 of VIN is 3GN) |- |6 <br> (following A)||Chevrolet HHR Panel SS w/auto. trans. ('09) (Pos. 1-3 of VIN is 3GC) |- |7 <br> (following A)||Chevrolet HHR Panel SS w/man. trans. ('09) (Pos. 1-3 of VIN is 3GC) |- |8 <br> (following A)||Chevrolet HHR Panel LS w/auto. trans. ('08-'09) (Pos. 1-3 of VIN is 3GC) |- |9 <br> (following A)||Chevrolet HHR Panel LS w/man. trans. ('08-'09) (Pos. 1-3 of VIN is 3GC) |- |0 <br> (following A)||Chevrolet HHR Panel LT (all transmissions) ('08-'09) (Pos. 1-3 of VIN is 3GC) |- |1 <br> (following A)||Chevrolet HHR Panel LS ('08) (Pos. 1-3 of VIN is 3GC) |- |2 <br> (following A)||Chevrolet HHR Panel LT ('08) (Pos. 1-3 of VIN is 3GC) |- |3 <br> (following A)||Chevrolet HHR Panel LT ('08) (Pos. 1-3 of VIN is 3GC) |- |0 <br> (following V)||Chevrolet Venture Plus ('05) (Pos. 8 of VIN is E) |- |1 <br> (following V)||Chevrolet Venture Cargo ('05) (Pos. 8 of VIN is E) |- |2 <br> (following V)||Chevrolet Venture LS ('05) (Pos. 8 of VIN is E) |- |3 <br> (following V)||Chevrolet Venture LT ('05) (Pos. 8 of VIN is E) |- |2 <br> (following U)||Chevrolet Uplander LS SWB 2wd ('06-'08) |- |0 <br> (following V)||Chevrolet Uplander Base model 2wd ('05) |- |1 <br> (following V)||Chevrolet Uplander Cargo Van 2wd, Mobility (incomplete vehicle) 2wd ('05-'08) |- |2 <br> (following V)||Chevrolet Uplander LS 2wd ('05-'08) |- |3 <br> (following V)||Chevrolet Uplander LT 2wd ('05-'08) |- |3 <br> (following X)||Chevrolet Uplander LT Awd ('05-'06) |- |1 <br> (following M)||Chevrolet Astro 2wd ('00-'05) |- |1 <br> (following L)||Chevrolet Astro Awd ('00-'05) |- |1 <br> (following G)||Chevrolet Express 1500 series 2wd ('00-'09) |- |2 <br> (following G)||Chevrolet Express 2500 series 2wd ('00-'09) |- |3 <br> (following G)||Chevrolet Express 3500 series 2wd ('00-'09) |- |3 <br> (following G)||When VIN starts with 1GBK: Chevrolet Express 4500 series Cutaway 2wd ('09) |- |6 <br> (following G)||Chevrolet Express 1500 series LT 2wd ('01-'02) |- |1 <br> (following H)||Chevrolet Express 1500 series Awd ('03-'09) |- |2 <br> (following H)||Chevrolet Express 2500 series Awd ('03-'05) |- |1 <br> (following E)||Chevrolet Tracker Base model 2wd ('00-'04) |- |6 <br> (following E)||Chevrolet Tracker LT 2wd ('01-'04) |- |1 <br> (following J)||Chevrolet Tracker Base model 4wd ('00-'01, '04) |- |1 <br> (following J)||Chevrolet Tracker Base model w/1SB (Preferred) Equip. Group 4wd ('02-'03) |- |2 <br> (following J)||Chevrolet Tracker Base model w/1SA (Base) Equip. Group 4wd ('02-'03) |- |6 <br> (following J)||Chevrolet Tracker LT 4wd ('01-'04) |- |7 <br> (following J)||Chevrolet Tracker ZR2 4wd ('01-'04) |- |1 <br> (following L)||Chevrolet Equinox LS 2wd ('05-'09) |- |2 <br> (following L)||Chevrolet Equinox LS Awd ('05-'09) |- |6 <br> (following L)||Chevrolet Equinox LT 2wd ('05-'07) |- |7 <br> (following L)||Chevrolet Equinox LT Awd ('05-'07) |- |3 <br> (following L)||Chevrolet Equinox 1LT 2wd ('08-'09) |- |4 <br> (following L)||Chevrolet Equinox 1LT Awd ('08-'09) |- |5 <br> (following L)||Chevrolet Equinox 2LT 2wd ('08-'09) |- |6 <br> (following L)||Chevrolet Equinox 2LT Awd ('08-'09) |- |7 <br> (following L)||Chevrolet Equinox LTZ 2wd ('08-'09) |- |8 <br> (following L)||Chevrolet Equinox LTZ Awd ('08-'09) |- |9 <br> (following L)||Chevrolet Equinox Sport 2wd ('08-'09) |- |0 <br> (following L)||Chevrolet Equinox Sport Awd ('08-'09) |- |1 <br> (following R)||Chevrolet Traverse LS 2wd ('09) |- |2 <br> (following R)||Chevrolet Traverse LT 2wd ('09) |- |3 <br> (following R)||Chevrolet Traverse LTZ 2wd ('09) |- |1 <br> (following V)||Chevrolet Traverse LS Awd ('09) |- |2 <br> (following V)||Chevrolet Traverse LT Awd ('09) |- |3 <br> (following V)||Chevrolet Traverse LTZ Awd ('09) |- |1 <br> (following S)||Chevrolet Blazer 2wd ('00-'05) |- |1 <br> (following T)||Chevrolet Blazer 4wd ('00-'05) |- |1 <br> (following S)||Chevrolet Trailblazer 2wd ('02-'08), Trailblazer EXT 2wd ('02-'06) |- |1 <br> (following T)||Chevrolet Trailblazer 4wd ('02-'08), Trailblazer EXT 4wd ('02-'06) |- |3 <br> (following S)||Chevrolet Trailblazer LT 2wd ('09) |- |3 <br> (following T)||Chevrolet Trailblazer LT 4wd ('09) |- |5 <br> (following S)||Chevrolet Trailblazer SS 2wd ('09) |- |5 <br> (following T)||Chevrolet Trailblazer SS 4wd ('09) |- |1 <br> (following C)||Chevrolet Tahoe Limited 2wd ('00) [GMT400; 8th pos. of VIN is R] |- |1 <br> (following K)||Chevrolet Tahoe Z71 4wd ('00) [GMT400; 8th pos. of VIN is R] |- |1 <br> (following C)||Chevrolet Tahoe 2wd ('00-'06) [GMT800] |- |1 <br> (following K)||Chevrolet Tahoe 4wd ('00-'06) [GMT800] |- |1 <br> (following C)||Chevrolet Tahoe 2wd ('07-'08) [GMT900] |- |0 <br> (following C)||Chevrolet Tahoe Police/Special Service 2wd ('07-'09) [GMT900] |- |1 <br> (following C)||Chevrolet Tahoe LS 2wd ('09) [GMT900] |- |2 <br> (following C)||Chevrolet Tahoe LT 2wd ('09) [GMT900] |- |3 <br> (following C)||Chevrolet Tahoe LTZ 2wd ('09) [GMT900] |- |1 <br> (following K)||Chevrolet Tahoe 4wd ('07-'08) [GMT900] |- |0 <br> (following K)||Chevrolet Tahoe Police/Special Service 4wd ('07-'09) [GMT900] |- |1 <br> (following K)||Chevrolet Tahoe LS 4wd ('09) [GMT900] |- |2 <br> (following K)||Chevrolet Tahoe LT 4wd ('09) [GMT900] |- |3 <br> (following K)||Chevrolet Tahoe LTZ 4wd ('09) [GMT900] |- |1 <br> (following C)||Chevrolet Suburban 1500 series 2wd ('00-'08) |- |2 <br> (following C)||Chevrolet Suburban 2500 series 2wd ('00-'08) |- |1 <br> (following K)||Chevrolet Suburban 1500 series 4wd ('00-'08) |- |2 <br> (following K)||Chevrolet Suburban 2500 series 4wd ('00-'08) |- |1 <br> (following C)||Chevrolet Suburban 1500 series LS 2wd ('09) |- |2 <br> (following C)||Chevrolet Suburban 1500 series LT 2wd ('09) |- |3 <br> (following C)||Chevrolet Suburban 1500 series LTZ 2wd ('09) |- |4 <br> (following C)||Chevrolet Suburban 2500 series LS 2wd ('09) |- |5 <br> (following C)||Chevrolet Suburban 2500 series LT 2wd ('09) |- |1 <br> (following K)||Chevrolet Suburban 1500 series LS 4wd ('09) |- |2 <br> (following K)||Chevrolet Suburban 1500 series LT 4wd ('09) |- |3 <br> (following K)||Chevrolet Suburban 1500 series LTZ 4wd ('09) |- |4 <br> (following K)||Chevrolet Suburban 2500 series LS 4wd ('09) |- |5 <br> (following K)||Chevrolet Suburban 2500 series LT 4wd ('09) |- |1 <br> (following C)||Chevrolet Avalanche 1500 series 2wd ('02-'08) |- |2 <br> (following C)||Chevrolet Avalanche 2500 series 2wd ('02-'03) |- |1 <br> (following K)||Chevrolet Avalanche 1500 series 4wd ('02-'08) |- |2 <br> (following K)||Chevrolet Avalanche 2500 series 4wd ('02-'06) |- |1 <br> (following C)||Chevrolet Avalanche 1500 series LS 2wd ('09) |- |2 <br> (following C)||Chevrolet Avalanche 1500 series LT 2wd ('09) |- |3 <br> (following C)||Chevrolet Avalanche 1500 series LTZ 2wd ('09) |- |1 <br> (following K)||Chevrolet Avalanche 1500 series LS 4wd ('09) |- |2 <br> (following K)||Chevrolet Avalanche 1500 series LT 4wd ('09) |- |3 <br> (following K)||Chevrolet Avalanche 1500 series LTZ 4wd ('09) |- |1 <br> (following S)||Chevrolet SSR 2wd ('03-'06) |- |6 <br> (following S)||Chevrolet SSR Signature Series 2wd ('03) <br> [All SSR Signature Series also have a 0 in the 12th pos. of VIN whereas all other SSRs have a 1 in the 12th pos. of VIN] |- |1 <br> (following S)||Chevrolet S-10 2wd ('00-'03) |- |1 <br> (following T)||Chevrolet S-10 4wd ('00-'04) |- |1 <br> (following S)||Chevrolet Colorado 2wd ('04-'07) |- |1 <br> (following T)||Chevrolet Colorado 4wd ('04-'07) |- |1 <br> (following C)||Chevrolet Silverado 1500 2wd ('00-'06), Silverado Classic 1500 2wd ('07) [GMT800] |- |1 <br> (following K)||Chevrolet Silverado 1500 4wd ('00-'06), Silverado Classic 1500 4wd ('07) [GMT800] |- |1 <br> (following C)||Chevrolet Silverado 1500HD 2wd ('01-'03, '05-'06), Silverado Classic 1500HD 2wd ('07) [GMT800] (Pos. 8 of VIN is U] |- |1 <br> (following K)||Chevrolet Silverado 1500HD 4wd ('01-'03, '05-'06), Silverado Classic 1500HD 2wd ('07) [GMT800] (Pos. 8 of VIN is U] |- |2 <br> (following C)||Chevrolet Silverado 2500 2wd ('00) [GMT800] (Pos. 8 of VIN is T or U] |- |2 <br> (following K)||Chevrolet Silverado 2500 4wd ('00) [GMT800] (Pos. 8 of VIN is U] |- |2 <br> (following C)||Chevrolet C2500 2wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R) |- |3 <br> (following C)||Chevrolet C3500 2wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R) |- |3 <br> (following C)||when 4th pos. of VIN is K: Chevrolet C3500HD 2wd ('00-'02) [GMT400] |- |2 <br> (following K)||Chevrolet K2500 4wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R) |- |3 <br> (following K)||Chevrolet K3500 4wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R) |- |2 <br> (following C)||Chevrolet Silverado 2500 2wd ('01-'06) [GMT800], Silverado Classic 2500 2wd ('07) |- |2 <br> (following K)||Chevrolet Silverado 2500 4wd ('01-'06) [GMT800], Silverado Classic 2500 4wd ('07) |- |3 <br> (following C)||Chevrolet Silverado 3500 2wd ('01-'06) [GMT800], Silverado Classic 3500 2wd ('07) |- |3 <br> (following K)||Chevrolet Silverado 3500 4wd ('01-'06) [GMT800], Silverado Classic 3500 4wd ('07) |- |1 <br> (following V)||Pontiac Montana Mobility (incomplete vehicle) 2wd ('05) (Pos. 8 of VIN is E) |- |2 <br> (following V)||Pontiac Montana ('05) (Pos. 8 of VIN is E) |- |0 <br> (following V)||Pontiac Montana SV6 1SA 2wd ('05) |- |3 <br> (following V)||Pontiac Montana SV6 1SB 2wd ('05) |- |2 <br> (following X)||Pontiac Montana SV6 1SA Awd ('05) |- |3 <br> (following X)||Pontiac Montana SV6 1SB Awd ('05) |- |1 <br> (following V)||Pontiac Montana SV6 Mobility (incomplete vehicle) 2wd ('06) |- |3 <br> (following V)||Pontiac Montana SV6 2wd ('06) |- |3 <br> (following X)||Pontiac Montana SV6 Awd ('06) |- |0 <br> (following A)||Pontiac Aztek 2wd ('01-'05) |- |0 <br> (following B)||Pontiac Aztek Awd ('01-'05) |- |6 <br> (following L)||Pontiac Torrent 2wd ('06-'07) |- |7 <br> (following L)||Pontiac Torrent Awd ('06-'07) |- |3 <br> (following L)||Pontiac Torrent Base model 2wd ('08-'09) |- |4 <br> (following L)||Pontiac Torrent Base model Awd ('08-'09) |- |5 <br> (following L)||Pontiac Torrent GXP 2wd ('08-'09) |- |6 <br> (following L)||Pontiac Torrent GXP Awd ('08-'09) |- |0 <br> (following X)||Oldsmobile Silhouette extended length GL 2wd ('00, '03-'04), GLS 2wd ('00-'04) |- |1 <br> (following X)||Oldsmobile Silhouette extended length Premiere 2wd ('00-'04) |- |2 <br> (following X)||Oldsmobile Silhouette extended length GL 2wd ('01-'02) |- |0 <br> (following V)||Oldsmobile Silhouette extended length GLS Awd ('02-'04) |- |1 <br> (following V)||Oldsmobile Silhouette extended length Premiere Awd ('02-'04) |- |1 <br> (following S)||Oldsmobile Bravada 2wd ('02-'04) |- |1 <br> (following T)||Oldsmobile Bravada 4wd ('00-'04) |- |1 <br> (following V)||Buick Terraza Mobility (incomplete vehicle) 2wd ('05-'07) |- |2 <br> (following V)||Buick Terraza CX 2wd ('05-'07), CX Plus 2wd ('07) |- |3 <br> (following V)||Buick Terraza CXL 2wd ('05-'07) |- |2 <br> (following X)||Buick Terraza CX Awd ('05-'06) |- |3 <br> (following X)||Buick Terraza CXL Awd ('05-'06) |- |0 <br> (following A)||Buick Rendezvous 2wd ('02-'07) |- |0 <br> (following B)||Buick Rendezvous Awd ('02-'06) |- |1 <br> (following S)||Buick Rainier 2wd ('04-'07) |- |1 <br> (following T)||Buick Rainier 4wd ('04-'06) |- |1 <br> (following R)||Buick Enclave CX 2wd ('08-'09) |- |2 <br> (following R)||Buick Enclave CXL 2wd ('08-'09) |- |1 <br> (following V)||Buick Enclave CX Awd ('08-'09) |- |2 <br> (following V)||Buick Enclave CXL Awd ('08-'09) |- |9 <br> (following H)|| Cadillac Commercial Chassis for Limousine or Hearse based on DeVille ('00-'01) |- |0 <br> (following H)|| Cadillac Commercial Chassis for Hearse based on DeVille ('02-'05) or DTS ('06-'09) |- |9 <br> (following H)|| Cadillac Professional Chassis for Limousine based on DeVille ('02-'05) or DTS ('06-'07) |- |9 <br> (following K)|| Cadillac Professional Chassis for Limousine based on DTS ('08-'09) |- |6 <br> (following E)||Cadillac SRX ('04-'07) |- |2 <br> (following E)||Cadillac SRX RWD V8 ('08-'09) |- |4 <br> (following E)||Cadillac SRX AWD V6 ('08-'09) |- |5 <br> (following E)||Cadillac SRX AWD V8 ('08-'09) |- |6 <br> (following E)||When Pos. 8 of VIN is 7: Cadillac SRX RWD V6 ('08) |- |6 <br> (following E)||When Pos. 8 of VIN is A: Cadillac SRX AWD V8 ('08) |- |6 <br> (following E)||Cadillac SRX RWD V6 ('09) |- |1 <br> (following K)||Cadillac Escalade 4wd (Early '00) |- |4 <br> (following K)||Cadillac Escalade Platinum Edition 4wd ('08), Escalade ESV Platinum Edition 4wd ('08) |- |6 <br> (following C)||Cadillac Escalade 2wd ('02-'08), Escalade ESV 2wd ('08) |- |6 <br> (following K)||Cadillac Escalade 4wd (Mid '00, '02-'08), Escalade ESV 4wd ('03-'08), Escalade EXT 4wd ('02-'08) |- |1 <br> (following C)||Cadillac Escalade 2wd Base model ('09), Escalade ESV 2wd Base model ('09) |- |2 <br> (following C)||Cadillac Escalade 2wd w/Ultra Luxury Collection ('09), Escalade ESV 2wd w/Ultra Luxury Collection ('09) |- |3 <br> (following C)||Cadillac Escalade 2wd w/Platinum Edition ('09), Escalade ESV 2wd w/Platinum Edition ('09) |- |4 <br> (following C)||Cadillac Escalade Hybrid 2wd Base model ('09) |- |5 <br> (following C)||Cadillac Escalade 2wd w/Sport Package ('09), Escalade ESV 4wd w/Sport Package ('09) |- |1 <br> (following K)||Cadillac Escalade 4wd Base model ('09), Escalade ESV 4wd Base model ('09), Escalade EXT 4wd Base model ('09) |- |2 <br> (following K)||Cadillac Escalade 4wd w/Ultra Luxury Collection ('09), Escalade ESV 4wd w/Ultra Luxury Collection ('09),<br> Escalade EXT 4wd w/Ultra Luxury Collection ('09) |- |3 <br> (following K)||Cadillac Escalade 4wd w/Platinum Edition ('09), Escalade ESV 4wd w/Platinum Edition ('09) |- |4 <br> (following K)||Cadillac Escalade Hybrid 4wd Base model ('09) |- |5 <br> (following K)||Cadillac Escalade 4wd w/Sport Package ('09), Escalade ESV 4wd w/Sport Package ('09), Escalade EXT 4wd w/Sport Package ('09) |- |1 <br> (following M)||GMC Safari 2wd ('00-'05) |- |1 <br> (following L)||GMC Safari Awd ('00-'05) |- |1 <br> (following G)||GMC Savana 1500 series 2wd ('00-'09) |- |2 <br> (following G)||GMC Savana 2500 series 2wd ('00-'09) |- |3 <br> (following G)||GMC Savana 3500 series 2wd ('00-'09) |- |3 <br> (following G)||When VIN starts with 1GBK: GMC Savana 4500 series Cutaway 2wd ('09) |- |6 <br> (following G)||GMC Savana 1500 series SLT 2wd ('01-'02) |- |1 <br> (following H)||GMC Savana 1500 series Awd ('03-'09) |- |2 <br> (following H)||GMC Savana 2500 series Awd ('03-'05) |- |1 <br> (following R)||GMC Acadia SLE 2wd ('07-'09) |- |2 <br> (following R)||GMC Acadia SLT-1 2wd ('07-'09) |- |3 <br> (following R)||GMC Acadia SLT-2 2wd ('07-'09) |- |1 <br> (following V)||GMC Acadia SLE Awd ('07-'09) |- |2 <br> (following V)||GMC Acadia SLT-1 Awd ('07-'09) |- |3 <br> (following V)||GMC Acadia SLT-2 Awd ('07-'09) |- |1 <br> (following S)||GMC Jimmy 2wd ('00-'01) |- |6 <br> (following S)||GMC Jimmy Diamond Edition 2wd ('01) |- |1 <br> (following T)||GMC Jimmy 4wd ('00-'01 & '02-'05 in Canada) |- |6 <br> (following T)||GMC Jimmy Diamond Edition 4wd ('01) |- |1 <br> (following S)||GMC Envoy 2wd ('02-'08), Envoy XL 2wd ('02-'06), Envoy XUV 2wd ('04-'05) |- |6 <br> (following S)||GMC Envoy Denali 2wd ('05-'08), Envoy XL Denali 2wd ('05-'06) |- |1 <br> (following T)||GMC Envoy 4wd ('02-'08), Envoy XL 4wd ('02-'06), Envoy XUV 4wd ('04-'05) |- |6 <br> (following T)||GMC Envoy Denali 4wd ('05-'08), Envoy XL Denali 4wd ('05-'06) |- |3 <br> (following S)||GMC Envoy SLE 2wd ('09) |- |3 <br> (following T)||GMC Envoy SLE 4wd ('09) |- |4 <br> (following S)||GMC Envoy SLT 2wd ('09) |- |4 <br> (following T)||GMC Envoy SLT 4wd ('09) |- |5 <br> (following S)||GMC Envoy Denali 2wd ('09) |- |5 <br> (following T)||GMC Envoy Denali 4wd ('09) |- |1 <br> (following C)||GMC Yukon 2wd ('00-'06) [GMT800] |- |1 <br> (following K)||GMC Yukon 4wd ('00-'06) [GMT800] |- |1 <br> (following C)||GMC Yukon 2wd ('07-'08) [GMT900] |- |1 <br> (following K)||GMC Yukon 4wd ('07-'08) [GMT900] |- |1 <br> (following C)||GMC Yukon 2wd ('09) [GMT900] |- |1 <br> (following K)||GMC Yukon 4wd ('09) [GMT900] |- |1 <br> (following C)||GMC Yukon Hybrid 2wd ('09) [GMT900; 8th pos. of VIN is 5] |- |1 <br> (following K)||GMC Yukon Hybrid 4wd ('09) [GMT900; 8th pos. of VIN is 5] |- |2 <br> (following C)||GMC Yukon SLE 2wd ('09) [GMT900] |- |3 <br> (following C)||GMC Yukon SLT 2wd ('09) [GMT900] |- |2 <br> (following K)||GMC Yukon SLE 4wd ('09) [GMT900] |- |3 <br> (following K)||GMC Yukon SLT 4wd ('09) [GMT900] |- |1 <br> (following K)||GMC Yukon Denali 4wd (Early '00) [GMT400; 8th pos. of VIN is R] |- |6 <br> (following K)||GMC Yukon Denali 4wd (Mid '00) [GMT400; 8th pos. of VIN is R] |- |6 <br> (following K)||GMC Yukon Denali 4wd ('01-'06) [GMT800] |- |6 <br> (following C)||GMC Yukon Denali 2wd ('08) [GMT900] |- |6 <br> (following K)||GMC Yukon Denali 4wd ('07-'08) [GMT900] |- |0 <br> (following C)||GMC Yukon Denali 2wd ('09) [GMT900] |- |0 <br> (following K)||GMC Yukon Denali 4wd ('09) [GMT900] |- |1 <br> (following K)||GMC Yukon Denali 4wd ('09) [GMT900; 8th pos. of VIN is 2] |- |1 <br> (following C)||GMC Yukon Denali Hybrid 2wd ('09) [GMT900; 8th pos. of VIN is 5] |- |1 <br> (following K)||GMC Yukon Denali Hybrid 4wd ('09) [GMT900; 8th pos. of VIN is 5] |- |1 <br> (following C)||GMC Yukon XL 1500 series 2wd ('00-'08) |- |2 <br> (following C)||GMC Yukon XL 2500 series 2wd ('00-'08) |- |6 <br> (following C)||GMC Yukon XL Denali 1500 series 2wd ('08) |- |1 <br> (following K)||GMC Yukon XL 1500 series 4wd ('00-'08) |- |2 <br> (following K)||GMC Yukon XL 2500 series 4wd ('00-'08) |- |6 <br> (following K)||GMC Yukon XL Denali 1500 series 4wd ('01-'08) |- |1 <br> (following C)||GMC Yukon XL 1500 series 2wd ('09) |- |2 <br> (following C)||GMC Yukon XL 1500 series SLE 2wd ('09) |- |3 <br> (following C)||GMC Yukon XL 1500 series SLT 2wd ('09) |- |4 <br> (following C)||GMC Yukon XL 2500 series 2wd ('09) |- |5 <br> (following C)||GMC Yukon XL 2500 series SLE 2wd ('09) |- |6 <br> (following C)||GMC Yukon XL 2500 series SLT 2wd ('09) |- |0 <br> (following C)||GMC Yukon XL Denali 1500 series 2wd ('09) |- |1 <br> (following K)||GMC Yukon XL 1500 series 4wd ('09) |- |2 <br> (following K)||GMC Yukon XL 1500 series SLE 4wd ('09) |- |3 <br> (following K)||GMC Yukon XL 1500 series SLT 4wd ('09) |- |4 <br> (following K)||GMC Yukon XL 2500 series 4wd ('09) |- |5 <br> (following K)||GMC Yukon XL 2500 series SLE 4wd ('09) |- |6 <br> (following K)||GMC Yukon XL 2500 series SLT 4wd ('09) |- |0 <br> (following K)||GMC Yukon XL Denali 1500 series 4wd ('09) |- |1 <br> (following K)||GMC Yukon XL Denali 1500 series 4wd ('09) [8th pos. of VIN is 2] |- |1 <br> (following S)||GMC Sonoma 2wd ('00-'03) |- |1 <br> (following T)||GMC Sonoma 4wd ('00-'04) |- |1 <br> (following S)||GMC Canyon 2wd ('04-'07) |- |1 <br> (following T)||GMC Canyon 4wd ('04-'07) |- |1 <br> (following C)||GMC Sierra 1500 2wd ('00-'06), Sierra Classic 1500 2wd ('07) [GMT800] |- |1 <br> (following K)||GMC Sierra 1500 4wd ('00-'06), Sierra Classic 1500 4wd ('07) [GMT800] |- |1 <br> (following C)||GMC Sierra 1500HD 2wd ('01-'03, '05-'06), Sierra Classic 1500HD 2wd ('07) [GMT800] (Pos. 8 of VIN is U] |- |1 <br> (following K)||GMC Sierra 1500HD 4wd ('01-'03, '05-'06), Sierra Classic 1500HD 2wd ('07) [GMT800] (Pos. 8 of VIN is U] |- |6 <br> (following K)||GMC Sierra C3 1500 Awd ('01) [GMT800] |- |6 <br> (following K)||GMC Sierra Denali 1500 Awd ('02-'06), Sierra Classic Denali 1500 Awd ('07) [GMT800] |- |2 <br> (following C)||GMC Sierra 2500 2wd ('00) [GMT800] (Pos. 8 of VIN is T or U] |- |2 <br> (following K)||GMC Sierra 2500 4wd ('00) [GMT800] (Pos. 8 of VIN is U] |- |2 <br> (following C)||GMC Sierra Classic C2500 2wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R) |- |3 <br> (following C)||GMC Sierra Classic C3500 2wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R) |- |3 <br> (following C)||when 4th pos. of VIN is K: GMC Sierra C3500HD 2wd ('00-'02) [GMT400] |- |2 <br> (following K)||GMC Sierra Classic K2500 4wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R) |- |3 <br> (following K)||GMC Sierra Classic K3500 4wd ('00) [GMT400] (Pos. 8 of VIN is F, J, or R) |- |2 <br> (following C)||GMC Sierra 2500 2wd ('01-'06), Sierra Classic 2500 2wd ('07) [GMT800] |- |2 <br> (following K)||GMC Sierra 2500 4wd ('01-'06), Sierra Classic 2500 4wd ('07) [GMT800] |- |3 <br> (following C)||GMC Sierra 3500 2wd ('01-'06), Sierra Classic 3500 2wd ('07) [GMT800] |- |3 <br> (following K)||GMC Sierra 3500 4wd ('01-'06), Sierra Classic 3500 4wd ('07) [GMT800] |- |0 <br> (following V)||Saturn Relay ''2'' 2wd ('05-'07) |- |2 <br> (following V)||Saturn Relay ''3'' 2wd ('05-'07) |- |5 <br> (following V)||Saturn Relay ''1'' 2wd ('07) |- |2 <br> (following X)||Saturn Relay ''3'' Awd ('05-'06) |- |2 <br> (following Z)||Saturn Vue I4, Man. Trans., Fwd ('02-'07) |- |3 <br> (following Z)||Saturn Vue I4, Auto. Trans., Fwd ('02-'07) |- |4 <br> (following Z)||Saturn Vue I4, Auto. Trans., Awd ('02-'05) |- |5 <br> (following Z)||Saturn Vue V6, Auto. Trans., Fwd ('03-'07) |- |6 <br> (following Z)||Saturn Vue V6, Auto. Trans., Awd ('02-'07) |- |3 <br> (following L)||Saturn Vue XE Fwd ('08-'09) |- |4 <br> (following L)||Saturn Vue XE Awd ('08-'09) |- |5 <br> (following L)||when 4th pos. of VIN is C: Saturn Vue XR Fwd ('08-'09) |- |7 <br> (following L)||Saturn Vue XR Awd (Early '08) |- |6 <br> (following L)||Saturn Vue XR Awd (Mid '08-'09) |- |5 <br> (following L)||when 4th pos. of VIN is D: Saturn Vue XR Awd ('09) |- |1 <br> (following L)||Saturn Vue Red Line Fwd ('08-'09) |- |9 <br> (following L)||Saturn Vue Red Line Awd ('08) |- |0 <br> (following L)||Saturn Vue Red Line Awd ('09) |- |0 <br> (following L)||Saturn Vue Green Line Fwd ('08) |- |9 <br> (following L)||Saturn Vue Green Line Fwd ('09) |- |1 <br> (following R)||Saturn Outlook XE 2wd ('07-'09) |- |2 <br> (following R)||Saturn Outlook XR 2wd ('07-'09) |- |3 <br> (following R)||Saturn Outlook XR 2wd w/Touring Package ('07-'09) |- |1 <br> (following V)||Saturn Outlook XE Awd ('07-'09) |- |2 <br> (following V)||Saturn Outlook XR Awd ('07-'09) |- |3 <br> (following V)||Saturn Outlook XR Awd w/Touring Package ('07-'09) |- |1 <br> (following N)||Hummer H3 ('06-'07) |- |1 <br> (following N)||Hummer H3 Base model ('08) |- |3 <br> (following N)||Hummer H3 Adventure ('08) |- |4 <br> (following N)||Hummer H3 Luxury ('08) |- |5 <br> (following N)||Hummer H3 X ('08) |- |6 <br> (following N)||Hummer H3 Alpha ('08) |- |1 <br> (following N)||Hummer H3, H3T ('09) |- |2 <br> (following N)||Hummer H2 ('03-'08), H2 SUT ('05-'08) |- |2 <br> (following N)||Hummer H2 Base model ('09), H2 SUT Base model ('09) |- |7 <br> (following N)||Hummer H2 Adventure ('09) |- |8 <br> (following N)||Hummer H2 Luxury ('09) |- |9 <br> (following N)||Hummer H2 SUT Adventure ('09) |- |0 <br> (following N)||Hummer H2 SUT Luxury ('09) |- |1 (following S)||Isuzu Hombre 2wd ('00), Isuzu i280 2wd ('06), Isuzu i290 2wd ('07-'08), Isuzu i370 2wd ('07-'08) |- |2 (following S)||Isuzu i290 2wd w/Preferred Equip. Pkg. ('08), Isuzu i370 2wd w/Comfort Pkg. or upgrade model ('08) |- |1 (following T)||Isuzu Hombre 4wd ('00), Isuzu i350 4wd ('06), Isuzu i370 4wd ('07-'08) |- |2 (following T)||Isuzu i370 4wd w/Comfort Pkg. ('08) |- |1 (following S)||Isuzu Ascender 2wd ('03-'08) |- |1 (following T)||Isuzu Ascender 4wd ('03-'08) |- |1 (following T)||Saab 9-7X ('05-'08: All, '09: 4.2i, 5.3i) |- |2 (following T)||Saab 9-7X Aero ('09) |} ====Body style codes 1981-2009 Light Duty Truck & Multi-Purpose Passenger Vehicle==== The Body type is specified as character 7 of the American GM VIN for light trucks. {| border=1 style="margin:auto;" !VIN !Description |- |0||Sedan Pickup/Pickup Delivery ('81-'87 El Camino, Caballero) |- |0||Cadillac, Buick, Chevrolet Commercial Body/Chassis |- |0||Chassis Only |- |1||Cutaway Van |- |2||Forward Control ('81-'03) (includes '93-'95 Chevy G30HD/GMC G3500HD) |- |2||Sport Utility Truck (SUT) ('04-'09 Avalanche & Escalade EXT, '04-'05 Envoy XUV, '05-'09 Hummer H2 SUT) |- |3||Four-Door Cab pickup (Crew Cab) (includes '06-'08 Isuzu i-Series Crew Cab, '09 Hummer H3T) |- |3||4-door Passenger Minivan ('97-'09 U-bodies) |- |3||4-door SUV or MPV ('06-'09 HHR) (also includes '02-'03 Avalanche & Escalade EXT) ('05-'09 Saab 9-7X) |- |4||Two-Door Cab pickup (includes '83-'87 S-10/S-15 extended cab pickups, '03-'06 Chevy SSR, '96-'00 Isuzu Hombre Reg. Cab) |- |5||Van (Astro/Safari & full-size vans & '07-'09 HHR Panel) |- |6||Extended length 4-door SUV (Suburban, Yukon XL, Escalade ESV, Trailblazer EXT, Envoy XL, Isuzu Ascender 7-psgr.) |- |6||3-door Passenger Minivan ('90-'99 U-bodies) |- |7||Motor Home Chassis ('81-'09) |- |8||Two-Door SUV (Utility) (2-d Tracker, S-10 Blazer, S-15 Jimmy, Blazer, Jimmy, Tahoe, Yukon) |- |9||Stake (81-87) |- |9||Extended Cab pickup ('88-) (includes '97-'00 Isuzu Hombre Spacecab, '06-'08 Isuzu i-Series Ext. Cab) |- |9||Extended length van ('90-) (Astro/Safari & full-size vans) |} ===American VIN format 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle=== GM's VIN format is as follows: <table border=1 style="margin:auto;"> <tr> <th>Position</th> <th>Sample</th><th></th><th></th><th>Description</th> </tr><tr> <td>1</td> <td>1</td><td></td><td></td><td rowspan=3>[[#GM WMIs|World Manufacturer Identifier]]</td> </tr><tr> <td>2</td> <td>G</td><td></td><td></td></tr><tr> <td>3</td> <td>K</td><td></td><td></td></tr><tr> <td>4</td> <td>L</td><td></td><td></td><td>[[#GVWR/Brake System/Body Style 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle|GVWR/Brake System/Body Style 2010-]]</td> </tr><tr> <td>5</td> <td>R</td><td></td><td></td><td>[[#Line & Chassis Type 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle|Line & Chassis Type for 2010-]]</td> </tr><tr> <td>6</td> <td>L</td><td></td><td></td><td>[[#Series 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle|Series 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle]]</td> </tr><tr> <td>7</td> <td>E</td><td></td><td></td><td>[[#Restraint codes for light trucks 2010-|Restraint type]]</td> </tr><tr> <td>8</td> <td>D</td><td></td><td></td><td>[[#Engine codes for light trucks|Engine type]]</td> </tr><tr> <td>9</td> <td>0</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Check digit |Check digit]]</td> </tr><tr> <td>10</td> <td>A</td><td></td><td></td><td>[[Vehicle Identification Numbers (VIN codes)/Model year|Model year]]</td> </tr><tr> <td>11</td> <td>J</td><td></td><td></td><td>[[#GM factories supplying North America|Factory ID]]</td> </tr><tr> <td>12</td> <td>1</td><td></td><td></td><td rowspan=6>Sequential number </tr><tr> <td>13</td> <td>2</td><td></td><td></td></tr><tr> <td>14</td> <td>3</td><td></td><td></td></tr><tr> <td>15</td> <td>7</td><td></td><td></td></tr><tr> <td>16</td> <td>6</td><td></td><td></td></tr><tr> <td>17</td> <td>2</td><td></td><td></td> </table> ====GVWR/Brake System/Body Style 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle==== The GVWR/Brake System is specified as character 4 of the American GM VIN for light trucks. {| border=1 style="margin:auto;" !VIN !GVWR Range in lbs. & Weight Class !Brake System !Body Style |- | ||Class A: 0-3,000||Hydraulic|| |- | ||Class B: 3,001-4,000||Hydraulic|| |- |A||Class C: 4,001-5,000||Hydraulic||26: 4-door SUV or MPV ('10-'11 Chevy HHR Panel, '10-'26 Chevy Equinox, GMC Terrain, '10 Saturn Vue,<br> '12-'15 Chevy Captiva Sport, '19-'24 Cadillac XT4, '24-'26 Buick Encore GX) |- |B||Class C: 4,001-5,000||Hydraulic||46: 4-door MPV ('10-'11 Chevy HHR) |- |J||Class C: 4,001-5,000||Hydraulic||48: 4-door, 4 window Hatchback ('18-'23 Chevy Bolt EV w/Rear Seat Delete pkg. - incomplete vehicle) |- |C||Class C: 4,001-5,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10-'12 Chevy Colorado, GMC Canyon) |- |D||Class C: 4,001-5,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10-'12 Chevy Colorado, GMC Canyon) |- |E||Class C: 4,001-5,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10-'12 Chevy Colorado, GMC Canyon) |- |7||Class C: 4,001-5,000||Hydraulic||75: Four-Door Wagon - High Roof Monocab (Canada only: '12-'14 Chevy Orlando) |- |M||Class C: 4,001-5,000||Hydraulic||06: 4-door SUV ('20-'23 Buick Encore GX) |- |9||Class C: 4,001-5,000||Hydraulic||56: 4-door SUV Extended ('21-'26 Chevy Trailblazer) |- |7||Class C: 4,001-5,000||Hydraulic||58: 4-door Utility Extended ('24-'26 Chevy Trax, Buick Envista) |- |C||Class C: 4,001-5,000||Hydraulic||76: 4-door SUV ('13-'22 Buick Encore, Canada only: '13-'14 Chevy Trax, US & Canada: '15-'22 Chevy Trax) |- |F||Class D: 5,001-6,000||Hydraulic||26: 4-door SUV ('10-'17 Chevy Equinox, GMC Terrain, '10 Saturn Vue, '10-'16 Cadillac SRX, '11 Saab 9-4X,<br> '12-'13 Chevy Captiva Sport, '16-'26 Buick Envision, '17 Cadillac XT5, '19-'25 Cadillac XT4) |- |H||Class D: 5,001-6,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Colorado, GMC Canyon) |- |G||Class D: 5,001-6,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('11-'12 Chevy Colorado, GMC Canyon) |- |J||Class D: 5,001-6,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Colorado, GMC Canyon) |- |H||Class D: 5,001-6,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'12 Chevy Colorado, GMC Canyon) |- |G||Class D: 5,001-6,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('15-'24 Chevy Colorado, '15-'22 GMC Canyon) |- |K||Class D: 5,001-6,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Colorado, GMC Canyon) |- |J||Class D: 5,001-6,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'12 Chevy Colorado, GMC Canyon) |- |H||Class D: 5,001-6,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('15-'22 Chevy Colorado, GMC Canyon) |- |T||Class D: 5,001-6,000||Hydraulic||69: Commercial Chassis ('10 Cadillac DTS chassis for Limo/Hearse) |- |7||Class D: 5,001-6,000||Hydraulic||69: Commercial Chassis ('11 Cadillac DTS chassis for Limo/Hearse) |- |L||Class E: 6,001-7,000||Hydraulic||26: 4-door SUV ('10 Chevy Traverse, GMC Acadia, Buick Enclave, Saturn Outlook) |- |K||Class E: 6,001-7,000||Hydraulic||26: 4-door SUV ('11-'17 Chevy Traverse, Buick Enclave, '11-'23 GMC Acadia, '17 Acadia Limited,<br> '17-'26 Cadillac XT5, '19-'26 Chevy Blazer, '20-'25 Cadillac XT6, '23-'26 Cadillac Lyriq EV,<br> '24-'26 Chevy Blazer EV, '25-'26 Cadillac Optiq EV, '24-'26 Honda Prologue EV, '24 Acura ZDX EV A-Spec) |- |7||Class E: 6,001-7,000||Hydraulic||48: 4-door SUV ('24-'25 Chevy Equinox EV) |- |E||Class E: 6,001-7,000||Hydraulic||56: 4-door SUV Extended ('18-'26 Chevy Traverse, Buick Enclave, '24 Chevy Traverse Limited,<br> '24-'26 GMC Acadia |- |M||Class E: 6,001-7,000||Hydraulic||05: Cargo Van ('10 Chevy Express, GMC Savana) |- |L||Class E: 6,001-7,000||Hydraulic||05: Cargo Van ('11-'14 Chevy Express, GMC Savana) |- |M||Class E: 6,001-7,000||Hydraulic||06: 4-door SUV ('10 Chevy Tahoe, GMC Yukon, Hummer H3) |- |L||Class E: 6,001-7,000||Hydraulic||06: 4-door SUV ('11-'20 Chevy Tahoe Police Pursuit Vehicle 2wd) |- |N||Class E: 6,001-7,000||Hydraulic||36: Sport Utility Truck (SUT) ('10 Chevy Avalanche 2wd) |- |M||Class E: 6,001-7,000||Hydraulic||36: Sport Utility Truck (SUT) ('11-13 Chevy Avalanche 2wd) |- |P||Class E: 6,001-7,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra) |- |N||Class E: 6,001-7,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '22 Chevy Silverado LTD, GMC Sierra Limited) |- |R||Class E: 6,001-7,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra, Hummer H3T) |- |P||Class E: 6,001-7,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '22 Chevy Silverado LTD, GMC Sierra Limited, '16-'26 Chevy Colorado, GMC Canyon) |- |S||Class E: 6,001-7,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra) |- |R||Class E: 6,001-7,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '19 Chevy Silverado LD, GMC Sierra Limited, '22 Chevy Silverado LTD, GMC Sierra Limited,<br> '16-'22 Chevy Colorado) |- |G||Class E: 6,001-7,000||Hydraulic||69: Commercial Chassis ('10 Cadillac DTS chassis for Limo/Hearse) |- |8||Class E: 6,001-7,000||Hydraulic||69: Commercial Chassis ('11 Cadillac DTS chassis for Limo/Hearse) |- |X||Class E: 6,001-7,000||Hydraulic||69: Commercial Chassis ('13-'19 Cadillac XTS chassis for Limo/Hearse) |- |U||Class F: 7,001-8,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('10 Chevy Express, GMC Savana) |- |S||Class F: 7,001-8,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('11-'14 Chevy Express, GMC Savana) |- |U||Class F: 7,001-8,000||Hydraulic||06: Passenger Van ('10 Chevy Express, GMC Savana) |- |S||Class F: 7,001-8,000||Hydraulic||06: Passenger Van ('11-'14 Chevy Express, GMC Savana) |- |U||Class F: 7,001-8,000||Hydraulic||06: 4-door SUV ('10 Chevy Tahoe, Suburban 1500, GMC Yukon, Yukon XL 1500, Cadillac Escalade, Escalade ESV) |- |S||Class F: 7,001-8,000||Hydraulic||06: 4-door SUV ('11-'26 Chevy Tahoe, Suburban 1500, GMC Yukon, Yukon XL 1500, Cadillac Escalade, Escalade ESV) |- |V||Class F: 7,001-8,000||Hydraulic||36: Sport Utility Truck (SUT) ('10 Chevy Avalanche 4wd, Cadillac Escalade EXT 4wd) |- |T||Class F: 7,001-8,000||Hydraulic||36: Sport Utility Truck (SUT) ('11-'13 Chevy Avalanche 4wd, Cadillac Escalade EXT 4wd) |- |X||Class F: 7,001-8,000||Hydraulic||26: 4-door SUV ('24 Acura ZDX EV Type S) |- |C||Class F: 7,001-8,000||Hydraulic||56: 4-door SUV Extended ('26- Cadillac Vistiq EV) |- |W||Class F: 7,001-8,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra) |- |X||Class F: 7,001-8,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra) |- |U||Class F: 7,001-8,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '22 Chevy Silverado LTD, GMC Sierra Limited) |- |Y||Class F: 7,001-8,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra) |- |V||Class F: 7,001-8,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '19 Chevy Silverado LD, GMC Sierra Limited, '22 Chevy Silverado LTD, GMC Sierra Limited) |- |U||Class F: 7,001-8,000||Hydraulic||69: Commercial Chassis ('10 Cadillac DTS chassis for Limo/Hearse) |- |9||Class F: 7,001-8,000||Hydraulic||69: Commercial Chassis ('11 Cadillac DTS chassis for Limo/Hearse) |- |Z||Class G: 8,001-9,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('10 Chevy Express, GMC Savana) |- |W||Class G: 8,001-9,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('11-'26 Chevy Express, GMC Savana) |- |Z||Class G: 8,001-9,000||Hydraulic||06: Passenger Van ('10 Chevy Express, GMC Savana) |- |W||Class G: 8,001-9,000||Hydraulic||06: Passenger Van ('11-'26 Chevy Express, GMC Savana) |- |Z||Class G: 8,001-9,000||Hydraulic||06: 4-door SUV ('10 Chevy Suburban 2500, GMC Yukon XL 2500) |- |W||Class G: 8,001-9,000||Hydraulic||06: 4-door SUV ('11-'13 Chevy Suburban 2500, GMC Yukon XL 2500) |- |2||Class H: 9,001-10,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('10 Chevy Express, GMC Savana) |- |Z||Class H: 9,001-10,000||Hydraulic||05: Cargo Van or Incomplete Vehicle ('11-'26 Chevy Express, GMC Savana,<br> '23-'24 BrightDrop Zevo 600, '24 BrightDrop Zevo 400, '25-'26 Chevrolet BrightDrop 400/600) |- |2||Class H: 9,001-10,000||Hydraulic||06: Passenger Van ('10 Chevy Express, GMC Savana) |- |Z||Class H: 9,001-10,000||Hydraulic||06: Passenger Van ('11-'26 Chevy Express, GMC Savana) |- |3||Class H: 9,001-10,000||Hydraulic||03: Van Cutaway ('10 Chevy Express, GMC Savana) |- |0||Class H: 9,001-10,000||Hydraulic||03: Van Cutaway ('11-'26 Chevy Express, GMC Savana) |- |3||Class H: 9,001-10,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra) |- |0||Class H: 9,001-10,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra) |- |4||Class H: 9,001-10,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra) |- |1||Class H: 9,001-10,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '24-'25 GMC Hummer EV pickup w/20 module battery pack,<br> '24-'26 Chevy Silverado EV, '25-'26 GMC Sierra EV) |- |5||Class H: 9,001-10,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra) |- |2||Class H: 9,001-10,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'13, '15-'26 Chevy Silverado, GMC Sierra) |- |B||Class H: 9,001-10,000||Hydraulic||26: 4-door SUV ('24-'25 GMC Hummer EV SUV) |- |6||Class 3: 10,001-14,000||Hydraulic||03: Van Cutaway ('10 Chevy Express, GMC Savana) |- |3||Class 3: 10,001-14,000||Hydraulic||03: Van Cutaway ('11-'26 Chevy Express, GMC Savana) |- |6||Class 3: 10,001-14,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra) |- |3||Class 3: 10,001-14,000||Hydraulic||03: Regular Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra) |- |7||Class 3: 10,001-14,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra) |- |4||Class 3: 10,001-14,000||Hydraulic||43: Crew Cab pickup or Chassis Cab ('11-'26 Chevy Silverado, GMC Sierra,<br> '22-'24 GMC Hummer EV pickup w/24 module battery pack, '25 GMC Hummer EV pickup w/20 or 24 module battery pack, '26 GMC Hummer EV pickup, '24-'25 Chevy Silverado EV, GMC Sierra EV) |- |8||Class 3: 10,001-14,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('10 Chevy Silverado, GMC Sierra) |- |5||Class 3: 10,001-14,000||Hydraulic||53: Extended Cab pickup or Chassis Cab ('11-'13, '15-'18, '20-'26 Chevy Silverado, GMC Sierra) |- |8||Class 3: 10,001-14,000||Hydraulic||06: 4-door SUV ('16-'19, '24-'26 Chevy Suburban 3500HD) |- |8||Class 3: 10,001-14,000||Hydraulic||05: Cargo Van ('22 BrightDrop EV600, '23-'24 BrightDrop Zevo 600, '24 BrightDrop Zevo 400,<br> '25-'26 Chevrolet BrightDrop 400/600) |- |T||Class 3: 10,001-14,000||Hydraulic||26: 4-door SUV ('25-'26 GMC Hummer EV SUV, '25-'26 Cadillac Escalade IQ [EV]) |- |L||Class 3: 10,001-14,000||Hydraulic||56: 4-door SUV Extended ('26- Cadillac Escalade IQL [EV]) |- |9||Class 4: 14,001-16,000||Hydraulic||03: Van Cutaway ('10 Chevy Express, GMC Savana) |- |6||Class 4: 14,001-16,000||Hydraulic||03: Van Cutaway ('11-'26 Chevy Express, GMC Savana) |- | ||Class 5: 16,001-19,500||Hydraulic|| |} ====Line & Chassis Type 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle==== The Line & Chassis Type is specified as character 5 of the American GM VIN for light trucks. {| border=1 style="margin:auto;" !VIN !Description |- |A||Chevrolet HHR ('10-'11), HHR Panel ('10-'11) |- |A||Chevy Silverado 1500 2wd ('22-'26), Silverado HD 2500/3500 2wd ('25-'26) |- |B||Chevy Blazer 2wd & Awd '19-'26 |- |C||Chevy Silverado 2wd ('10-'18), Silverado LD 1500 2wd '19, Silverado HD 2500/3500 2wd '19, GMC Sierra 2wd ('10) |- |C||Chevy Tahoe 2wd ('10-'24), Suburban 2wd ('10-'24), Avalanche 2wd ('10-'13),<br /> GMC Yukon 2wd ('10), Yukon XL 2wd ('10), Cadillac Escalade 2wd ('10), Escalade ESV 2wd ('10) |- |D||Chevy Silverado 1500 4wd ('22-'24) |- |D||Chevy Blazer EV ('24-'26), Chevy Equinox EV ('24-'26) |- |E||Cadillac Escalade IQ [EV] ('25-'26), Escalade IQL [EV] ('26-), GMC Hummer EV pickup ('26-), GMC Hummer EV SUV ('26-), GMC Sierra EV ('26-) |- |F||Chevy Bolt EV w/Rear Seat Delete pkg. - incomplete vehicle ('18-'23) |- |G||Cadillac Chassis for Limousine & for Armored Vehicle (Based on XTS '13-'19) |- |G||Cadillac Chassis for Hearse (Based on XTS '13-'19) |- |G||Chevy Express 2wd ('10-'26), GMC Savana 2wd ('10) |- |H||Chevy Express 4wd ('10-'14), GMC Savana 4wd ('10) |- |H||GMC Sierra 1500 2wd ('22-'26), Sierra HD 2500/3500 2wd ('25-'26) |- |H||Honda Prologue EV ('24-'26), Acura ZDX EV ('24) |- |J||Buick Encore 2wd & Awd ('13-'22), Chevy Trax 2wd & Awd (Canada: '13-'22, US: '15-'22) |- |J||BrightDrop EV600 ('22), BrightDrop Zevo 600 ('23-'24), BrightDrop Zevo 400 ('24), Chevrolet BrightDrop 400/600 ('25-'26) |- |K||Chevy Silverado 4wd ('10-'18), Silverado LD 1500 4wd ('19), Silverado HD 2500/3500 4wd ('19), GMC Sierra 4wd ('10) |- |K||Chevy Silverado 1500 4wd ('25-'26), Silverado HD 2500/3500 4wd ('25-'26) |- |K||Chevy Tahoe 4wd ('10-'24), Suburban 4wd ('10-'24), Suburban HD 4wd ('24-'26), Avalanche 4wd ('10-'13), GMC Yukon 4wd ('10), Yukon XL 4wd ('10),<br> Cadillac Escalade 4wd ('10), Escalade ESV 4wd ('10), Escalade EXT 4wd ('10) |- |K||Cadillac Professional Chassis for Limousine (Based on DTS '10-'11) |- |K||Cadillac Commercial Chassis for Hearse (Based on DTS '10-'11) |- |L||Chevy Equinox 2wd & Awd '10-'17, Captiva Sport 2wd '12-'15, Captiva Sport Awd '12, GMC Terrain 2wd & Awd '10-'17, Saturn Vue 2wd & Awd '10 |- |L||GMC Terrain 2wd & Awd '18-'26 |- |L||Buick Envista '24-'26, Chevy Trax '24-'26 |- |M||Buick Encore GX 2wd & Awd ('20-'26), Chevy Trailblazer 2wd & Awd ('21-'26) |- |N||Cadillac SRX 2wd & Awd '10-'16, Saab 9-4X 2011 |- |N||GMC Acadia 2wd & Awd '17-'26, Cadillac XT5 2wd & Awd '17-'26 |- |N||Hummer H3, H3T 2010 |- |P||Chevy Orlando (Canada only: '12-'14) |- |P||Cadillac XT6 2wd & Awd '20-'25 |- |P||Cadillac Lyriq EV 2wd & Awd '23-'25 |- |R||GMC Acadia 2wd '10-'16, Acadia Limited 2wd '17, Saturn Outlook 2wd '10, Buick Enclave 2wd '10-'17, Chevy Traverse 2wd '10-'17 |- |R||Buick Enclave 2wd '18-'24, Chevy Traverse 2wd '18-'23 |- |R||Buick Enclave 2wd '25-'26, Chevy Traverse 2wd '24-'26 |- |S||Chevy Traverse Limited 2wd '24 |- |S||Chevy Colorado 2wd ('10-'12, '15-'26), GMC Canyon 2wd ('10) |- |T||Chevy Colorado 4wd ('10-'12, '15-'26), GMC Canyon 4wd ('10) |- |T||Chevy Traverse Limited Awd '24 |- |U||GMC Sierra 1500 4wd ('22-'26), Sierra HD 2500/3500 4wd ('25-'26) |- |V||GMC Acadia Awd '10-'16, Acadia Limited Awd '17, Saturn Outlook Awd '10, Buick Enclave Awd '10-'17, Chevy Traverse Awd '10-'17 |- |V||Buick Enclave Awd '18-'24, Chevy Traverse Awd '18-'23 |- |V||Buick Enclave Awd '25-'26, Chevy Traverse Awd '24-'26 |- |W||Chevy Silverado 1500 2wd ('19-'21), Silverado LTD 1500 2wd ('22), Silverado HD 2500/3500 2wd ('20-'24) |- |X||Buick Envision 2wd & Awd '16-'20, Chevy Equinox 2wd & Awd '18-'26 |- |Y||Chevy Silverado 1500 4wd ('19-'21), Silverado LTD 1500 4wd ('22), Silverado HD 2500/3500 4wd ('20-'24) |- |Z||Cadillac XT4 2wd & Awd '19-'25, Buick Envision 2wd '21-'23, Buick Envision Awd '21-'26 |- |1||GMC Sierra 2wd ('11-'18), Sierra Limited 1500 2wd ('19), Sierra HD 2500/3500 2wd ('19), Yukon 2wd ('11-'26), Yukon XL 2wd ('11-'26) |- |1||GMC Canyon 2wd ('25-'26) |- |2||GMC Sierra 4wd ('11-'18), Sierra Limited 1500 4wd ('19), Sierra HD 2500/3500 4wd ('19), Yukon 4wd ('11-'26), Yukon XL 4wd ('11-'26) |- |2||GMC Canyon 4wd ('25-'26) |- |3||Cadillac Escalade 2wd ('11-'24), Escalade ESV 2wd ('11-'24) |- |3||Cadillac Optiq EV ('25-), Cadillac Vistiq EV ('26-) |- |4||Cadillac Escalade 4wd ('11-'24), Escalade ESV 4wd ('11-'24), Escalade EXT 4wd ('11-'13) |- |5||GMC Canyon 2wd ('11-'12, '15-'24) |- |5||Chevy Tahoe 2wd ('25-'26), Suburban 2wd ('25-'26) |- |6||GMC Canyon 4wd ('11-'12, '15-'24) |- |6||Chevy Tahoe 4wd ('25-'26), Suburban 4wd ('25-'26) |- |7||GMC Savana 2wd ('11-'26) |- |8||GMC Savana 4wd ('11-'14) |- |8||GMC Sierra 1500 2wd ('19-'21), Sierra Limited 1500 2wd ('22), Sierra HD 2500/3500 2wd ('20-'24) |- |8||Cadillac Escalade 2wd ('25-'26), Escalade ESV 2wd ('25-'26) |- |9||GMC Sierra 1500 4wd ('19-'21), Sierra Limited 1500 4wd ('22), Sierra HD 2500/3500 4wd ('20-'24) |- |9||Cadillac Escalade 4wd ('25-'26), Escalade ESV 4wd ('25-'26) |- |0||GMC Hummer EV pickup ('22-'25), GMC Hummer EV SUV ('24-'25), Chevy Silverado EV ('24-'26), GMC Sierra EV ('24-'25) |} ====Series 2010- Light Duty Truck & Multi-Purpose Passenger Vehicle==== The Series is specified as character 6 of the American GM VIN for light trucks. {| border=1 style="margin:auto;" !VIN !Description |- |A (following L)||Saturn Vue XE 2wd ('10) |- |E (following L)||Saturn Vue XR V6 2wd ('10) |- |K (following L)||Saturn Vue XR-L V6 2wd ('10) |- |T (following R)||Saturn Outlook XE 2wd ('10) |- |U (following R)||Saturn Outlook XE Premium 2wd ('10) |- |V (following R)||Saturn Outlook XR-L 2wd ('10) |- |W (following R)||Saturn Outlook XR-L Premium 2wd ('10) |- |T (following V)||Saturn Outlook XE Awd ('10) |- |U (following V)||Saturn Outlook XE Premium Awd ('10) |- |V (following V)||Saturn Outlook XR-L Awd ('10) |- |W (following V)||Saturn Outlook XR-L Premium Awd ('10) |- |G (following N)||Hummer H3, H3T Base model ('10) |- |H (following N)||Hummer H3, H3T Adventure ('10) |- |J (following N)||Hummer H3, H3T Luxury ('10) |- |K (following N)||Hummer H3, H3T Alpha w/cloth ('10) |- |L (following N)||Hummer H3, H3T Alpha w/Leather ('10) |- |P (following N)||Saab 9-4X 3.0i 2wd ('11) |- |R (following N)||Saab 9-4X 3.0i Awd ('11) |- |S (following N)||Saab 9-4X 3.0i Premium 2wd ('11) |- |T (following N)||Saab 9-4X 3.0i Premium Awd ('11) |- |U (following N)||Saab 9-4X Aero Awd ('11) |} ===Platform & Series Codes 1985- Passenger Car=== GM used a lettered system of automobile platform codes for three decades. These letters were used as the 4th position of the VIN. Though today's GM platforms use Greek characters, they are still encoded with Latin characters in the 4th position. Position 5 encodes the specific model and trim level of the vehicle. {| border=1 style="margin:auto;" !List of GM platforms !Platform<br>Code !Series<br>Code !:Category:General Motors vehicles|Model |- |rowspan=14|GM A platform |rowspan=14|A||W||Chevrolet Celebrity 1985-1990 |- |E||Pontiac 6000 ''SE'' 1986-1988 |- |F||Pontiac 6000 1985-1988, 6000 ''LE'' 1989-1991 |- |G||Pontiac 6000 ''LE'' 1985-1988 |- |H||Pontiac 6000 ''STE'' 1985-1989 |- |J||Pontiac 6000 ''SE'' 1989-1991 |- |G||Oldsmobile Cutlass Ciera ''S'' Sedan 1993-1994 |- |J||Oldsmobile Cutlass Ciera ''LS'' 1985, Cutlass Ciera 1986-1989 & Cutlass Cruiser 1985-1989,<br /> Cutlass Ciera ''S'' Coupe 1986-1987, Cutlass Ciera ''S'' 1990-1991 & Cutlass Cruiser ''S'' 1990-1994, Cutlass Ciera ''SL'' & Cutlass Cruiser ''SL'' 1995, Ciera ''SL'' sedan & wagon 1996 |- |L||Oldsmobile Cutlass Ciera 1990-1991, Cutlass Ciera ''S'' Sedan 1992 |- |M||Oldsmobile Cutlass Ciera ''Brougham'' 1985-1988, Cutlass Ciera ''SL'' Coupe 1986-1989, Cutlass Ciera ''SL'' Sedan 1989-1993, Cutlass Cruiser ''Brougham'' 1987-1988, Cutlass Cruiser ''SL'' 1989-1993 |- |S||Oldsmobile Cutlass Ciera ''International Series'' 1988-1990 |- |G||Buick Century ''T-Type'' 1985-1986, Century ''Special'' 1991-1996 |- |H||Buick Century ''Custom'' 1985-1995 |- |L||Buick Century ''Limited'' 1985-1993, Century Estate Wagon 1986-1989 |- |rowspan=14|GM B platform |rowspan=14|B||L||Chevrolet Impala 1985, Caprice 1986-1992, Caprice Classic 1993-1996, Impala SS 1995-96 |- |N||Chevrolet Caprice Classic 1985-1992, Caprice Classic LS 1993-1994,<br /> Caprice Classic LTZ 1991-1993, Impala SS 1994 |- |U||Chevrolet Caprice Classic Brougham/Brougham LS 1987-1990 |- |L||Pontiac Parisienne 1985-1986, Safari Wagon 1987-1989 |- |T||Pontiac Parisienne Brougham 1985-1986 |- |N||Oldsmobile Delta 88 Royale 1985 |- |P||Oldsmobile Custom Cruiser 1985-1992 |- |V||Oldsmobile Delta 88 Royale Brougham LS 1985 |- |Y||Oldsmobile Delta 88 Royale Brougham 1985 |- |N||Buick Le Sabre ''Custom'' 1985, Roadmaster sedan 1992-1996 |- |P||Buick Le Sabre ''Limited'' 1985 |- |R||Buick Le Sabre Estate Wagon 1985-1989, Estate Wagon 1990,<br /> Roadmaster Estate Wagon 1991-1996 |- |T||Buick Roadmaster ''Limited'' sedan 1992-1996 |- |V||Buick Electra Estate Wagon 1985-1989 |- |rowspan=13|GM C platform - front-wheel drive |rowspan=13|C |V||Oldsmobile Touring Sedan 1988-1990, 98 Touring Sedan 1991-1993 |- |W||Oldsmobile 98 Regency Brougham 1985-1990, 98 Regency Elite 1991-1996 |- |X||Oldsmobile 98 Regency 1985-1990, 1992-1994 |- |F||Buick Electra T-Type 1985-1990 |- |U||Buick Electra Park Avenue Ultra 1989-1990, Park Avenue Ultra 1991-1996 |- |W||Buick Electra Park Avenue 1985-1990, Park Avenue 1991-1996 |- |X||Buick Electra 1985-1986, Electra Limited 1987-1990 |- |B||1985-1992 Cadillac Fleetwood, Fleetwood D'Elegance, 1993 Cadillac Sixty Special |- |D||1985-1993 Cadillac DeVille |- |G||1991-1992 Cadillac Fleetwood Sixty Special |- |H||1985-1987 Cadillac Fleetwood Limousine |- |S||1987-1990 Cadillac Fleetwood Sixty Special |- |T||1991-1993 Cadillac DeVille Touring Sedan |- |rowspan=3|GM G platform (models formerly on C platform) |rowspan=3|C |- |U||Buick Park Avenue Ultra 1997-2005 |- |W||Buick Park Avenue 1997-2005 |- |rowspan=2|GM D platform |rowspan=2|D||W||1985-1986 Cadillac Fleetwood Brougham, 1987-1992 Cadillac Brougham |- |W||1993-1996 Cadillac Fleetwood |- |rowspan=31|GM Delta I platform |rowspan=31|A |- |A||Chevrolet Cobalt LS w/manual trans. 2010 |- |B||Chevrolet Cobalt LS w/automatic trans. 2010 |- |C||Chevrolet Cobalt 1LT w/manual trans. 2010 |- |D||Chevrolet Cobalt 1LT w/automatic trans. 2010 |- |E||Chevrolet Cobalt 2LT w/manual trans. 2010 |- |F||Chevrolet Cobalt 2LT w/automatic trans. 2010 |- |G||Chevrolet Cobalt SS Turbo 2010 |- |H||Chevrolet Cobalt (base model w/XFE) 2010 |- |K||Chevrolet Cobalt (base model) 2005, Cobalt LS 2006-2008, Cobalt LS w/man. trans. 2009 |- |L||Chevrolet Cobalt LS 2005, Cobalt LT 2006-2008, Cobalt LT w/manual trans. 2009 |- |M||Chevrolet Cobalt SS 2006-2007, Cobalt Sport 2008 |- |P||Chevrolet Cobalt SS Supercharged 2005-2007, SS Turbo 2008-2009 |- |S||Chevrolet Cobalt LS w/automatic trans. 2009 |- |T||Chevrolet Cobalt LT w/automatic trans. 2009 |- |Z||Chevrolet Cobalt LT 2005, Cobalt LTZ 2006-2007 |- |L||Pontiac G5 2007-2008, G5 w/manual trans. 2009 |- |N||Pontiac G5 GT 2007-2008, G5 GT w/manual trans. 2009 |- |S||Pontiac G5 w/automatic trans. 2009 |- |T||Pontiac G5 GT w/automatic trans. 2009 |- |F||Saturn Ion sedan Level 1 w/manual trans. 2003-2005 |- |G||Saturn Ion sedan Level 1 w/automatic trans. 2003-2005 |- |J||Saturn Ion sedan Level 2 w/automatic trans. 2003-2007 |- |K||Saturn Ion sedan Level 3 w/manual trans. 2003-2007 |- |L||Saturn Ion sedan Level 3 w/automatic trans. 2003-2007 |- |M||Saturn Ion coupe Level 2 w/manual trans. 2003-2007 |- |N||Saturn Ion coupe Level 2 w/automatic trans. 2003-2007 |- |V||Saturn Ion coupe Level 3 w/manual trans. 2003-2007 |- |W||Saturn Ion coupe Level 3 w/automatic trans. 2003-2007 |- |Y||Saturn Ion coupe Red Line 2004-2007 |- |Z||Saturn Ion sedan Level 2 w/manual trans. 2003-2007 |- |rowspan=9|GM E platform |rowspan=9|E |- |V||Oldsmobile Toronado Trofeo 1988-1992 |- |Z||Oldsmobile Toronado Brougham 1985-1986, Toronado 1987-1992 |- |C||Buick Reatta 1988-1991 |- |Y||Buick Riviera T-Type 1985-1986 |- |Z||Buick Riviera 1985-1993 |- |C||Cadillac Eldorado Collector Series 2002 |- |L||Cadillac Eldorado 1985-2002 |- |T||Cadillac Eldorado Touring Coupe 1994-2002 |- |rowspan=26|GM Epsilon I platform |rowspan=26|Z||A||Chevrolet Malibu Fleet 2010-2012 |- |B||Chevrolet Malibu LS 2010-2012 |- |C||Chevrolet Malibu 1LT 2010-2012 |- |D||Chevrolet Malibu 2LT 2010-2012 |- |E||Chevrolet Malibu LTZ 2010-2011, Malibu 1LZ 2012 |- |F||Chevrolet Malibu Hybrid 2008-2010, Malibu 3LT 2012 |- |G||Chevrolet Malibu LS 2008-2009, Malibu 2LZ 2012 |- |H||Chevrolet Malibu 1LT 2008-2009 |- |J||Chevrolet Malibu 2LT 2008-2009 |- |K||Chevrolet Malibu LTZ 2008-2009 |- |S||Chevrolet Malibu 2004-2005, Malibu LS 2006-2007, Malibu Classic LS 2008 |- |T||Chevrolet Malibu LS 2004-2005, Malibu LT 2006-2007, Malibu Classic LT 2008 |- |U||Chevrolet Malibu LT 2004-2005, Malibu LTZ 2006-2007 |- |W||Chevrolet Malibu SS 2006-2007 |- |A||Pontiac G6 Sedan 2010 |- |F||Pontiac G6 2.4L Sedan (Base model) 2006, G6 Value Leader (Base model w/1SV) 2007-2008 |- |G||Pontiac G6 3.5L Sedan (Base model) 2005-2006, G6 (Base model) 2007-2009 |- |H||Pontiac G6 GT 2005-2009 |- |J||Pontiac G6 (Base model) 2009 1/2 (Mid-Cycle Revision) |- |K||Pontiac G6 GT 2009 1/2 (Mid-Cycle Revision) |- |L||Pontiac G6 GXP 2009 1/2 (Mid-Cycle Revision) |- |M||Pontiac G6 GTP 2006-2007, G6 GXP 2008-2009 |- |R||Saturn Aura Green Line 2007-2009 |- |S||Saturn Aura XE 2007-2009 |- |V||Saturn Aura XR 2007-2008, Aura XR 2.4L 2009 |- |X||Saturn Aura XR V6 2009 |- |rowspan=6|GM F platform |rowspan=6|F||P||Chevrolet Camaro Sport Coupe 1985-2002, Convertible 1987-1992, 1994-2002 |- |S||Chevrolet Camaro Berlinetta 1985-1986 |- |S||Pontiac Firebird 1985-2002, Firebird ''Formula'' 1987-1992 |- |V||Pontiac Firebird ''Formula / Trans Am'' 1993-2002, Firebird ''Trans Am GT'' 1994 |- |W||Pontiac Firebird ''Trans Am'' 1985-1992, Firebird ''Trans Am GTA'' 1987-1992 |- |X||Pontiac Firebird ''S/E'' 1985-1986 |- |rowspan=13|GM G platform - rear-wheel drive |rowspan=13|G||Z||Chevrolet Monte Carlo 1985-1988 |- |J||Pontiac Grand Prix 1985-1987 |- |K||Pontiac Grand Prix LE 1985-1987 |- |N||Pontiac Bonneville 1985-1986 |- |P||Pontiac Grand Prix Brougham 1985-1987 |- |R||Pontiac Bonneville Brougham 1985-1986 |- |S||Pontiac Bonneville LE 1985-1986 |- |K||Oldsmobile Cutlass Salon coupe 1985-1987 |- |M||Oldsmobile Cutlass Supreme ''Brougham'' 1985-1987,<br /> Cutlass Supreme Classic ''Brougham'' 1988 |- |R||Oldsmobile Cutlass Supreme 1985-1987, Cutlass Supreme Classic 1988 |- |J||Buick Regal 1985-1987 |- |K||Buick Regal T-Type 1985-1987 |- |M||Buick Regal ''Limited'' 1985-1987 |- |rowspan=4|GM G platform - front-wheel drive |rowspan=4|G||D||1995-1999 Buick Riviera |- |R||1995-1999 Oldsmobile Aurora |- |R||2001-2002 Oldsmobile Aurora 3.5 |- |S||2001-2003 Oldsmobile Aurora 4.0 |- |rowspan=9|GM H platform |rowspan=9|H||H||Buick Le Sabre 1987 |- |P||Buick Le Sabre ''Custom'' 1986-1999 |- |R||Buick Le Sabre ''Limited'' 1986-1999 |- |C||Oldsmobile Regency 1997-1998, Eighty Eight 50th Anniversary Edition 1999 |- |N||Oldsmobile Delta 88 Royale 1986-1988, 88 Royale 1989-1995, Eighty Eight & Eighty Eight LS 1996-99 |- |Y||Oldsmobile Delta 88 Royale Brougham 1986-1988, 88 Royale Brougham 1989-91, Eighty Eight Royale LS 1992-1995, LSS 1996-1999 |- |X||Pontiac Bonneville 1987, Bonneville LE 1988-1991, Bonneville ''SE'' 1992-1999 |- |Y||Pontiac Bonneville SSE 1988-1991, Bonneville ''SSEi'' 1992-1993 |- |Z||Pontiac Bonneville LE 1987, Bonneville SE 1988-1991, Bonneville ''SSE'' 1992-1999, Bonneville ''SSEi'' 1994-1999 |- |rowspan=17|GM G platform (models formerly on H platform or their successors) |rowspan=17|H||A||Buick Lucerne ''CX'' 2010-2011 |- |B||Buick Lucerne ''CX-2'' 2010 |- |C||Buick Lucerne ''CXL'' 2010-2011 |- |D||Buick Lucerne ''CXL V6'' 2006-2009, Lucerne ''CXL Special Edition'' 2010 |- |E||Buick Lucerne ''CXS'' 2006-2008, Lucerne ''CXL-3'' 2010 |- |F||Buick Lucerne ''Super'' 2008-2009, Lucerne ''CXL-4'' 2010 |- |G||Buick Lucerne ''CXL-5'' 2010 |- |H||Buick Lucerne ''Super 1SP'' 2010 |- |J||Buick Lucerne ''CXL Premium'' 2010-2011 |- |K||Buick Lucerne ''Super 1XS'' 2010, Lucerne ''Super'' 2011 |- |P||Buick Lucerne ''CX'' 2006-2009 |- |R||Buick Lucerne ''CXL V8'' 2006-2007, Lucerne ''CXL Special Edition V8'' 2008 |- |P||Buick Le Sabre ''Custom'' 2000-2005 |- |R||Buick Le Sabre ''Limited'' 2000-2005 |- |X||Pontiac Bonneville ''SE'' 2000-2005 |- |Y||Pontiac Bonneville ''SLE'' 2000-2005 |- |Z||Pontiac Bonneville ''SSEi'' 2000-2003, Bonneville GXP 2004-2005 |- |rowspan=23|GM J platform |rowspan=23|J |- |C||Chevrolet Cavalier 1985-1994, RS Convertible 1991-1994 |- |D||Chevrolet Cavalier CS 1985-1987 |- |E||Chevrolet Cavalier Type 10 1985, RS 1986-1988,<br /> Type 10 Convertible 1985, RS Convertible 1986-1987 |- |F||Chevrolet Cavalier Z24 1986-1994, Z24 Convertible 1988-1989, 1992-1994 |- |C||Chevrolet Cavalier 1995-2005, Cavalier RS 1997-1999 |- |F||Chevrolet Cavalier LS Sedan 1995-2005, LS Coupe 2003-2005, Z24 Coupe 1995-2001,<br /> LS Convertible 1995-1997, Z24 Convertible 1998-2000 |- |H||Chevrolet Cavalier Z24 Coupe/Sedan 2002, LS Sport 2002-2005 |- |S||Chevrolet Cavalier LS Coupe 2002 |- |B||Pontiac Sunbird 1985-1989, Sunbird LE 1990-1991, Sunbird SE 1992-1993,<br /> Sunbird LE 1994 |- |C||Pontiac Sunbird LE 1985, Sunbird 1991, Sunbird LE 1992-1993 |- |D||Pontiac Sunbird SE 1985-1991, Sunbird GT 1992-1993 |- |L||Pontiac Sunbird SE 1994 |- |U||Pontiac Sunbird GT 1986-1991 |- |B||Pontiac Sunfire SE 1995-2002, Convertible 1995-2000, Sunfire 2003-2005 |- |D||Pontiac Sunfire GT 1995-2002 |- |C||Oldsmobile Firenza Base model 1985-1987, Firenza S 1985-1987, Firenza 1988 |- |D||Oldsmobile Firenza LX 1985-1987, Firenza SX 1985, Firenza LC, GT 1986-1987 |- |E||Buick Skyhawk T-Type 1985-1986 |- |S||Buick Skyhawk Custom 1985-1987, Skyhawk Sport 1986-1987, Skyhawk 1988-1989 |- |T||Buick Skyhawk Limited 1985-1987 |- |G||Cadillac Cimarron 1985-1988 |- |G, H||Toyota Cavalier (Japan only) |- |rowspan=8|GM2900 platform |rowspan=8|J||C||Saturn L-Series|2004 Saturn L300.1 |- |D||Saturn L-Series|2004 Saturn L300.2, 2005 Saturn L300 |- |L||Saturn L-Series|2004 Saturn L300.3 |- |R||Saturn L-Series|Saturn LS w/manual transmission '00/L100 w/manual transmission '01 |- |S||Saturn L-Series|Saturn LS w/automatic transmission '00/L100 w/automatic transmission '01-'02 |- |T||Saturn L-Series|Saturn LS1 w/manual transmission '00/L200 w/manual transmission '01-'03, LW200 w/manual trans. '02 |- |U||Saturn L-Series|Saturn LS1 w/automatic transmission '00/L200 w/automatic transmission '01-'03,<br> Saturn LW1 w/automatic transmission '00/LW200 w/automatic transmission '01-'03 |- |W||Saturn L-Series|Saturn LS2 '00, LW2 '00, L300 '01-'03, LW300 '01-'03 |- |rowspan=5|GM K platform |rowspan=5|K||D||Cadillac Deville 1994-1999 |- |E||Cadillac Deville D'Elegance 1997-1999 |- |F||Cadillac Deville Concours 1994-1999 |- |S||Cadillac Seville 1985-1993 / Cadillac Seville SLS 1994-1997 |- |Y||Cadillac Seville Touring Sedan / Cadillac Seville STS 1990-1997 |- |rowspan=9|GM G platform (models formerly on K platform) |rowspan=9|K||A||2010-2011 Cadillac DTS |- |D||2000-2005 Cadillac Deville, 2006-2009 Cadillac DTS, 2010-2011 DTS Luxury |- |E||2000-2005 Cadillac Deville DHS |- |F||2000-2005 Cadillac Deville DTS |- |H||2010-2011 Cadillac DTS Premium |- |P||2010-2011 Cadillac DTS Platinum |- |R||2010-2011 Cadillac DTS Livery |- |S|| 1998-2004 Cadillac Seville SLS |- |Y|| 1998-2003 Cadillac Seville STS |- |rowspan=33|GM Kappa platform |rowspan=33|M||A||Pontiac Solstice w/automatic transmission 2010 |- |B||Pontiac Solstice 2006-2007, Solstice w/manual transmission 2008-2009 |- |B||Pontiac Solstice GXP w/automatic transmission 2010 |- |C||Pontiac Solstice w/automatic transmission 2008 |- |D||Pontiac Solstice w/manual transmission 2010 |- |E||Pontiac Solstice GXP w/manual transmission 2010 |- |F||Pontiac Solstice GXP w/automatic transmission 2008 |- |G||Pontiac Solstice GXP 2007, Solstice GXP w/manual transmission 2008-2009 |- |K||Pontiac Solstice Street Edition w/manual transmission 2009 |- |N||Pontiac Solstice w/automatic transmission 2009 |- |S||Pontiac Solstice SCCA SSB Championship Edition (2.4L) 2008 |- |T||Pontiac Solstice SCCA T2 Championship Edition (2.0L Turbo) 2008 |- |T||Pontiac Solstice GXP w/automatic transmission 2009 |- |Z||Pontiac Solstice Street Edition w/automatic transmission 2009 |- |B||Saturn Sky 2007, Sky w/manual transmission 2008-2009 |- |B||Saturn Sky Redline w/automatic transmission 2010 |- |C||Saturn Sky w/automatic transmission 2008 |- |C||Saturn Sky Ruby Red (Merlot Jewel) Special Edition w/manual transmission 2009 |- |C||Saturn Sky Preferred w/automatic transmission 2010 |- |D||Saturn Sky Hydro Blue Special Edition w/manual transmission 2009 |- |E||Saturn Sky Redline w/manual transmission 2010 |- |F||Saturn Sky Redline w/automatic transmission 2008 |- |F||Saturn Sky Preferred w/manual transmission 2010 |- |G||Saturn Sky Redline 2007, Sky Redline w/manual transmission 2008-2009 |- |H||Saturn Sky Redline Ruby Red (Merlot Jewel) Special Edition w/manual transmission 2009 |- |L||Saturn Sky Redline Hydro Blue Special Edition w/manual transmission 2009 |- |N||Saturn Sky w/automatic transmission 2009 |- |P||Saturn Sky Ruby Red (Merlot Jewel) Special Edition w/automatic transmission 2009 |- |R||Saturn Sky Hydro Blue Special Edition w/automatic transmission 2009 |- |T||Saturn Sky Redline w/automatic transmission 2009 |- |V||Saturn Sky Redline Ruby Red (Merlot Jewel) Special Edition w/automatic transmission 2009 |- |X||Saturn Sky Redline Hydro Blue Special Edition w/automatic transmission 2009 |- |G||Opel GT 2007-2010, Daewoo G2X 2007-2009 |- |rowspan=8|GM L platform |rowspan=8|L |- |D||Chevrolet Corsica ''Base'' 1994-1996 |- |T||Chevrolet Corsica ''Base'' 1987-1989, Corsica ''LT'' 1990-1993 |- |V||Chevrolet Beretta ''Base'' 1987-1996 |- |W||Chevrolet Beretta "GT" 1989-1993 (RPO Z21) & Beretta ''Z26'' 1994-1996 (RPO Z04) |- |Z||Chevrolet Corsica ''LTZ'' 1989-1990 (RPO Z54) |- |Z||Chevrolet Beretta "GTZ" 1990-1993 (RPO Z04) |- |T||Pontiac Tempest (Canada only) |- |rowspan=5|GM M platform |rowspan=5|M||R||Chevrolet Sprint |- |R||Geo Metro LSi, Metro |- |R||Pontiac Firefly (Canada only) |- |S||Chevrolet Sprint ER |- |S||Geo Metro, Metro XFi |- |rowspan=32|GM N platform |rowspan=32|N |- |B||Oldsmobile Cutlass 1997, Cutlass ''GL'' 1998-1999 |- |C||Buick Skylark 4-door ''Custom'' 1987-1991 |- |D||Buick Skylark 4-door ''Limited'' 1987-1989, Skylark 4-door ''Luxury Edition'' 1990-1991 |- |D||Chevrolet Malibu 1997-2003, Chevrolet Classic 2004-2005 |- |E||Chevrolet Malibu ''LS'' 1997-2003 |- |E||Pontiac Grand Am 1985-1988, Grand Am ''LE'' 1989-1991 |- |E||Pontiac Grand Am ''SE'' 1992-2005 |- |F||Oldsmobile Calais 1985-1987, Cutlass Calais 1988, Cutlass Calais ''S'' 1989-1991 |- |F||Oldsmobile Achieva ''SL'' 1992-1994, Achieva ''SC'' 1994 |- |F||Oldsmobile Alero ''GLS'' 1999-2004 |- |F||Pontiac Grand Am ''SE1'' 2000-2004 |- |G||Oldsmobile Cutlass ''GLS'' 1997-1999 |- |G||Pontiac Grand Am 1991 |- |G||Pontiac Grand Am ''SE2'' 2000, 2003-2004 |- |J||Buick Somerset Regal 1985, Somerset ''Custom'' 1986-1987, Skylark 2-door ''Custom'' 1988-91, Skylark 4-door ''Custom'' 1986 |- |J||Buick Skylark 1992, Skylark ''Limited'' 1993-1994, Skylark ''Custom'' 1996-1998,<br /> Skylark ''Limited'' & ''Gran Sport'' 1996-1997 |- |K||Buick Somerset ''T-Type'' 1986 |- |K||Oldsmobile Cutlass Calais ''International Series'' 1988-1991 |- |K||Oldsmobile Alero ''GX'' 1999-2004 |- |L||Oldsmobile Cutlass Calais 1989-1991 |- |L||Oldsmobile Achieva ''S'' 1992-1995, Achieva ''SL'' 1996-1998, Achieva ''SC'' 1996-1997 |- |L||Oldsmobile Alero ''GL'' 1999-2004 |- |M||Buick Somerset Regal ''Limited'' 1985, Somerset ''Limited'' 1986-'87, Skylark 2-door ''Limited'' '88-'89, Skylark 2-door ''Gran Sport'' 1990-1991, Skylark 4-door ''Limited'' 1986 |- |M||Buick Skylark ''Gran Sport'' 1992-1994 |- |T||Oldsmobile Calais ''Supreme'' 1985-1987, Cutlass Calais ''SL'' 1988-1991 |- |V||Buick Skylark 1990-1991 |- |V||Buick Skylark ''Custom'' 1993-1995, ''Limited'' 1995, ''Gran Sport'' 1995 |- |V||Pontiac Grand Am ''LE'' 1985-1988 |- |V||Pontiac Grand Am ''GT1'' 2000-2005 |- |W||Pontiac Grand Am ''SE'' 1986-1991 |- |W||Pontiac Grand Am ''GT'' 1992-2005 |- |rowspan=5|GM P platform - rear-wheel drive |rowspan=5|P |- ||E||Pontiac Fiero ''Coupe'' 1985-1988 |- ||F||Pontiac Fiero ''SE'' 1985-1987 |- ||G||Pontiac Fiero ''GT'' 1985-1988 |- ||M||Pontiac Fiero ''Sport coupe'' 1985-1987 |- |rowspan=1|GM P platform - front-wheel drive |rowspan=1|P||X||General Motors EV1 1997, 1999 |- |rowspan=6|GM R platform |rowspan=6|R |- ||F||1985-1986 Chevrolet Spectrum |- ||F||1987-1988 Chevrolet Spectrum 3-door hatchback, 1989 Geo Spectrum 3-door hatchback |- ||F||1990-1993 Geo Storm |- ||G||1987-1988 Chevrolet Spectrum 4-door sedan, 1989 Geo Spectrum 4-door sedan |- ||T||1990-1993 Geo Storm GSi |- |rowspan=8|GM S platform |rowspan=8|S||K||1985-1988 Chevrolet Nova |- |K||1989-1997 Geo Prizm, 1998-2002 Chevrolet Prizm |- |L||1988 Chevrolet Nova Twin Cam, 1990-1992 Geo Prizm GSi |- |L||2003-2008 Pontiac Vibe, 2009-2010 Pontiac Vibe FWD w/manual transmission |- |M||2003-2006 Pontiac Vibe ''AWD'', 2009-2010 Pontiac Vibe AWD w/automatic transmission |- |N||2003-2006 Pontiac Vibe ''GT'', 2009-2010 Pontiac Vibe GT FWD w/manual transmission |- |P||2009-2010 Pontiac Vibe FWD w/automatic transmission |- |R||2009-2010 Pontiac Vibe GT FWD w/automatic transmission |- |rowspan=32|GM Sigma platform |rowspan=32|D||A||Cadillac CTS Base model RWD 2010-2013, CTS Coupe Base model RWD 2014 |- |B||Cadillac CTS Wagon Luxury Collection RWD 2014 |- |C||Cadillac CTS Base model AWD 2010-2013, CTS Coupe/Wagon Performance Collection RWD 2014 |- |D||Cadillac CTS Coupe/Wagon Premium Collection RWD 2014 |- |E||Cadillac CTS Luxury Collection RWD 2010-2013, CTS Coupe Base model AWD 2014 |- |F||Cadillac CTS Auto. Trans. RWD 2008-2009, CTS Luxury Collection RWD w/Navigation 2010-2013, CTS Wagon Luxury Collection AWD 2014 |- |G||Cadillac CTS Auto. Trans. AWD 2008-2009, CTS Luxury Collection AWD 2010-2013, CTS Coupe/Wagon Performance Collection AWD 2014 |- |H||Cadillac CTS Auto. Trans. AWD w/Navigation 2008-2009, CTS Luxury Collection AWD w/Navigation 2010-2013, CTS Coupe/Wagon Premium Collection AWD 2014 |- |J||Cadillac CTS Auto. Trans. RWD w/Navigation 2008-2009, CTS Performance Collection RWD 2010-2013 |- |K||Cadillac CTS Performance Collection RWD w/Navigation 2010-2013 |- |L||Cadillac CTS Performance Collection AWD 2010-2013 |- |M||Cadillac CTS V6 2003-2004, CTS 2.8L 2005-2007, CTS Man. Trans. RWD 2008-2009, CTS Performance Collection AWD w/Navigation 2010-2013 |- |N||Cadillac CTS V-Series 2004-2007, 2009 |- |P||Cadillac CTS 3.6L 2005-2007, CTS Direct Inj. V6 Man. Trans. RWD 2008-2009, CTS Premium Collection RWD w/Navigation 2010-2013 |- |R||Cadillac CTS Direct Inj. V6 Auto. Trans. RWD 2008 |- |S||Cadillac CTS Direct Inj. V6 Auto. Trans. AWD 2008-2009, CTS Premium Collection AWD w/Navigation 2010-2013 |- |T||Cadillac CTS Direct Inj. V6 Auto. Trans. AWD w/Navigation 2008-2009 |- |U||Cadillac CTS Direct Inj. V6 Auto. Trans. RWD 2009 |- |V||Cadillac CTS Direct Inj. V6 Auto. Trans. RWD w/Navigation 2008-2009, CTS sedan V-Series 2010-2014, CTS Wagon V-Series 2011-2014, CTS Coupe V-Series 2011-2015 |- |0||Cadillac CTS Sport Appearance Pkg. 2010 |- |1||Cadillac CTS Eco Luxury Pkg. 2010 |- |2||Cadillac CTS Sport Appearance Pkg. 2011 |- |A||Cadillac STS V6 AWD 2008-2009 |- |B||Cadillac STS V8 AWD 2008-2009 |- |C||Cadillac STS V8 2005-2007, STS V8 RWD 2008-2009 |- |D||Cadillac STS V6 AWD w/Navigation 2008-2009 |- |K||Cadillac STS V6 RWD w/Navigation 2008-2009 |- |L||Cadillac STS V8 AWD w/Navigation 2008-2009 |- |U||Cadillac STS (all models) 2010, STS (Base model) 2011 |- |W||Cadillac STS V6 2005-2007, STS V6 RWD 2008-2009, STS Luxury 2011 |- |X||Cadillac STS V-Series 2006-2009, STS Luxury Performance 2011 |- |Z||Cadillac STS V8 RWD w/Navigation 2008-2009 |- |rowspan=4|GM T platform - rear-wheel drive |rowspan=4|T||B|| 1985-1987 Chevrolet Chevette CS |- |B||1985-1987 Pontiac Acadian (Canada only) |- |J||1985 Pontiac Acadian Scooter (Canada only) |- |L||1985-1987 Pontiac 1000 |- |rowspan=4|GM T platform - front-wheel drive |rowspan=4|T||N|| Pontiac LeMans 1988, LeMans LE 1989-1991, LeMans SE 1992-1993 |- |R||1988-1989 Pontiac LeMans SE sedan |- |S||1988-1990 Pontiac LeMans GSE AeroCoupe |- |X||1988-1993 Pontiac LeMans VL AeroCoupe |- |rowspan=3|GM T platform - front-wheel drive |rowspan=3|A |- |R||Saturn Astra XE (US: 2008, Canada: 2008-2009) |- |T||Saturn Astra XR (US: 2008, Canada: 2008-2009) |- |rowspan=4|Daewoo T200 platform |rowspan=4|T||D||Chevrolet Aveo Special Value 2004-2008, Base model 2004, LS 2005-2011, Aveo 1LT 2009-2011 |- |G||Chevrolet Aveo LT 2005-2008, Aveo 2LT 2009-2011 |- |J||Chevrolet Aveo LS 2004 |- |D||Pontiac G3 2009 |- |rowspan=2|GM V platform - front-wheel drive |rowspan=2|V||R||1987-1992 Cadillac Allanté with standard removable hardtop |- |S||1990-1993 Cadillac Allanté |- |rowspan=2|GM V platform - rear-wheel drive |rowspan=2|V||R||1997-2001 Cadillac Catera |- |X||2004-2006 Pontiac GTO coupe |- |rowspan=49|GM W platform |rowspan=49|W |- |A||Chevrolet Impala ''LS'' 2010-2013, Impala Limited ''LS'' 2014-2016 |- |B||Chevrolet Impala ''LS'' 2006-2009, Impala ''LT'' 2010-2013, Impala Limited ''LT'' 2014-2016 |- |C||Chevrolet Impala ''LT'' 3.9L 2006-2009, Impala ''LTZ'' 2010-2013, Impala Limited ''LTZ'' 2014-2016 |- |D||Chevrolet Impala ''SS'' 2006-2009, Impala ''Police'' 2010-2013, Impala Limited ''Police'' 2014-2016 |- |E||Chevrolet Impala ''Taxi'' 2010-2012 |- |F||Chevrolet Impala 2000-2005, Impala ''LS'' Fleet (1FL) 2011-2013 |- |G||Chevrolet Impala ''LT'' Fleet (2FL) 2011-2013 |- |H||Chevrolet Impala ''LS'' 2000-2005 |- |J||Chevrolet Monte Carlo ''LS'' 2006-2007 |- |K||Chevrolet Monte Carlo ''LT'' 3.9L 2006, Monte Carlo ''LT'' 3.5L 2007 |- |L||Chevrolet Lumina 1990-2001, Lumina ''LS'' 1997-1999 |- |L||Chevrolet Monte Carlo ''SS'' 2006-2007 |- |M||Chevrolet Monte Carlo ''LT'' 3.5L 2006 |- |N||Chevrolet Lumina ''Euro'' 1990-1994, Lumina ''LS'' 1995-1996, Lumina ''LTZ'' 1997-1999 |- |N||Chevrolet Monte Carlo ''LTZ'' 2006 |- |P||Chevrolet Lumina ''Z34'' 1991-1994, Impala ''SS'' 2004-2005 |- |S||Chevrolet Impala ''Police'' 2006-2009 |- |T||Chevrolet Impala ''LT'' 3.5L 2006-2009 |- |U||Chevrolet Impala ''LTZ'' 2006-2009 |- |V||Chevrolet Impala ''50th Anniversary Edition'' 2008 |- |W||Chevrolet Monte Carlo ''LS'' 1995-2005 |- |X||Chevrolet Monte Carlo ''Z34'' 1995-1999, Monte Carlo ''SS'' 2000-2004, Monte Carlo ''LT'' 2005 |- |Z||Chevrolet Monte Carlo ''SS Supercharged'' 2004-2005 |- |C||Pontiac Grand Prix ''GXP'' 2005-2008 |- |H||Pontiac Grand Prix ''LE'' 1991-1993 |- |J||Pontiac Grand Prix 1988-1989, Grand Prix ''LE'' 1990, Grand Prix ''SE'' 1991-2000 |- |K||Pontiac Grand Prix ''LE'' 1988-1989, Grand Prix ''SE1'' 2000-2003 |- |P||Pontiac Grand Prix ''SE'' 1988-1990, Grand Prix ''GT'' 1991-1993, 1997-2003,<br /> Grand Prix ''GT1'' 2004, Grand Prix 2005-2008 |- |R||Pontiac Grand Prix ''GTP'' 1999-2005, Grand Prix ''GT'' 2006-2007 |- |S||Pontiac Grand Prix ''GT2'' 2004, Grand Prix ''GT'' 2005 |- |T||Pontiac Grand Prix ''STE'' 1990-1993 |- |H||Oldsmobile Cutlass Supreme 1988-1991, Cutlass Supreme ''S'' 1992-1994,<br /> Cutlass Supreme ''SL'' 1995-1997, Intrigue 1998, Intrigue ''GX'' 1999-2002 |- |R||Oldsmobile Cutlass Supreme ''International Series'' 1988-1993 |- |S||Oldsmobile Cutlass Supreme ''SL'' 1988-1991, Intrigue ''GL'' 1998-2002 |- |T||Oldsmobile Cutlass Supreme Convertible 1990-1995 |- |X||Oldsmobile Intrigue ''GLS'' 1998-2002 |- |B||Buick Regal ''Custom'' 1988-1996, Regal ''GS'' Coupe 1995-1996, Regal ''LS'' 1997-2004 |- |C||Buick Lacrosse ''CX'' 2005-2009 |- |D||Buick Regal ''Limited'' 1988-1996, Lacrosse ''CXL'' 2005-2009 |- |E||Buick Lacrosse ''CXS'' 2005-2008 |- |F||Buick Regal ''GS'' Coupe 1992-1994, Regal ''GS'' Sedan 1992-2004 |- |F||Buick Allure ''CX'' 2005-2009 (Canada only) |- |H||Buick Allure ''CXS'' 2005-2008 (Canada only) |- |J||Buick Allure ''CXL'' 2005-2009 (Canada only) |- |N||Buick Lacrosse ''Super'' 2008-2009 |- |P||Buick Allure ''Super'' 2008-2009 (Canada only) |- |S||Buick Century ''Custom'' 1997-2005 |- |Y||Buick Century ''Limited'' 1997-2002 |- |rowspan=3|GM X platform |rowspan=3|X||B||1985 Buick Skylark Custom |- |C||1985 Buick Skylark Limited |- |X||1985 Chevrolet Citation II |- |rowspan=39|GM Y platform |rowspan=39|Y||V||2004-2009 Cadillac XLR |- |X||2006-2009 Cadillac XLR V-Series |- |Y||1985-2008 Chevrolet Corvette (all models except '90-'95 ZR-1) |- |Z||1990-1995 Chevrolet Corvette ZR-1 |- |G||2009 Chevrolet Corvette GT1 Championship Edition (Base & Z06) |- |R||2009 Chevrolet Corvette ZR1 (after early production) |- |Y||2009 Chevrolet Corvette (Base model, Early production Z06, Early production ZR1) |- |Z||2009 Chevrolet Corvette Z06 (after early production) |- |A||2010-2013 Chevrolet Corvette Standard 1LT Man. Trans. |- |B||2010-2013 Chevrolet Corvette Preferred 2LT Man. Trans. |- |C||2010-2013 Chevrolet Corvette Premium 3LT Man. Trans. |- |D||2010-2013 Chevrolet Corvette Custom 4LT Man. Trans. |- |E||2010-2013 Chevrolet Corvette Standard 1LT Auto. Trans. |- |F||2010-2013 Chevrolet Corvette Preferred 2LT Auto. Trans. |- |G||2010-2013 Chevrolet Corvette Premium 3LT Auto. Trans. |- |H||2010-2013 Chevrolet Corvette Custom 4LT Auto. Trans. |- |J||2010-2013 Chevrolet Corvette Z06 Standard 1LZ Man. Trans. |- |K||2010-2013 Chevrolet Corvette Z06 Premium 2LZ Man. Trans. |- |L||2010-2013 Chevrolet Corvette Z06 Custom 3LZ Man. Trans. |- |M||2010-2013 Chevrolet Corvette ZR1 Standard 1ZR Man. Trans. |- |N||2010-2013 Chevrolet Corvette ZR1 Custom 3ZR Man. Trans. |- |P||2010-2013 Chevrolet Corvette Grand Sport Standard 1LT Man. Trans. |- |R||2010-2013 Chevrolet Corvette Grand Sport Preferred 2LT Man. Trans. |- |S||2010-2013 Chevrolet Corvette Grand Sport Premium 3LT Man. Trans. |- |T||2010-2013 Chevrolet Corvette Grand Sport Custom 4LT Man. Trans. |- |U||2010-2013 Chevrolet Corvette Grand Sport Standard 1LT Auto. Trans. |- |V||2010-2013 Chevrolet Corvette Grand Sport Preferred 2LT Auto. Trans. |- |W||2010-2013 Chevrolet Corvette Grand Sport Premium 3LT Auto. Trans. |- |X||2010-2013 Chevrolet Corvette Grand Sport Custom 4LT Auto. Trans. |- |Y||2013 Chevrolet Corvette 427 Convertible Collector Edition Premium 3LT Man. Trans. |- |Z||2013 Chevrolet Corvette 427 Convertible Collector Edition Custom 4LT Man. Trans. |- |1||2013 Chevrolet Corvette 60th Anniversary Edition Custom 4LT Man. Trans. |- |2||2013 Chevrolet Corvette 60th Anniversary Edition Custom 4LT Auto. Trans. |- |3||2013 Chevrolet Corvette Grand Sport 60th Anniversary Edition Custom 4LT Man. Trans. |- |4||2013 Chevrolet Corvette Grand Sport 60th Anniversary Edition Custom 4LT Auto. Trans. |- |5||2013 Chevrolet Corvette Z06 60th Anniversary Edition Custom 3LZ Man. Trans. |- |6||2013 Chevrolet Corvette ZR1 60th Anniversary Edition Custom 3ZR Man. Trans. |- |7||2013 Chevrolet Corvette 427 Convertible 60th Anniversary Edition Custom 4LT Man. Trans. |- |8||2013 Chevrolet Corvette 427 Convertible Collector Edition Preferred 2LT Man. Trans. |- |rowspan=13|GM Z platform |rowspan=13|Z |- |E||Saturn SC1 (manual transmission 2-Door) 1993-1999 |- |F||Saturn SC1 (automatic transmission 2-Door) 1993-1999, SL (manual transmission) 1991-02 |- |G||Saturn SC (manual transmission) 1991-1992, SC2 (manual transmission 2-Door) 1993-99,<br /> SL1 (manual transmission) 1991-2002, SW1 (manual transmission) 1993-1999 |- |H||Saturn SC (automatic transmission) 1991-92, SC2 (automatic transmission 2-Door) '93-'99,<br /> SL1 (automatic transmission) 1991-02, SW1 (automatic transmission LHD) '93-'99 |- |J||Saturn SL2 (manual transmission) 1991-2002, SW2 (manual transmission) 1993-2001 |- |K||Saturn SL2 (automatic transmission) 1991-2002, SW2 (automatic transmission 1993-1999) |- |M||Saturn SW1 "Postal" [SWP] (automatic transmission RHD) 1999-2001 <br>(Made for US Postal Service rural route mail carriers) |- |N||Saturn SC1 (manual transmission 3-Door) 1999-2002, SW2 (automatic transmission 2000-01) |- |P||Saturn SC1 (automatic transmission 3-Door) 1999-2002 |- |R||Saturn SC2 (manual transmission 3-Door) 1999-2002 |- |S||Saturn SL Spring Special 2002 |- |Y||Saturn SC2 (automatic transmission 3-Door) 1999-2002 |- |rowspan=3|GM Zeta platform (VE) |rowspan=3|E||C||Pontiac G8 GT |- |P||Pontiac G8 GXP |- |R||Pontiac G8 (Base model) |- |rowspan=2|GM Zeta platform (VF) |rowspan=2|F||1||2014-2017 Chevrolet SS w/automatic transmission |- |2||2015-2017 Chevrolet SS w/manual transmission |- |GM Zeta platform (WM) |M||K||2011-2013 Chevrolet Caprice PPV |- |GM Zeta platform (WN) |N||S||2014-2017 Chevrolet Caprice PPV |- |rowspan=19|GM Zeta platform (models formerly on F platform) |rowspan=19|F||A||Chevrolet Camaro ''LS'' automatic transmission 2010-2011, ''2LS'' automatic transmission 2012-2014, ''LS'' manual transmission 2015 |- |B||Chevrolet Camaro ''LT'' automatic transmission 2010-2014, ''2LS'' automatic transmission 2015 |- |C||Chevrolet Camaro ''2LT'' automatic transmission 2010-2014, ''LT'' manual transmission 2015 |- |D||Chevrolet Camaro ''LT'' automatic transmission 2015 |- |E||Chevrolet Camaro ''LS'' manual transmission 2010-2014, ''2LT'' manual transmission 2015 |- |F||Chevrolet Camaro ''LT'' manual transmission 2010-2014, ''2LT'' automatic transmission 2015 |- |G||Chevrolet Camaro ''2LT'' manual transmission 2010-2014, ''SS'' manual transmission 2015 |- |H||Chevrolet Camaro ''SS'' automatic transmission 2015 |- |J||Chevrolet Camaro ''SS'' automatic transmission 2010-2014. Note: Must have "J" in 8th position of VIN. |- |J||Chevrolet Camaro ''ZL1'' automatic transmission 2012. Note: Must have "P" in 8th position of VIN. |- |J||Chevrolet Camaro ''2SS'' manual transmission 2015 |- |K||Chevrolet Camaro ''2SS'' automatic transmission 2010-2015 |- |L||Chevrolet Camaro ''ZL1'' automatic transmission 2013-2014, ''ZL1'' manual transmission 2015 |- |M||Chevrolet Camaro ''ZL1'' automatic transmission 2015 |- |S||Chevrolet Camaro ''SS'' manual transmission 2010-2014. Note: Must have "W" in 8th position of VIN. |- |S||Chevrolet Camaro ''ZL1'' manual transmission 2012. Note: Must have "P" in 8th position of VIN. |- |S||Chevrolet Camaro ''Z/28'' manual transmission 2014. Note: Must have "E" in 8th position of VIN. |- |T||Chevrolet Camaro ''2SS'' manual transmission 2010-2014 |- |Z||Chevrolet Camaro ''ZL1'' manual transmission 2013-2014, ''Z/28'' manual transmission 2015 |- |} RHD= Right-Hand Drive ====Model Line 2010- Passenger Car (Using Vehicle Platforms introduced 2010 or later)==== The Model Line is specified as character 4 of the American GM VIN for Passenger Cars. {| border=1 style="margin:auto;" !VIN !Description |- |A||Cadillac ATS 2013-2019 |- |A||Cadillac CTS sedan 2014-2019, CTS V-Series sedan 2016-2019 |- |B||Chevrolet Cruze 2016-2019 |- |C||Chevrolet Spark 2013-2022, Spark EV 2014-2016 |- |D||Cadillac CT4 2020-2026 |- |D||Cadillac CT5 2020- |- |F||Chevrolet Camaro 2016-2024 |- |F||Chevrolet Bolt EV 2017-2023, Bolt EUV 2022-2023, Bolt 2027 |- |G||Buick LaCrosse 2010-2016 |- |G||Buick Regal 2011-2020, Buick Regal TourX 2018-2020 |- |J||Chevrolet Sonic 2016-2020 |- |K||Cadillac CT6 2016-2020 |- |M||Cadillac Celestiq EV 2025- |- |P||Buick Verano 2012-2017 |- |P||Chevrolet Cruze 2011-2015, Cruze Limited 2016 |- |R||Cadillac ELR 2014, 2016 |- |R||Chevrolet Volt 2011-2019 |- |W||Buick Cascada 2016-2019 |- |Y||Chevrolet Corvette 2014- |- |Z||Buick LaCrosse 2017-2019 |- |Z||Chevrolet Malibu 2016-2025 |- |1||Cadillac XTS 2013-2019 |- |1||Chevrolet Impala 2014-2020 |- |1||Chevrolet Malibu 2013-2015, Malibu Limited 2016 |- |} ===Body style codes 1987- Passenger Car=== The Body type is specified as character 6 of the American GM VIN for passenger cars. {| border=1 style="margin:auto;" !VIN !Description |- |1||Two-Door Coupe/Sedan |- |2||Two-Door Hatchback |- |3||Two-Door Convertible |- |4||Two-Door Wagon ('91-'92 Geo Storm Hatchback) |- |5||Four-Door Sedan |- |6||Four-Door Hatchback |- |7||Four-Door Hatchback ('89-'90 Geo Prizm hatchback) |- |8||Four-Door Station Wagon |- |9||Four-Door Station Wagon - High Roof Monocab |} ===American restraint types 1987-=== The restraint type is specified as character 7 of the American GM VIN for passenger cars. {{center/top}} ====Restraint codes for passenger cars 1987-2009==== {{center/end}} {| border=1 style="margin:auto;" !VIN Code !Description |- |1||Active (Manual) belts 1987-1996 |- |2||Active (Manual) belts plus driver and passenger front airbags 1992-2005<br />(For '94-'96 Pontiac Grand Prix coupe: Passive (Automatic) belts plus driver and passenger front airbags) |- |3||Active (Manual) belts plus driver side front airbag 1988-1996 <br />(For '94 Geo Prizm: Active (Manual) belts plus driver and passenger front airbags) |- |4||Passive (Automatic) belts 1987-1996 |- |4||Active (Manual) belts plus driver and passenger front & side airbags 1997-2005 |- |4||Active (Manual) belts plus driver and passenger front & side curtain airbags 2006-2009 |- |5||Passive (Automatic) belts plus driver side front airbag 1992-1996 |- |5||Active (Manual) belts plus driver and passenger front airbags & driver-side side impact airbag 2000-2005 |- |5||Active (Manual) belts plus driver and passenger front airbags & occupant sensor 2006-2009 |- |6||Passive (Automatic) belts plus driver and passenger front airbags 1994-1996 |- |6||Active (Manual) belts plus driver and passenger front & side airbags & occupant sensor 2000-2009 |- |7||Active (Manual) belt driver & Passive (Automatic) belt passenger plus driver and passenger front airbags 1996 |- |7||Active (Manual) belts plus driver and passenger front & side airbags & rear side airbags 2000-2005 |- |7||Active (Manual) belts plus driver and passenger front & side & side curtain airbags & occupant sensor 2006-2009 |- |8||Active (Manual) belts plus driver and passenger front & side curtain airbags & occupant sensor 2006-2009 |- |9|| |} {{center/top}} ====Restraint codes for passenger cars 2010-==== {{center/end}} {| border=1 style="margin:auto;" !VIN Code !Description |- |D||Active (Manual) belts plus driver and passenger front & side airbags 2010- |- |E||Active (Manual) belts plus driver and passenger front & side & side curtain airbags 2010-2017, 2027 |- |F||Active (Manual) belts plus driver and passenger front & side curtain airbags 2010 |- |G||Active (Manual) belts plus driver and passenger front & side & rear side & side curtain airbags 2010-2017 |- |N||Active (Manual) belts plus driver and passenger front & side & front knee airbags 2016-2019 |- |R||Active (Manual) belts plus driver and passenger front & side & side curtain & front knee airbags 2012- |- |S||Active (Manual) belts plus driver and passenger front & side & rear side & side curtain & front knee airbags 2011- |- |T||Active (Manual) belts plus driver and passenger front & side & front row side curtain airbags 2011 |- |U||Active (Manual) belts plus driver and passenger front & side & front row side curtain & front knee airbags 2012-2017 |} {{center/top}} ====Restraint codes for light trucks 2010-==== {{center/end}} {| border=1 style="margin:auto;" !VIN Code !Description |- |A||Active (Manual) belts plus driver-side front airbag 2010 |- |B||Active (Manual) belts plus driver-side front airbag 2011- |- |B||Active (Manual) belts plus driver and passenger front airbags 2010 |- |C||Active (Manual) belts plus driver and passenger front airbags 2011- |- |C||Active (Manual) belts plus driver and passenger front & side airbags 2010 |- |D||Active (Manual) belts plus driver and passenger front & side airbags 2011- |- |D||Active (Manual) belts plus driver and passenger front airbags & side curtain airbags for up to 3 rows of seating 2010 |- |E||Active (Manual) belts plus driver and passenger front & side & side curtain airbags 2010- |- |F||Active (Manual) belts plus driver and passenger front airbags & side curtain airbags for up to 3 rows of seating 2011-2015 |- |F||Active (Manual) belts plus driver and passenger front & side airbags & side curtain airbags for up to 3 rows of seating 2016- |- |H||Active (Manual) belts plus driver-side front airbag & driver-side side-impact airbag & driver-side side curtain airbag 2023-2024 |- |K||Active (Manual) belts plus driver and passenger front & side & side curtain & front center airbags 2013- |- |L||Active (Manual) belts plus driver and passenger front & side & side curtain & front center & driver-side knee airbags 2017-2023 |- |M||Active (Manual) belts plus driver and passenger front & side & side curtain & front center & front knee airbags 2025- |- |R||Active (Manual) belts plus driver and passenger front & side & side curtain & front knee airbags 2017- |- |S||Active (Manual) belts plus driver and passenger front & side & rear side & side curtain & front knee airbags 2013- |- |T||Active (Manual) belts plus driver-side front airbag & driver- and passenger-side side-impact airbags & side curtain airbags 2023- |- |U||Active (Manual) belts plus driver and passenger front & side & front row side curtain & front knee airbags 2013-2019 |} ===American engine codes 1981-=== GM encodes the engine type in character 8 of the VIN. The following table outlines the various engines encoded there: ====Engine codes for passenger cars==== Warning: Issues with decoding are related to year/model combinations. Each year has a different breakdown for each code along with plants and some model/trim breakdowns over years. Entry: 1985-1988 Pontiac Fiero has a 9 engine code for the 2.8L L44 V6. Entry: 1986-1990 Cadillac Brougham, Oldsmobile 307 Cu. In. V8 vin code Y. {| border=1 style="margin:auto;" !VIN !RPO !Size !Type !Fuel !Valvetrain !Engine Family/Notes/Applications |- |A||LD5||3.8&nbsp;L||V6||2 Barrel Carburetor |2BBL||OHV||Buick V6. (231 cu. in.) '81 Chevy Camaro (CA), Pontiac Catalina, Firebird, LeMans, Buick Century,<br /> '81-'83 Chevy Malibu (CA), '81-'84 Monte Carlo, Caprice, Impala (CA), '81-'87 Pontiac Grand Prix, Oldsmobile Cutlass/Cutlass Supreme, Buick Regal, '81-'85 Oldsmobile Delta 88, Buick LeSabre,<br /> '81-'86 Pontiac Bonneville, '84 Parisienne |- |A||LG0||2.3&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Oldsmobile Quad 4 H.O. '89-'94 Pontiac Grand Am, '89-'91 Oldsmobile Cutlass Calais, '92-'94 Achieva, '90 Cutlass Supreme, '90-'94 Chevy Beretta |- |A||LH2||4.6&nbsp;L||V8||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 32 valve||Cadillac Northstar V8 (For RWD) (Premium V). '04-'09 Cadillac XLR, '05-'10 Cadillac STS |- |A||LCV||2.5&nbsp;L||Straight-4|I4||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. VVT. '13 Chevy Malibu, '16 Malibu Limited, '16-'19 Impala,<br /> '13-'16 Cadillac ATS |- |A||LV7||1.4&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Small Gasoline Engine. VVT. Made in Changwon, S. Korea. '16-'22 Chevy Spark. |- |B||LG2||3.8&nbsp;L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6. '86 Oldsmobile 98, Toronado, Buick Electra, Riviera. |- |B||L26||4.9&nbsp;L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Cadillac High Technology V8.<br /> '91-'93 Cadillac Eldorado, Seville, '91-'95 DeVille, '91-'92 Fleetwood, '91-'93 Sixty Special |- |B||LE5||2.4&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. '06-'08 Chevy Cobalt, '06-'07 Saturn Ion, '06-'10 Pontiac G6, Solstice,<br /> '07-'08 Pontiac G5, '07-'10 Saturn Sky, '08-'09 Saturn Aura, '08-'10 Chevy Malibu |- |B||LUV||1.4L||I4 Turbo||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. VVT. '12-'20 Chevy Sonic, '13-'15 Chevy Cruze, '16 Cruze Limited |- |C||L17||1.6&nbsp;L||Straight-4|I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Isuzu G161Z engine made by GM in US. '82-'87 Chevy Chevette, Pontiac T1000/1000 |- |C||LN3||3.8&nbsp;L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Buick V6 (3800). '88-'90 Oldsmobile 98, Toronado, Buick Electra, Riviera, Reatta, <br /> '88-'91 Buick LeSabre, Oldsmobile Delta 88/Eighty Eight, Pontiac Bonneville |- |C||L47||4.0&nbsp;L||V8||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 32 valve||Oldsmobile Aurora V8 (Premium V). Oldsmobile Aurora '95-'99, Aurora 4.0 '01-'03 |- |C||LS4||5.3 L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. Active Fuel Management.<br /> Transversely mounted for FWD. '05-'08 Pontiac Grand Prix GXP, '06-'07 Chevy Monte Carlo SS,<br /> '06-'09 Chevy Impala SS, '08-'09 Buick LaCrosse Super. |- |C||LAF||2.4&nbsp;L||Straight-4|I4||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. VVT. Buick LaCrosse '10-'11, Regal '11. |- |C||LUJ||1.4L||I4 Turbo||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. VVT. Early production engines were made in Aspern, Austria; later made in Flint, MI. '12 Chevy Cruze |- |D||LJ5||1.8&nbsp;L||Straight-4|I4||Indirect injection Diesel||SOHC,<br /> 8 valve||Isuzu 4FB1 diesel engine imported from Japan. '81-'86 Chevy Chevette |- |D||LD2||2.3&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Oldsmobile Quad 4. '88-'95 Pontiac Grand Am, '88-'91 Oldsmobile Cutlass Calais, '92-'95 Achieva,<br /> '88-'91 &'95 Buick Skylark, '90-'91 Pontiac Grand Prix, Oldsmobile Cutlass Supreme,<br /> '95 Chevy Cavalier, Pontiac Sunfire |- |D||LC3||4.4&nbsp;L||V8 Supercharged||Fuel injection#Sequential Multi-port point injection|SFI||DOHC,<br /> 32 valve||Cadillac Northstar V8 (Premium V). '06-'09 Cadillac XLR V-Series, Cadillac STS V-Series |- |E||LK9||3.0&nbsp;L||V6||2 Barrel Carburetor |2BBL||OHV||Buick V6. '82-'85 Oldsmobile Cutlass Ciera, Buick Century, '85 Oldsmobile 98, Buick Electra |- |E||LA1||3.4&nbsp;L||V6||Fuel injection#Sequential Multi-port point injection|SFI||OHV||Chevrolet 60° V6. '99-'05 Grand Am, '99-'04 Alero, '00-'05 Impala, Monte Carlo |- |E||L03||5.0&nbsp;L||V8||Fuel injection#Throttle Body injection|TBI||OHV||Gen I Chevy Small-Block V8 (305 cu. in.). '88-'92 Camaro/Firebird, '89-'93 Chevy Caprice,<br /> '91 Buick Roadmaster Estate wagon, '91-'92 Oldsmobile Custom Cruiser, Cadillac Brougham. |- |E||LXV||1.6&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Family 1 Gen 3 engine. W/VVT. '09-'11 Chevy Aveo, '09 Pontiac G3 |- |E||LS7||7.0&nbsp;L||V8||Fuel injection#Sequential Multi-port point injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads.<br /> '06-'13 Corvette Z06, '13 Corvette 427, '14-'15 Camaro Z/28 |- |E||LH7||1.6&nbsp;L||I4 Turbo||Direct injection <br /> Common-rail Diesel||DOHC,<br /> 16 valve||GM Medium Diesel engine ("Whisper Diesel"). Made by Opel in Szentgotthárd, Hungary.<br /> Aluminum Block & Heads. '17-'19 Chevy Cruze Diesel. |- |F||LV8||4.3&nbsp;L||V8||2 Barrel Carburetor |2BBL||OHV||Oldsmobile "Rocket" V8 (260 cu. in.) '81 Oldsmobile Cutlass, Delta 88. |- |F||L61||2.2&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen I. '00-'04 Saturn L-Series, '02-'05 Chevy Cavalier, Pontiac Sunfire, Grand Am,<br /> '02-'04 Oldsmobile Alero, '03-'06 Saturn Ion, '04-'06 Chevy Malibu, '05-'06 Chevy Cobalt |- |F||L61||2.2&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. '07-'08 Chevy Cobalt, Malibu, Pontiac G5, '07 Saturn Ion. |- |F||LB9||5.0&nbsp;L||V8||Tuned-port fuel injection|TPI||OHV||Gen I Chevy Small-Block V8. (305 cu. in.). '85-'92 Chevy Camaro, Pontiac Firebird. |- |G||L46||1.8&nbsp;L||I4||2 Barrel Carburetor |2BBL||OHV||Chevrolet "122" engine. '82 J-cars. |- |G||L69||5.0&nbsp;L||V8||4 Barrel Quadrajet Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8 (High Output 5.0L). (305 cu. in.)<br /> '84-'86 Camaro/Firebird, '84-'88 Chevy Monte Carlo SS |- |G||LM3||2.2&nbsp;L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Chevrolet "122" engine. '90-'91 Chevy Cavalier & Corsica/Beretta. |- |G||LS1||5.7&nbsp;L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Gen III Chevy Small-Block V8. (346 cu. in.) Aluminum Block & Heads.<br /> '97-'04 Corvette, '98-'02 Camaro/Firebird, '04 Pontiac GTO |- |G||LF1||3.0L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. 2010 Buick LaCrosse, Cadillac CTS |- |G||LWE||1.8&nbsp;L||Straight-4|I4||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 1 engine, Gen III. VVT. PZEV emissions.<br /> '13-'15 Chevy Cruze, '16 Cruze Limited, '13-'18 Sonic. |- |H||LG4||5.0&nbsp;L||V8||4 Barrel Quadrajet Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8. (305 cu. in.) '81-'87 F-bodies, '81-'83 Chevy Malibu, '81-'85 Impala,<br /> '81-'88 Caprice, Monte Carlo, '83-'86 Pontiac Bonneville, Parisienne, '83-'87 Grand Prix |- |H||LE4||2.0&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil. '92-'94 Pontiac Sunbird. |- |H||LX5||3.5&nbsp;L||V6||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 24 valve||Oldsmobile "Shortstar" V6 (Premium V). Oldsmobile Intrigue '99-'02, Aurora 3.5 '01-'02. |- |H||LAP||2.2&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. '09 Chevy Cobalt, Pontiac G5. |- |H||LUW||1.8&nbsp;L||Straight-4|I4||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 1 engine, Gen III. VVT. '11-'15 Chevy Cruze, '16 Cruze Limited, '12-'18 Sonic. |- |J||L39||4.4&nbsp;L||V8||2 Barrel Carburetor |2BBL||OHV||Gen I Chevy Small-Block V8 (267 cu. in.) '81-'82 Chevy Caprice, Impala, Malibu, Monte Carlo,<br /> '81 Chevy Camaro |- |J||LA5||1.8&nbsp;L||Straight-4|I4 Turbo||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil. '84-'86 Pontiac Sunbird, Buick Skyhawk. |- |J||LT5||5.7&nbsp;L||V8||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 32 valve||Based on Chevy Small-Block V8. Designed with Lotus Engineering.<br /> Made by Mercury Marine. Aluminum Block & Heads. '90-'95 Corvette ZR-1 |- |J||LG8||3.1&nbsp;L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||Chevrolet 60° V6. Gen III. 3100. '99-'03 Chevy Malibu, '99 Oldsmobile Cutlass, '00-'01 Chevy Lumina,<br /> '00-'03 Pontiac Grand Prix SE, '00-'05 Buick Century |- |J||L99||6.2&nbsp;L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. VVT. With Active Fuel Management. Aluminum Block & Heads.<br /> '10-'15 Camaro SS (auto. trans.) |- |J||LTA||4.2&nbsp;L||V8 Twin Turbo||Direct injection|DI||DOHC,<br /> 32 valve||Cadillac Blackwing V8. VVT. '19-'20 Cadillac CT6 Platinum & V-series |- |K||LC3||3.8&nbsp;L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 90° V6 (Chevy Small-Block V8 Derived). 229 cu. in. <br /> '81-'82 Malibu, Monte Carlo, Impala, Caprice, '81 Camaro. |- |K||LC5||1.5&nbsp;L||I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Isuzu 4XC1 engine. '85 Chevrolet Spectrum. |- |K||LT2||2.0&nbsp;L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil.<br /> '87-'91 Pontiac Sunbird, '87-'88 Oldsmobile Firenza, Buick Skyhawk. |- |K||LT2||2.0&nbsp;L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||GM Family II engine. Made in Australia by Holden.<br /> '89-'90 Pontiac LeMans GSE Aerocoupe, '89 LeMans SE sedan |- |K||L36||3.8&nbsp;L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Series II). '95-'05: Various W-, H-, C-, & G-body models. '95-'02 Camaro/Firebird. |- |K||LZE||3.5L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||GM High Value 60° V6. 3510cc. VVT. Flex-Fuel E85 compatible.<br /> '06-'07 Chevy Monte Carlo, '06-'11 Chevy Impala, '09-'10 Chevy Malibu, Pontiac G6 |- |K||LEA||2.4&nbsp;L||Straight-4|I4||Direct Injection|DI||DOHC,<br /> 16 valve||E85 Flex Fuel. GM Ecotec engine, Gen II. VVT. Buick Regal, Verano '12-'17 (except '13 Regal). |- |K||LSY||2.0&nbsp;L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. Active Fuel Management. VVT. VVL.<br /> '19 Cadillac CT6, '20+ Cadillac CT4, CT5 |- |L||LM1||5.7&nbsp;L||V8||4 Barrel Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8.<br> '81 Camaro Z28 (only w/auto. trans. in US), '81-'82 Impala 9C1 Police, '81 Malibu 9C1 Police |- |L||LL1||2.8&nbsp;L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 60° V6 H.O. (longitudinally mounted). '83-'84 Pontiac Firebird. |- |L||LN7||3.0&nbsp;L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Buick V6. '85-'87 Pontiac Grand Am, '85-'88 Oldsmobile & Buick N-bodies,<br /> '86 Oldsmobile Delta 88, Buick LeSabre |- |L||L27||3.8&nbsp;L||V6||Fuel injection#Tuned port injection|TPI||OHV||Buick V6 (3800 Series I). '90-'95 Buick Regal, '91-'94 Oldsmobile 98, Buick Park Avenue, '91 Reatta, '91-'93 Riviera, '91-'92 Oldsmobile Toronado, '92-'95 Buick LeSabre, '92-'94 Pontiac Bonneville, Oldsmobile 88 |- |L||LNK||1.8&nbsp;L||Straight-4|I4||Fuel injection#Sequential multi-port injection|SFI||DOHC,<br /> 16 valve||Toyota 2ZZ-GE engine. VVTL-i. '03-'06 Pontiac Vibe GT |- |L||LKW||2.5&nbsp;L||Straight-4|I4||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. VVT. VVL. '14-'15 Chevy Malibu, Impala |- |L||L3B||2.7L||I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM L3B Tripower engine. VVT, VVL. Active Fuel Management. '20+ Cadillac CT4, CT4-V |- |M||LY9||1.0&nbsp;L||Straight-3|I3||2BBL||SOHC,<br /> 6 valve ||Suzuki G10A engine. '85 Chevrolet Sprint |- |M||LT3||2.0&nbsp;L||Straight-4|I4 Turbo||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil.<br /> '87-'90 Pontiac Sunbird, '87 Buick Skyhawk T-Type, '87-'89 Pontiac Grand Am SE. |- |M||L82||3.1&nbsp;L||V6||Fuel injection#Sequential Multi Port Fuel injection|SFI||OHV||Chevrolet 60° V6 (transversely mounted). Gen III. 3100. '93-'97 Oldsmobile Cutlass Supreme,<br /> '94-'98 Pontiac Grand Am, Oldsmobile Achieva, Buick Skylark, '94-'99 Pontiac Grand Prix,<br /> '94-'96 Chevy Corsica/Beretta, Oldsmobile Cutlass Ciera, Buick Regal, '94-'99 Century,<br /> '95-'99 Chevy Lumina, Monte Carlo, '97-'99 Chevy Malibu, Oldsmobile Cutlass |- |M||LY9||2.6&nbsp;L||V6||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 24 valve||Opel 54° V6 engine (Made in the UK). Euro-market Cadillac CTS '03-'04. |- |M||LGD||3.9L||V6||Fuel injection#Sequential Multi Port Fuel injection|SFI||OHV||E85 Flex Fuel. GM High Value 60° V6. VVT. '09-'11 Chevy Impala, Buick Lucerne |- |M||LE2||1.4&nbsp;L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Small Gasoline Engine. VVT. '16-'19 Chevy Cruze. |- |N||LF9||5.7&nbsp;L||V8||Indirect injection Diesel||OHV||Oldsmobile Diesel V8. '81-'85 Chevy Caprice, Impala, '82-'83 Malibu, '82-'84 Monte Carlo,<br /> '81-'84 Pontiac Grand Prix, Bonneville, '81 Catalina, '83-'85 Parisienne,<br /> '81-'84 Oldsmobile 98, '81-'85 Cutlass/Cutlass Supreme, Delta 88, Custom Cruiser, Toronado,<br /> '81-'83 Buick Electra, '81-'85 LeSabre, Electra Estate wagon, Riviera, '82-'83 Regal,<br /> '81-'84 Cadillac DeVille, '81-'85 Fleetwood Brougham, Eldorado, Seville |- |N||LG7||3.3&nbsp;L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Buick V6 (3300). '89-'93 Buick Century, Skylark, Oldsmobile Cutlass Ciera, '89-'91 Cutlass Calais,<br /> '92-'93 Achieva, Pontiac Grand Am. |- |N||LA3||3.2&nbsp;L||V6||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 24 valve||Opel 54° V6 engine (Made in the UK). '03-'04 Cadillac CTS |- |N||LZ4||3.5L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||GM High Value 60° V6. 3510cc. VVT. '06-'07 Chevy Monte Carlo, '06-'10 Chevy Impala,<br /> '07-'10 Chevy Malibu, Pontiac G6, '07-'08 Saturn Aura |- |N||LFR||3.6L||V6||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 24 valve||(Bi-Fuel Gas/CNG). GM High Feature V6. '15-'17 Chevy Impala Bi-Fuel |- |P||LQ5||2.0&nbsp;L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Chevrolet "122" engine. '83-'86 J-cars ('83-'84 for Pontiac). |- |P||LT1||5.7&nbsp;L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen II Chevy Small-Block V8. Aluminum Heads: '92-'96 Corvette, '93-'97 Camaro/Firebird.<br /> Iron Heads: '94-'96 Chevy Caprice, Impala SS, Buick Roadmaster, Cadillac Fleetwood. |- |P||LSJ||2.0&nbsp;L||SC Straight-4|I4 Supercharged||Fuel injection#Sequential central point injection|SFI||DOHC,<br /> 16 valve||GM Ecotec Gen I. Made by Opel in Kaiserslautern, Germany.<br /> '04-'07 Saturn Ion Red Line, '05-'07 Chevy Cobalt SS Supercharged. |- |P||LSA||6.2&nbsp;L||V8 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads.<br /> Cadillac CTS V-Series '09-'15, Camaro ZL1 '12-'15 |- |P||LF4||3.6L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. Cadillac CT4-V Blackwing '22+ |- |R||LR8||2.5L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Pontiac Iron Duke/Tech IV engine. Transversely mounted. '82-'85 Chevy Citation, Buick Skylark,<br /> '82-'84 Pontiac Phoenix, Oldsmobile Omega, '82-'90 Chevy Celebrity, '82-'91 Pontiac 6000,<br /> '82-'92 Oldsmobile Cutlass Ciera, Buick Century, '84-'88 Pontiac Fiero, '90-'92 Chevy Lumina |- |R||L81||3.0&nbsp;L||V6||Fuel injection#Multi-port fuel injection|SFI||DOHC,<br /> 24 valve||Opel 54° V6 engine (Made in the UK). '97-'01 Cadillac Catera, '00-'05 Saturn L-Series |- |R||LZ8||3.9L||V6||Fuel injection#Sequential Multi Port Fuel injection|SFI||OHV||GM High Value 60° V6. VVT. Active Fuel Management. '07 Chevy Impala |- |R||LS9||6.2&nbsp;L||V8 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads. '09 Corvette ZR1. |- |R||LUK||2.4L||I4||Direct Injection|DI||DOHC,<br /> 16 valve||Mild Hybrid. GM Ecotec Gen II. VVT. '12-'16 Buick LaCrosse eAssist, Regal eAssist,<br /> '13-'14 Chevy Malibu Eco, '14 Chevy Impala Eco |- |S||LS5||4.3&nbsp;L||V8||2 Barrel Carburetor |2BBL||OHV||Pontiac V8. 265 cu. in.<br /> '81 Pontiac Bonneville, Catalina, Firebird, Grand Prix, LeMans, Buick Century, Regal. |- |S||LU5||5.0&nbsp;L||V8||Cross-Fire fuel injection|CFI||OHV||Gen I Chevy Small-Block V8. (305 cu. in.) '83 Camaro, Firebird. Dual throttle-body fuel injection. |- |S||LB8||2.8&nbsp;L||V6||Fuel injection#Multi Port Fuel injection|MPFi||OHV||Chevrolet 60° V6 (longitudinally mounted). '85-'89 Chevy Camaro, Pontiac Firebird. |- |S||L32||3.4&nbsp;L||V6||Fuel injection#Multi Port Fuel injection|MPFi||OHV||Chevrolet 60° V6 (longitudinally mounted). '93-'95 Chevy Camaro, Pontiac Firebird. |- |S||LS6||5.7&nbsp;L||V8||Fuel injection#Sequential Multi Port injection|SFI||OHV||Gen III Chevy Small-Block V8. (346 cu. in.) Aluminum Block & Heads.<br /> '01-'04 Corvette Z06, '04-'05 Cadillac CTS V-Series |- |S||LGX||3.6L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. VVT. Active Fuel Management. '16-'19 Cadillac ATS, CTS, '16-'20 CT6, '16-'24 Chevrolet Camaro, '17-'19 Buick LaCrosse, '18–'20 Buick Regal GS |- |T||LU8||4.9&nbsp;L||V8 Turbo||4 Barrel Carburetor |4BBL||OHV||Pontiac V8. 301 cu. in. '81 Pontiac Firebird Formula & Trans Am. |- |T||LT7||4.3&nbsp;L||V6||Indirect injection Diesel||OHV||Oldsmobile Diesel V6. FWD version for '82-'85 GM A-bodies. |- |T||LS2||4.3&nbsp;L||V6||Indirect injection Diesel||OHV||Oldsmobile Diesel V6. FWD version for '85 GM C-bodies. |- |T||LH0||3.1&nbsp;L||V6||Fuel injection#Multi Port Fuel injection|MPFi||OHV||Chevrolet 60° V6 (longitudinally mounted). '90-'92 Chevy Camaro, Pontiac Firebird. |- |T||LH0||3.1&nbsp;L||V6||Fuel injection#Multi Port Fuel injection|MPFi||OHV||Chevrolet 60° V6 (transversely mounted). Gen II. '88-'91 Pontiac 6000,<br /> '89-'93 Grand Prix, Oldsmobile Cutlass Supreme, Buick Regal, '90-'94 Chevy Cavalier, Lumina,<br /> '91-'94 Pontiac Sunbird, '90-'93 Chevy Corsica/Beretta, '90 Celebrity |- |T||LD9||2.4&nbsp;L||Straight-4|I4||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 16 valve||Oldsmobile Quad 4 ("2.4 Twin Cam"). '96-'01 Pontiac Grand Am, '96-'97 Oldsmobile Achieva, Buick Skylark, '99-'01 Oldsmobile Alero, '97-'99 Chevy Malibu, '96-'02 Chevy Cavalier, Pontiac Sunfire |- |T||LP1||2.8&nbsp;L||V6||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 24 valve||GM High Feature V6. '05-'07 Cadillac CTS |- |T||LS9||6.2&nbsp;L||V8 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads. '10-'13 Corvette ZR1. |- |T||LFV||1.5L||I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Small Gasoline Engine. VVT. '16-'25 Chevy Malibu. |- |U||L68||2.5L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Pontiac Iron Duke/Tech IV engine. Transversely mounted. '85-'91 N-bodies |- |U||LS2||6.0&nbsp;L||V8||Fuel injection#Sequential Multi-port fuel injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads.<br /> '05-'07 Corvette, '05-'06 Pontiac GTO, '06-'07 Cadillac CTS V-Series |- |U||LE9||2.4&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. E85 Flex-Fuel. 2011-12 Chevy Malibu. |- |U||LKN||1.8L||I4||Direct Injection|DI||DOHC,<br /> 16 valve||Full Hybrid. GM Medium Gasoline Engine. VVT. Made in Szentgotthárd, Hungary.<br> '16-'19 Chevy Malibu Hybrid |- |V||LT6||4.3&nbsp;L||V6||Indirect injection Diesel||OHV||Oldsmobile Diesel V6. RWD version.<br /> '82-'83 Chevy Malibu, Monte Carlo, '82-'85 Oldsmobile Cutlass Supreme, Buick Regal |- |V||LG5||3.1&nbsp;L||V6 Turbo||Fuel injection#Multi-port fuel injection|MPFI||OHV||Chevrolet 60° V6. Gen II. Intercooled. (ASC/McLaren modified).<br /> '89-'90 Pontiac Grand Prix Turbo coupe, '90 Grand Prix STE Turbo sedan |- |V||LLT||3.6L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. '08-'11 Cadillac CTS, STS, '10-'11 Chevrolet Camaro, Buick LaCrosse |- |V||LHU||2.0&nbsp;L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||E85 Flex Fuel (N/A on Regal GS). GM Ecotec engine, Gen II. VVT.<br /> Buick Regal '11-'13, Verano '13-'16. |- |W||L37||4.9&nbsp;L||V8||4 Barrel Carburetor |4BBL||OHV||Pontiac V8. 301 cu. in. '81 Pontiac Firebird, LeMans Safari wagon. |- |W||LB6||2.8&nbsp;L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Gen I/II Chevrolet 60° V6 (transversely mounted). '85 Chevy Citation, Buick Skylark,<br /> '85-'89 Chevy Cavalier, Celebrity, Pontiac 6000, '85-'88 Cadillac Cimarron,<br /> '85-'87 Oldsmobile Firenza, '86-'89 Cutlass Ciera, '87-'88 Buick Century, '87-'89 Chevy Corsica/Beretta, '88-'89 Pontiac Grand Prix, Oldsmobile Cutlass Supreme, Buick Regal |- |W||L64||3.1&nbsp;L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Flex-fuel: Gas/M85 or Gas/E85 (2 versions). Gen II Chevrolet 60° V6. '93 Chevy Lumina VFV |- |W||L99||4.3&nbsp;L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen II Chevy Small-Block V8. '94-'96 Chevy Caprice. |- |W||LS3||6.2&nbsp;L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads.<br /> '08-'13 Corvette, '10-'15 Camaro SS (man. trans.), '09 Pontiac G8 GXP, '14-'17 Chevy SS |- |W||LGY||3.0L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. VVT. Active Fuel Management. '20+ Cadillac CT5, CT5-V |- |X||LE2||2.8&nbsp;L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 60° V6 (transversely mounted). '81-'85 Chevy Citation, Buick Skylark,<br /> '81-'84 Pontiac Phoenix, Oldsmobile Omega, '82-'86 Chevy Celebrity, Pontiac 6000,<br /> '86 Oldsmobile Cutlass Ciera, Buick Century |- |X||LQ1||3.4&nbsp;L||V6||Fuel injection#Multi-port fuel injection|MPFI||DOHC,<br /> 24 valve||Chevrolet 60° V6 ("Twin Dual Cam V6"). '91-'97 Chevy Lumina, '95-'97 Chevy Monte Carlo,<br /> '91-'96 Pontiac Grand Prix, Oldsmobile Cutlass Supreme |- |X||LNF||2.0&nbsp;L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. VVT.<br /> '07-'10 Pontiac Solstice GXP, Saturn Sky Red Line, '08-'10 Chevy Cobalt SS Turbo. |- |X||LTG||2.0&nbsp;L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. VVT. '13-'22 Chevy Malibu, '13-'19 Cadillac ATS, '14-'20 Buick Regal,<br /> '14-'19 Cadillac CTS, '16-'23 Chevy Camaro, '16-'18 Cadillac CT6. |- |X||LTG||2.0&nbsp;L||Straight-4|I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||Plug-in hybrid. GM Ecotec engine, Gen III. VVT. '17-'18 Cadillac CT6 PHEV. (VIN starts with LRE) |- |Y||LV2||5.0&nbsp;L||V8||4 Barrel Carburetor |4BBL||OHV||Oldsmobile "Rocket" V8 (307 cu. in.) '86-'90 Chevy Caprice wagon, '87 Caprice sedan (Can.),<br /> '81 Pontiac Bonneville, Catalina, '86 Parisienne, '87-'89 Safari wagon, '81-'84 Oldsmobile 98,<br /> '81-'85 Delta 88, Toronado, '81-'90 Custom Cruiser, '81 Cutlass Cruiser, '82-'87 Cutlass Supreme,<br /> '88 Cutlass Supreme Classic, '81-'84 Buick Electra, '85-'89 Electra Estate wagon,<br /> '81-'85 LeSabre, Riviera, '86-'89 LeSabre Estate wagon, '90 Estate wagon, '86-'87 Regal,<br /> '86 Cadillac Fleetwood Brougham, '87-'90 Brougham |- |Y||LD8||4.6&nbsp;L||V8||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 32 valve||Cadillac Northstar V8 (Torque tuned FWD) (Premium V). '93-'02 Cadillac Eldorado,<br /> '94-'04 Cadillac Seville SLS, '94-'05 Cadillac DeVille, '06-'11 Cadillac DTS,<br /> '04-'05 Pontiac Bonneville GXP, '06-'08 Buick Lucerne |- |Y||L76||6.0&nbsp;L||V8||Fuel injection#Sequential Multi-port fuel injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads. With Active Fuel Management.<br /> '08-'09 Pontiac G8 GT. |- |Y||LF1||3.0L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. 2011 Cadillac CTS |- |Y||LF4||3.6L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. Cadillac ATS-V '16-'19 |- |Z||LH7||2.8&nbsp;L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 60° V6 (transversely mounted). H.O. '81-'84 Chevy Citation, '82-'84 Pontiac Phoenix, Oldsmobile Omega ES, Buick Skylark, '83-'84 Pontiac 6000 STE, '84 Chevy Celebrity |- |Z||LB4||4.3L||V6||Fuel injection#Throttle Body injection|TBI||OHV||Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '85 Chevy Impala, '85-'90 Caprice,<br /> '92-'93 Caprice 9C6 taxi, '85-'88 Monte Carlo, '85-'86 Pontiac Parisienne, '86-'87 Grand Prix,<br> '86 Bonneville. |- |Z||LAT||2.4L||I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Mild Hybrid. GM Ecotec Gen II. VVT. '10 Chevy Malibu Hybrid |- |Z||LUZ||2.0&nbsp;L||I4 Turbo||Direct injection <br /> Common-rail Diesel||DOHC,<br /> 16 valve||GM Family B Diesel (Based on Fiat JTD engine). Made by Opel in Kaiserslautern, Germany.<br /> Iron Block, Aluminum Heads. '14-'15 Chevy Cruze Diesel. |- |1||LC1||2.8&nbsp;L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 60° V6 (longitudinally mounted). '82-'84 Camaro/Firebird. |- |1||LL8||2.0&nbsp;L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Chevrolet "122" engine. '87-'89 Chevy/Olds/Buick J-cars & Chevy L-cars. |- |1||L67||3.8&nbsp;L||V6 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Supercharged Series I). '91-'95 Buick Park Avenue Ultra,<br /> '92-'95 Pontiac Bonneville, Oldsmobile 98, '95 Buick Riviera, Oldsmobile LSS |- |1||L67||3.8&nbsp;L||V6 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Supercharged Series II). '96-'05 Buick Park Avenue Ultra,<br /> '96-'99 Buick Riviera, Oldsmobile LSS, '96-'03 Pontiac Bonneville, '97-'03 Grand Prix,<br /> '97-'04 Buick Regal, '04-'05 Chevy Impala SS, Monte Carlo SS Supercharged |- |1||LZ9||3.9L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||GM High Value 60° V6. VVT.<br /> '06-'07 Chevy Malibu SS, '06-'09 Pontiac G6, '06 Chevy Monte Carlo, Impala, '09-'10 Buick Lucerne |- |1||2H0||1.8&nbsp;L||Straight-4|I4||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 1 engine, Gen III. VVT. Made in Szentgotthárd, Hungary. '08 (& '09 in Canada) Saturn Astra |- |1||LE5||2.4&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. '11 & some '12 Chevy Malibu w/LE5 engine. |- |2||LQ9||2.5L||I4||Fuel injection#Throttle Body injection|TBI||OHV||Pontiac Iron Duke/Tech IV engine. Longitudinally mounted. '82-'85 Camaro/Firebird. |- |2||LS3||1.0&nbsp;L||Straight-3|I3 Turbo||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 6 valve ||Suzuki G10T engine. '87-'88 Chevrolet Sprint Turbo |- |2||LY8||1.3&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 16 valve||Suzuki G13BB engine. '98-'01 Chevrolet Metro |- |2||L26||3.8&nbsp;L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Series III). '04-'08 Pontiac Grand Prix, '05-'09 Buick LaCrosse, '06-'08 Buick Lucerne |- |2||L77||6.0&nbsp;L||V8||Fuel injection#Sequential Multi-port fuel injection|SFI||OHV||Gen IV Chevy Small-Block V8. Aluminum Block & Heads. With Active Fuel Management.<br /> E85 Flex Fuel. '11-'17 Chevy Caprice PPV. |- |3||LC8||3.8&nbsp;L||V6|V6 Turbo||4 Barrel Carburetor |4BBL||OHV||Buick V6. 231 cu. in. '81-'82 Buick Regal, Riviera, '81 Chevy Monte Carlo. |- |3||LG3||3.8&nbsp;L||V6||Fuel injection#(Sequential) Multi-port injection|MFI/SFI||OHV||Buick V6. '84-'88 Oldsmobile Cutlass Ciera, Buick Century, '85 & '87 Oldsmobile 98, Buick Electra,<br /> '86-'88 Oldsmobile Delta 88, Buick LeSabre, '87 Oldsmobile Toronado, Buick Riviera,<br /> '87-'88 Pontiac Bonneville. |- |3||LW2||4.5&nbsp;L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Cadillac High Technology V8. '90 Cadillac DeVille/Fleetwood/Sixty Special/Eldorado/Seville. |- |3||L40||2.3&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||Oldsmobile Quad 4 ("Quad OHC"). '92-'94 Pontiac Grand Am, Oldsmobile Achieva, Buick Skylark |- |3||LZG||3.9L||V6||Fuel injection#Sequential Multi Port Fuel injection|SFI||OHV||E85 Flex Fuel. GM High Value 60° V6. VVT. Active Fuel Management. '08 Chevy Impala |- |3||LFX||3.6L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. E85 Flex Fuel.<br /> '12-'16 Buick LaCrosse, '12-'15 Chevrolet Camaro, Cadillac CTS, '12-'17 Chevrolet Caprice PPV,<br /> '12-'20 Chevrolet Impala, '14-'16 Chevrolet Impala Limited, '13-'15 Cadillac ATS, '13-'19 Cadillac XTS |- |3||LT6||5.5&nbsp;L||V8||Direct injection|DI||DOHC,<br /> 32 valve||Chevrolet Gemini Small-Block V8. Aluminum Block & Heads. Flat-plane crank. VVT.<br /> For mid-engine C8 Corvette Z06 '23+. |- |4||LC4||4.1&nbsp;L||V6|V6||4 Barrel Carburetor |4BBL||OHV||Buick V6. '81-'84 Buick LeSabre, Electra, Riviera, Oldsmobile Toronado, '81-'82 Cadillac DeVille, Fleetwood Brougham, Eldorado, Seville, '81-'83 Oldsmobile 98, '82-'84 Buick Regal,<br /> '82 Pontiac Grand Prix, Bonneville G |- |4||LC9||1.6&nbsp;L||Straight-4|I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Toyota 4A-C engine. '85-'88 Chevy Nova |- |4||LN2||2.2&nbsp;L||Straight-4|I4||Fuel injection#(Sequential) Multi-port injection|MPI/SFI||OHV||Chevrolet "122" engine. '92-'02 Cavalier, '95-'02 Sunfire, '92-'96 Corsica/Beretta, '93 Lumina,<br /> '93-'96 Cutlass Ciera, Century. |- |4||L32||3.8&nbsp;L||V6 Supercharged||Fuel injection#Sequential Multi-port injection|SFI||OHV||Buick V6 (3800 Supercharged Series III). '04-'07 Pontiac Grand Prix |- |4||LUU||1.4L||I4||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. VVT. ([[w:EREV|Range extender]]). Early production engines were made in Aspern, Austria; later made in Flint, MI. '11-'15 Chevy Volt, '14 & '16 Cadillac ELR. |- |4||LT2||6.2&nbsp;L||V8||Direct injection|DI||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. Active Fuel Management. VVT.<br /> For mid-engine C8 Corvette Stingray '20+. |- |4||LT2||6.2&nbsp;L||V8||Direct injection|DI||OHV||Full Hybrid. Gen V Chevy Small-Block V8. Aluminum Block & Heads. Active Fuel Management. VVT.<br /> For mid-engine C8 Corvette E-Ray '24+. |- |5||LW9||2.5L||I4||2 Barrel Carburetor |2BBL||OHV||Pontiac Iron Duke engine. '81 Chevy Citation, Pontiac Phoenix, Oldsmobile Omega, Buick Skylark. |- |5||LR6||4.5&nbsp;L||V8||Fuel injection#Throttle Body injection|TBI (DFI)||OHV||Cadillac High Technology V8. '88-'89 Cadillac DeVille/Fleetwood/Sixty Special/Eldorado/Seville. |- |5||LY9||1.0&nbsp;L||Straight-3|I3||2BBL||SOHC,<br /> 6 valve ||Suzuki G10A engine. '86 Chevrolet Sprint |- |5||LM9||1.0&nbsp;L||Straight-3|I3||2BBL||SOHC,<br /> 6 valve ||Suzuki G10A engine. '87-'88 Chevrolet Sprint |- |5||LW0||1.6&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Toyota 4A-GE engine. '88 Chevy Nova Twin Cam, '90-'92 Geo Prizm GSi |- |5||LW0||1.6&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Isuzu 4XE1-UW engine. '90-'91 Geo Storm GSi |- |5||LT4||5.7&nbsp;L||V8||Fuel injection#Sequential Multi-port injection|SFI||OHV||Gen II Chevy Small-Block V8. '96 Corvette (man. trans.) |- |5||LAT||2.4L||I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Mild Hybrid. GM Ecotec Gen II. VVT. '07-'09 Saturn Aura Green Line, '08-'09 Chevy Malibu Hybrid |- |5||LAP||2.2&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. '10 Chevy Cobalt. |- |5||LFW||3.0L||V6||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. '12-'13 Cadillac CTS, '14 CTS wagon |- |5||L3A||1.5L||I4||Direct Injection|DI||DOHC,<br /> 16 valve||GM Small Gasoline Engine. VVT. ([[w:EREV|Range extender]]). '16-'19 Chevy Volt. |- |5||LWC||1.6L||I4 Turbo||Direct Injection|DI||DOHC,<br /> 16 valve||GM Medium Gasoline Engine, H.O. VVT. Made in Szentgotthárd, Hungary. '16-'19 Buick Cascada |- |5||LS6||6.7&nbsp;L||V8||Port/Direct injection||OHV||Gen VI Chevy Small-Block V8. Aluminum Block & Heads. Active Fuel Management. VVT.<br /> For mid-engine C8 Corvette Stingray, Grand Sport '27+. |- |5||LS6||6.7&nbsp;L||V8||Port/Direct injection||OHV||Full Hybrid. Gen VI Chevy Small-Block V8. Aluminum Block & Heads. Active Fuel Management. VVT.<br /> For mid-engine C8 Corvette Grand Sport X '27+. |- |6||L81||5.7&nbsp;L||V8||4 Barrel Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8. '81 Corvette |- |6||LM1||5.7&nbsp;L||V8||4 Barrel Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8. '83-'85 Impala 9C1 Police, '86-'88 Caprice 9C1 Police |- |6||L73||1.6&nbsp;L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||GM Family 1 engine. Made in South Korea by Daewoo. '88-'93 Pontiac LeMans |- |6||LP2||1.0&nbsp;L||Straight-3|I3||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 6 valve ||Suzuki G10A engine. '89-'97 Geo Metro, '98-'00 Chevrolet Metro |- |6||L01||1.6&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Toyota 4A-FE engine. '89-'97 Geo Prizm base/LSi |- |6||L01||1.6&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 12 valve||Isuzu 4XE1-V engine. '90-'93 Geo Storm (base model) |- |6||L42||2.2&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen I (Bi-Fuel Gas/CNG). '03-'04 Chevy Cavalier |- |6||L91||1.6&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||E-TEC II. '04-'07 Chevy Aveo |- |6||LXT||1.6&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||E-TEC II. '08 Chevy Aveo |- |6||LGW||3.0L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. VVT. Active Fuel Management. '16-'19 Cadillac CT6 |- |6||LT4||6.2&nbsp;L||V8 Supercharged||Direct injection|DI||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. With Active Fuel Management. VVT.<br /> '15-'19 Corvette Z06, '17-'24 Camaro ZL1, '16-'19 Cadillac CTS V-Series,<br /> '22+ Cadillac CT5-V Blackwing |- |7||LU5||5.0&nbsp;L||V8||Cross-Fire fuel injection|CFI||OHV||Gen I Chevy Small-Block V8. (305 cu. in.) '82 Camaro, Firebird. Dual throttle-body fuel injection. |- |7||L69||5.0&nbsp;L||V8||4 Barrel Quadrajet Carburetor |4BBL||OHV||Gen I Chevy Small-Block V8 (High Output 5.0L). (305 cu. in.). '83 F-cars, '83 Chevy Monte Carlo SS |- |7||LC5||1.5&nbsp;L||I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Isuzu 4XC1 engine. '86-'88 Chevrolet Spectrum, '89 Geo Spectrum. |- |7||LC2||3.8&nbsp;L||V6|V6 Turbo||Fuel injection#Sequential multi-port injection|SFI||OHV||Intercooled. Buick V6. '86-'87 Buick Regal. '89 Pontiac 20th Anniversary Turbo Trans Am |- |7||LC7||4.1&nbsp;L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Cadillac High Technology V8. '87-'88 Cadillac Allante. |- |7||L05||5.7&nbsp;L||V8||Fuel injection#Throttle Body injection|TBI||OHV||Gen I Chevy Small-Block V8. '89-'93 Chevy Caprice (police only for '89-'91),<br /> '92-'93 Buick Roadmaster, '92 Oldsmobile Custom Cruiser, '90-'92 Cadillac Brougham, '93 Fleetwood. |- |7||LL0||1.9&nbsp;L||Straight-4|I4||Fuel injection#Multi-port injection|MFI||DOHC,<br /> 16 valve||Saturn I4 engine. '91-'02 Saturn S-Series |- |7||LY7||3.6&nbsp;L||V6||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 24 valve||GM High Feature V6. VVT. '04-'09 Cadillac CTS, '05-'07 STS, '05-'08 Buick LaCrosse,<br /> '07-'09 Pontiac G6, Saturn Aura, '08-'09 Pontiac G8, '08-'12 Chevy Malibu |- |7||LT1||6.2&nbsp;L||V8||Direct injection|DI||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. With Active Fuel Management. VVT.<br /> '14-'19 Corvette, '16-'24 Camaro SS |- |7||LT7||5.5&nbsp;L||V8 Twin Turbo||Port/Direct injection||DOHC,<br /> 32 valve||Chevrolet Gemini Small-Block V8. Aluminum Block & Heads. Flat-plane crank. VVT.<br /> For mid-engine C8 Corvette ZR1 '25+. (1,064 hp) |- |7||LT7||5.5&nbsp;L||V8 Twin Turbo||Port/Direct injection||DOHC,<br /> 32 valve||Full Hybrid. Chevrolet Gemini Small-Block V8. Aluminum Block & Heads. Flat-plane crank. VVT.<br /> For mid-engine C8 Corvette ZR1X '26+. (1,250 hp) |- |8||LV8||4.3&nbsp;L||V8||2 Barrel Carburetor |2BBL||OHV||Oldsmobile "Rocket" V8 (260 cu. in.) '82 Oldsmobile Cutlass, Delta 88. |- |8||LT8||4.1&nbsp;L||V8||Fuel injection#Throttle Body injection|TBI (DFI)||OHV||Cadillac High Technology V8. '82-'87 Cadillac DeVille, Eldorado, Seville, '82-'85 Fleetwood Brougham, '85-'87 Fleetwood, '87 Fleetwood Sixty Special. |- |8||LC8||3.8&nbsp;L||V6|V6 Turbo||4 Barrel Carburetor |4BBL||OHV||Buick V6. '83 Buick Regal, Riviera. |- |8||L83||5.7&nbsp;L||V8||Cross-Fire fuel injection|CFI||OHV||Gen I Chevy Small-Block V8. '82, '84 Corvette. Dual throttle-body fuel injection. 1st fuel injected Corvette since 1965. |- |8||L98||5.7&nbsp;L||V8||Tuned-port fuel injection|TPI||OHV||Gen I Chevy Small-Block V8. '85-'91 Corvette, '87-'92 Chevy Camaro, Pontiac Firebird. |- |8||LQ6||4.5&nbsp;L||V8||Fuel injection#Multi-port fuel injection|MFI||OHV||Cadillac High Technology V8. '89-'92 Cadillac Allante. |- |8||L24||1.9&nbsp;L||Straight-4|I4||Fuel injection#Multi-port injection|MFI||SOHC,<br /> 8 valve||Saturn I4 engine. '95-'02 Saturn S-Series |- |8||LX9||3.5&nbsp;L||V6||Fuel injection#Sequential Multi-port injection|SFI||OHV||GM High Value 60° V6. 3498cc. '04-'06 Chevy Malibu, '05-'06 Pontiac G6 |- |8||LF3||3.6L||V6 Twin Turbo||Direct Injection|DI||DOHC,<br /> 24 valve||GM High Feature V6. '14-'19 Cadillac CTS V-Sport, XTS V-Sport |- |8||LV6||1.8&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Isuzu 4XF1 engine. '92-'93 Geo Storm GSi. |- |8||LV6||1.8&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Toyota 7A-FE engine. '93-'97 Geo Prizm |- |8||LV6||1.8&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Toyota 1ZZ-FE engine. VVT-i from '00. '98-'02 Chevrolet Prizm, '03-'08 Pontiac Vibe |- |8||LAY||1.8&nbsp;L||Straight-4|I4||Fuel injection#Sequential multi-port injection|SFI||DOHC,<br /> 16 valve||Toyota 2ZR-FE engine. Dual VVT-i. '09-'10 Pontiac Vibe |- |9||L17||1.6&nbsp;L||Straight-4|I4||2 Barrel Carburetor |2BBL||SOHC,<br /> 8 valve||Isuzu G161Z engine made by GM in US. '81 Chevy Chevette, Pontiac T1000 |- |9||L62||6.0&nbsp;L||V8||Fuel injection#Throttle Body injection|TBI (DFI)||OHV||Cadillac 472-series V8 engine family. V8-6-4 cylinder deactivation.<br /> '81 Cadillacs, '82-'84 Fleetwood Limousine. |- |9||LC3||3.8&nbsp;L||V6||2 Barrel Carburetor |2BBL||OHV||Chevrolet 90° V6 (Chevy Small-Block V8 Derived). 229 cu. in. <br /> '83 Malibu, '83-'84 Monte Carlo, Impala, Caprice, '83 Pontiac Parisienne. |- |9||LG8||5.0&nbsp;L||V8||4 Barrel Carburetor |4BBL||OHV||Oldsmobile "Rocket" V8 (307 cu. in.) H.O. '83-'84 Hurst/Olds, '85-'87 Oldsmobile Cutlass 442 |- |9||LM9||3.8&nbsp;L||V6|V6 Turbo||Fuel injection#Sequential multi-port injection|SFI||OHV||Buick V6. '84-'85 Buick Regal, Riviera. |- |9||L44||2.8&nbsp;L||V6||Fuel injection#Multi-port fuel injection|MFI||OHV||Chevrolet 60° V6 (transversely mounted). H.O. '85-'88 Pontiac Fiero |- |9||LC0||1.5&nbsp;L||I4 Turbo||Fuel injection#Multi-port fuel injection|MFI||SOHC,<br /> 8 valve||Isuzu 4XC1-T engine. '87-'88 Chevrolet Spectrum Turbo |- |9||LK0||1.9&nbsp;L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||Saturn I4 engine. '91-'94 Saturn S-Series |- |9||L37||4.6&nbsp;L||V8||Fuel injection#Sequential Multi-port injection|SFI||DOHC,<br /> 32 valve||Cadillac Northstar V8 (H.O. FWD) (Premium V). '93 Cadillac Allanté,<br /> '93-'02 Cadillac Eldorado Touring Coupe, '93-'04 Cadillac Seville STS, '96-'05 Cadillac DeVille,<br /> '06-'11 Cadillac DTS, '08-'11 Buick Lucerne Super |- |9||L72||1.3&nbsp;L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve ||Suzuki G13BA engine. '95-'97 Geo Metro |- |9||LUJ||1.4L||I4 Turbo||Fuel injection#Sequential Multi-port fuel injection|SFI||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. VVT. Early production engines were made in Aspern, Austria; later made in Flint, MI. '11 Chevy Cruze |- |9||LL0||1.2&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||Daewoo S-TEC II engine (1249 cc). VVT. Made in Changwon, S. Korea. '13-'15 Chevy Spark. |- |9||LT5||6.2&nbsp;L||V8 Supercharged||Port/Direct injection||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. VVT. '19 Corvette ZR1. |- |0||LH8||1.8&nbsp;L||Straight-4|I4||Fuel injection#Throttle Body injection|TBI||SOHC,<br /> 8 valve||GM Family II engine. Made in Brazil.<br /> '82-'86 Pontiac J2000/2000/Sunbird, Oldsmobile Firenza, Buick Skyhawk. |- |0||LAX||2.4&nbsp;L||Straight-4|I4||Fuel injection#Sequential multi-port injection|SFI||DOHC,<br /> 16 valve||Toyota 2AZ-FE engine. VVT-i. '09-'10 Pontiac Vibe |- |0||LE9||2.4&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. E85 Flex-Fuel. 2010 Chevy Malibu. |- |0||LE5||2.4&nbsp;L||Straight-4|I4||Fuel injection#Multi-port fuel injection|MFI||DOHC,<br /> 16 valve||GM Ecotec Gen II. VVT. Most '12 Chevy Malibu w/LE5 engine. |} H.O.=High Output, CNG=Compressed Natural Gas, VVT=Variable Valve Timing, VVL=Variable Valve Lift ====Motor codes for electric passenger cars==== {| class="wikitable" |- ! VIN !! RPO !! Fuel !! Drive Wheels !! Application/Notes |- | 5 ||LN1|| Electricity || Front || '97, '99 General Motors EV1 |- | 0 ||EN0|| Electricity || Front || '14-'16 Chevrolet Spark EV |- | 0 ||EN0|| Electricity || Front || '17-'23 Chevrolet Bolt EV |- | 0 ||EN0|| Electricity || Front || '22-'23 Chevrolet Bolt EUV |- |} ====Motor codes for LFP-powered electric passenger cars==== {| class="wikitable" |- ! VIN !! Motor <br /> RPO code !! # of Motors !! Battery Pack <br /> RPO code !! Fuel !! Drive Wheels !! Application/Notes |- |- | V ||P9D (HPB)|| 1 || EJW || Electricity || Front || '27 Chevrolet Bolt |} LFP=Lithium Iron Phosphate ====Motor codes for Ultium-powered electric passenger cars==== {| class="wikitable" |- ! VIN !! Motor <br /> RPO code !! # of Motors !! Battery Module <br /> RPO code !! # of Modules !! Fuel !! Drive Wheels !! Application/Notes |- |- | 1 ||X0E|| 2 || EXN || 16 || Electricity || All || '25- Cadillac Celestiq |- | 2 ||X0E|| 2 || EHT || 16 || Electricity || All || '25- Cadillac Celestiq <br> (Battery Module RPO code EHT is Configuration B) |} ====Engine codes for light trucks==== GM encodes the engine type in character 8 of the VIN. The following table outlines the various engines encoded there: {| class="wikitable" |- ! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes/Applications |- | A ||LD5|| 3.8L || V6 || Gas ||OHV||2-bbl carb. Buick V6. (231 cu. in.) '81-'84 Chevy El Camino, GMC Caballero (CA emissions). |- | A ||LR1|| 1.9L || I4 || Gas ||SOHC,<br /> 8 valve||2-bbl carb. Isuzu G200 engine imported from Japan.<br /> '82-'85 Chevy S-10/GMC S-15, '83-'85 Chevy S-10 Blazer/GMC S-15 Jimmy |- | A ||L38|| 2.5L || I4 || Gas ||OHV||TBI. Pontiac Iron Duke/Tech IV engine. '91-'93 Chevy S-10/GMC Sonoma. |- | A ||LH2|| 4.6L || V8 || Gas ||DOHC,<br /> 32 valve||SFI. Cadillac Northstar V8 (For RWD) (Premium V). '04-'09 Cadillac SRX |- | A ||L20|| 4.8L || V8 || Gas/E85 ||OHV|| Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block/Aluminum Heads. VVT.<br /> '10-'13 GMT900 pickups, '10-'14 Express/Savana |- | A ||LCV|| 2.5L || I4 || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. Direct Injection. VVT. '15-'22 Chevy Colorado, GMC Canyon,<br /> '17-'20 Buick Envision, '17-'21 GMC Acadia, '19-'21 Chevy Blazer |- | B ||LR2|| 2.8L || V6 || Gas ||OHV||2-bbl carb. Chevrolet 60° V6.<br /> '82-'85 Chevy S-10/GMC S-15, '83-'85 Chevy S-10 Blazer/GMC S-15 Jimmy |- | B ||LU2|| 4.3L || V6 || Gas ||OHV|| TBI. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '90-'91 Astro/Safari higher output engine option. |- | B ||L81|| 3.0L || V6 || Gas ||DOHC,<br /> 24 valve||SFI. Opel 54° V6 engine (Made in the UK). '02-'03 Saturn Vue |- | B ||L33|| 5.3L || V8 || Gas ||OHV||SFI. Gen III Chevrolet Small-Block V8. Vortec 5300 H.O. 310hp. Aluminum Block & Heads.<br /> '05-'06 Silverado/Sierra 1500 4wd ext. cab short bed,<br> '07 Silverado Classic 1500/Sierra Classic 1500 4wd ext. cab short bed. |- | B ||LE8|| 2.2L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex-Fuel. SFI. GM Ecotec Gen II. VVT. '09-'10 Chevy HHR |- | B ||LC8|| 6.0L || V8 || Gas/CNG ||OHV||Bi-Fuel (Also Gas/LPG in Express/Savana). SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT. '11-'20 Express/Savana, '13-'19 Silverado HD/Sierra HD. |- | B ||LUV|| 1.4L ||I4 Turbo|| Gas ||DOHC,<br /> 16 valve||GM Family 0 Engine, Gen III. SFI. VVT.<br /> '13-'21 Buick Encore, '15-'21 Chevy Trax (also '13-'14 Trax in Canada) |- | C ||LH6|| 6.2L || V8 || Diesel ||OHV||Detroit Diesel V8. For sub-8,500 lb. GVWR trucks '82-'93. '82-'86 C/K pickups, '87 R/V pickups,<br /> '88-'93 C/K, Sierra pickups, '82-'91 Blazer/Jimmy, Suburban, '83-'93 full-size vans |- | C ||L34|| 2.0L || I4 || Gas ||DOHC,<br /> 16 valve||Suzuki J20A engine. MFI. '99-'03 Chevrolet Tracker |- | C ||LY2|| 4.8L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Iron Block/Aluminum Heads.<br /> '07-'09 GMT900 pickups, '07-'09 Tahoe/Yukon, '08-'09 Express/Savana |- | C ||LAF|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Equinox, GMC Terrain '11. |- | C ||L83|| 5.3L || V8 || Gas/E85 ||OHV|| Flex Fuel. Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. Active Fuel Management<br /> '14-'19 K2XX pickups, '15-'20 K2XX SUVs. |- | C ||L2R|| 2.7L ||I4 Turbo||| Gas ||DOHC,<br /> 16 valve||GM L3B Tripower engine ("TurboMax") - Detuned version. Direct Injection. VVT, VVL. Active Fuel Management. '23-'24 Chevy Colorado. |- | D ||LE3|| 4.1L || I6 || Gas ||OHV||2-bbl carb. Chevrolet Turbo-Thrift I6.<br /> '81-'84 Chevy/GMC C/K pickups, full-size vans, '81-'82 Blazer/Jimmy |- | D ||LG6|| 3.1L || V6 || Gas ||OHV||TBI. Chevrolet 60° V6. '90-'95 U-body minivans. |- | D ||L61|| 2.2L || I4 || Gas ||DOHC,<br /> 16 valve||SFI. GM Ecotec Gen I. '02-'07 Saturn Vue, '06 Chevy HHR. |- | D ||L61|| 2.2L || I4 || Gas ||DOHC,<br /> 16 valve||SFI. GM Ecotec Gen II. '07-'08 Chevy HHR. |- | D ||LLT|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. Direct Injection. '09-'16 GMC Acadia, '17 GMC Acadia Limited,<br /> '09-'17 Chevrolet Traverse, Buick Enclave, '09-'10 Saturn Outlook |- | D ||LBZ|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine.<br /> Mid '06 Silverado HD/Sierra HD & '07 Silverado Classic HD/Sierra Classic HD |- | D ||L84|| 5.3L || V8 || Gas/E85 ||OHV|| Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. With Dynamic Fuel Management<br /> '19+ Chevy/GMC Silverado 1500/Sierra 1500, '21+ Tahoe/Yukon, Suburban/Yukon XL. |- | E ||LN8|| 2.5L || I4 || Gas ||OHV||TBI. Pontiac Iron Duke/Tech IV engine.<br /> '85-'90 Chevy/GMC S-10/S-15, Astro/Safari Cargo Van, '85-'88 S-10 Blazer/S-15 Jimmy. |- | E ||LLR|| 3.7L || I5 || Gas ||DOHC,<br /> 20 valve||Atlas I5. SFI. VVT.<br /> '07-'12 Colorado/Canyon, '07-'08 Isuzu i-370, '07-'10 Hummer H3, '09-'10 Hummer H3T |- | E ||LA1|| 3.4L || V6 || Gas ||OHV||Chevrolet 60° V6. '96 GMT199 (U-body) minivans, '97-'05 GMT200 (U-body) minivans,<br /> '01-'05 Pontiac Aztek, '02-'05 Buick Rendezvous |- | F ||LF3|| 5.0L || V8 || Gas ||OHV|| 4-bbl carb. Gen I Chevrolet Small-Block V8. '81-'86 C/K, full-size vans, '81-'82 Blazer/Jimmy.<br /> CA emissions version of LE9 5.0 V8. |- | F ||L65|| 6.5L || V8 Turbo || Diesel ||OHV||Detroit Diesel V8. For over-8,500 lb. GVWR Chevy C/K, GMC Sierra trucks '92-'02,<br /> Chevy/GMC Suburban 1500/2500 '94-'99, over-8,500 lb. GVWR Express/Savana '96-'02 |- | F ||LNJ|| 3.4L || V6 || Gas ||OHV||Chevrolet 60° V6. Made in China by SAIC-GM. '05-'09 Chevy Equinox, '06-'09 Pontiac Torrent. |- | F ||L94|| 6.2L || V8 || Gas/E85 ||OHV||Flex-Fuel. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. SFI. VVT. Active Fuel Management. '10-'14 GMC Yukon Denali/Yukon XL Denali, Cadillac Escalade/Escalade ESV. |- | F ||L20|| 4.8L || V8 || Gas/E85 ||OHV|| Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block/Aluminum Heads. VVT.<br /> '15-'17 Express/Savana |- | F ||L82|| 5.3L || V8 || Gas ||OHV|| Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. With Active Fuel Management<br /> '19-'21 Chevy Silverado 1500, GMC Sierra 1500 (T1XX). |- | G ||LG9|| 5.0L || V8 || Gas ||OHV|| 2-bbl carb. Gen I Chevrolet Small-Block V8. '81 Chevy/GMC C/K pickups, Blazer/Jimmy, full-size van |- | G ||L18|| 8.1L || V8 || Gas ||OHV||MFI. Vortec 8100. Gen VII Chevrolet Big-Block V8. '01-'02 C3500HD, '01-'06 Silverado HD/Sierra HD, '07 Silverado Classic HD/Sierra Classic HD, '01-'06 Suburban/Yukon XL 2500, '02-'06 Avalanche 2500, '01-'02 Express/Savana |- | G ||L96|| 6.0L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '10-'19 Silverado HD/Sierra HD, '10-'13 Suburban 2500/Yukon XL 2500, '16-'19 Suburban 3500,<br /> '10-'20 Express/Savana. |- | G ||LSD|| 1.5L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Small Gasoline Engine. Direct Injection. VVT. '23+ Chevy Equinox, GMC Terrain |- | H ||LG4|| 5.0L || V8 || Gas ||OHV||4-bbl carb. Gen I Chevy Small-Block V8. (305 cu. in.) '81-'87 Chevy El Camino, GMC Caballero. |- | H ||LE9|| 5.0L || V8 || Gas ||OHV|| 4-bbl carb. Gen I Chevrolet Small-Block V8. '81-'86 C/K pickups, Blazer/Jimmy, Suburban, full-size vans |- | H ||L03|| 5.0L || V8 || Gas ||OHV|| TBI. Gen I Chevrolet Small-Block V8. '87 R/V pickups, '88-'95 C/K, Sierra pickups, '87-'95 full-size vans, '87 Blazer/Jimmy, Suburban. |- | H ||LN2|| 2.2L || I4 || Gas ||OHV||SFI. Chevrolet "122" engine. '03 Chevy S-10/GMC Sonoma |- | H ||LS2|| 6.0L || V8 || Gas ||OHV||SFI. Gen IV Chevy Small-Block V8. Chevy SSR '05-'06, Trailblazer SS '06-'09, Saab 9-7X Aero '08-'09. |- | H ||LV3|| 4.3L || V6 || Gas/E85 ||OHV||Flex Fuel. Chevrolet 90° V6 - Gen V Chevrolet Small-Block V6 (EcoTec3). Direct injection, VVT. Active Fuel Management. '14-'21 Chevy Silverado 1500/GMC Sierra 1500. |- | J ||L39|| 4.4L || V8 || Gas ||OHV||2-bbl carb. Gen I Chevy Small-Block V8 (267 cu. in.) '81-82 Chevy El Camino, GMC Caballero. |- | J ||LL4|| 6.2L || V8 || Diesel ||OHV||Detroit Diesel V8. For over-8,500 lb. GVWR trucks '82-'93. '82-'86 C/K pickups, '87-'91 R/V pickups,<br /> '88-'93 C/K, Sierra pickups, '82-'91 Blazer/Jimmy, Suburban, '83-'93 full-size vans |- | J ||L29|| 7.4L || V8 || Gas ||OHV|| MFI. Vortec 7400. Gen VI Chevrolet Big-Block V8.<br /> '96-'00 C/K, Sierra pickups, Express/Savana, '96-'99 Suburban 2500 |- | J ||LY5|| 5.3L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. Iron Block & Aluminum Heads.<br /> '07-'09 Silverado/Sierra 1500, Tahoe/Yukon, Suburban/Yukon XL 1500, Avalanche |- | J ||LZ1|| 6.0L || V8 || Gas-Electric Hybrid ||OHV||2-Mode Hybrid. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. VVT. Active Fuel Management. '10-'13 Tahoe Hybrid, Yukon Hybrid, Escalade Hybrid, Silverado Hybrid, Sierra Hybrid |- | J ||L86|| 6.2L || V8 || Gas ||OHV||Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. Active Fuel Management. <br /> '14-18 Chevy/GMC Silverado 1500/Sierra 1500,<br /> '18-20 Chevy Tahoe Premier, '19-'20 Chevy Suburban Premier, GMC Yukon/Yukon XL SLT,<br /> '15-'20 GMC Yukon Denali/Yukon XL Denali, Cadillac Escalade/Escalade ESV. |- | K ||LC3|| 3.8L || V6 || Gas ||OHV||2-bbl carb. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). 229 cu. in. <br /> '81-'82 Chevy El Camino, GMC Caballero (49-state emissions) |- | K ||L05|| 5.7L || V8 || Gas ||OHV|| TBI. Gen I Chevrolet Small-Block V8. '87 R/V pickups, '88-'95 C/K, Sierra pickups, '87-'95 full-size vans, '96 G-Classic full-size vans, '87-'94 Blazer, '95 Tahoe, '87-'91 Jimmy, '92-'95 Yukon, '87-'95 Suburban. |- | K ||LY6|| 6.0L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '07-'09 Silverado HD/Sierra HD, '07-'09 Suburban 2500/Yukon XL 2500, '08-'09 Express/Savana |- | K ||LEA|| 2.4L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex Fuel. GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Equinox, GMC Terrain '12-'17,<br /> Chevy Captiva Sport '12-'14, Chevy Orlando '14. |- | K ||L3B|| 2.7L ||I4 Turbo||| Gas ||DOHC,<br /> 16 valve||GM L3B Tripower engine ("TurboMax"). Direct Injection. VVT, VVL. Active Fuel Management.<br /> '19+ Chevy Silverado 1500, GMC Sierra 1500, '23+ Chevy Colorado, GMC Canyon. |- | L ||LS9|| 5.7L || V8 || Gas ||OHV|| 4-bbl carb. Gen I Chevrolet Small-Block V8. For sub-8,500 lb. GVWR trucks, vans, Suburban, Blazer/Jimmy (CA) '81-'86. |- | L ||L27|| 3.8L || V6 || Gas ||OHV||Buick V6 (3800 Series I). '92-'95 U-body minivans |- | L ||LX9|| 3.5L || V6 || Gas ||OHV||GM High Value 60° V6. 3498cc. SFI. '05-'06 GMT201 minivans, '06-'07 Buick Rendezvous |- | L ||LH8|| 5.3L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads.<br /> '08-'09 Hummer H3 Alpha, '09 Colorado/Canyon, Hummer H3T Alpha |- | L ||LGH|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. Mid '10-'16 Express/Savana, '11-'12 Silverado HD/Sierra HD chassis cabs |- | L ||L87|| 6.2L || V8 || Gas ||OHV||Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. Dynamic Fuel Management.<br /> '19+ Chevy/GMC Silverado 1500/Sierra 1500, '21+ Tahoe/Yukon, Suburban/Yukon XL,<br /> Cadillac Escalade/Escalade ESV. |- | L ||L3T|| 1.3L || I3 Turbo || Gas ||DOHC,<br /> 12 valve||GM E-Turbo Engine. Direct Injection. VVT. '20+ Buick Encore GX, '21+ Chevy Trailblazer. |- | M ||LT9|| 5.7L || V8 || Gas ||OHV|| 4-bbl carb. Gen I Chevy Small-Block V8.<br /> For over-8,500 lb. GVWR C/K trucks, full-size vans, Suburban '81-'86, full-size van cutaway '81-'88.<br /> '88 Chevy/GMC R30/3500 Chassis Cab w/C7C (10,500 lb. GVWR),<br /> V30/3500 Chassis Cab w/C7E (11,000 lb. GVWR) |- | M ||L30|| 5.0L || V8 || Gas ||OHV||Gen 1+ Chevrolet Small-Block V8. Vortec 5000. CPI.<br /> '96-'99 Chevy C/K, GMC Sierra, '96-'02 Express/Savana |- | M ||LNF|| 2.0L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. 2010 Chevy HHR SS. |- | M ||LH6|| 5.3L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. Aluminum Block & Heads.<br /> '05-'06 GMT370 SUVs (Trailblazer EXT/Envoy XL/Isuzu Ascender 7-psgr.), '05-'07 Buick Rainier,<br /> '05-'09 GMC Envoy Denali, Saab 9-7X, '06-'08 Chevy Trailblazer, '05 GMC Envoy XUV,<br /> '07-'09 Silverado/Sierra 1500 |- | M ||LAF|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Orlando '12. |- | M ||LE2|| 1.4L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Small Gasoline Engine. Direct Injection. VVT. '16-'19 & '21-'22 Buick Encore, '21-'22 Chevy Trax. |- | N ||L10|| 1.8L || I4 || Gas ||SOHC,<br /> 8 valve||2-bbl carb. Isuzu G180Z engine imported from Japan. '81-'82 Chevy LUV |- | N ||LF9|| 5.7L || V8 || Diesel ||OHV||Oldsmobile Diesel V8. '83-'84 Chevy El Camino/GMC Caballero. |- | N ||LB1|| 4.3L || V6 || Gas ||OHV|| 4-bbl carb. Chevrolet 90° V6 (Chevy Small-Block V8 Derived).<br /> '85 Astro/Safari, '85-'86 C/K pickups & full-size vans |- | N ||L19|| 7.4L || V8 || Gas ||OHV|| Mark IV Chevrolet Big-Block V8. TBI.<br /> '87-'90 R/V pickups, Suburban 2500, '88-'90 C/K, Sierra pickups, full-size vans |- | N ||L19|| 7.4L || V8 || Gas ||OHV|| Gen V Chevrolet Big-Block V8. TBI.<br /> '91 R/V pickups, '91-'95 C/K, Sierra pickups, Suburban 2500, full-size vans. '96 G-Classic full-size vans |- | N ||LZ4|| 3.5L || V6 || Gas ||OHV||GM High Value 60° V6. 3510cc. SFI. VVT. '08-'09 Saturn Vue |- | N ||LQ9|| 6.0L || V8 || Gas ||OHV|| Gen III Chevrolet Small-Block V8. Vortec 6000 H.O. or VortecMAX. Iron Block/Aluminum Heads.<br /> 345 hp. '02-'06 Cadillac Escalade, '03-'06 Cadillac Escalade ESV, '03-'06 Chevy Silverado SS,<br /> '05-'06 GMC Sierra Denali, '07 GMC Sierra Classic Denali. |- | N ||LGZ|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. Direct Injection. VVT. Active Fuel Management.<br /> '17-'22 Chevy Colorado, GMC Canyon. |- | P ||L49|| 6.5L || V8 || Diesel ||OHV||Detroit Diesel V8. For sub-8,500 lb. GVWR Chevy C/K, GMC Sierra trucks & full-size vans '94-'95 |- | P ||LM4|| 5.3L || V8 || Gas ||OHV||Gen III Chevrolet Small-Block V8. Vortec 5300. 290hp. Aluminum Block & Heads.<br /> '03-'04 Chevy SSR, '03-'04 GMT370 SUVs (Trailblazer EXT/Envoy XL/Isuzu Ascender 7-psgr.),<br /> '04 Buick Rainier, GMC Envoy XUV |- | P ||LE5|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||MFI. GM Ecotec Gen II. VVT. '06-'08 Chevy HHR, '08-'09 Saturn Vue |- | P ||LH9|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. VVT.<br /> '10-'12 Colorado/Canyon, '10 Hummer H3 Alpha, H3T Alpha |- | P ||LV1|| 4.3L || V6 || Gas ||OHV||Chevrolet 90° V6 - Gen V Chevrolet Small-Block V6 (EcoTec3). Direct injection, VVT.<br /> '18+ Chevy Express/GMC Savana. |- | P ||LBP|| 1.2L || I3 Turbo || Gas/E85 ||DOHC,<br /> 12 valve||Flex Fuel. GM E-Turbo Engine. Direct Injection. VVT.<br /> '25+ Buick Encore GX, Chevy Trailblazer, '25- Chevy Trax, Buick Envista. |- | R ||LL2|| 2.8L || V6 || Gas ||OHV||TBI. Chevrolet 60° V6. '86-'93 Chevy S-10, GMC S-15/Sonoma,<br /> '86-'89 Chevy S-10 Blazer/GMC S-15 Jimmy |- | R ||L31|| 5.7L || V8 || Gas ||OHV||Gen 1+ Chevrolet Small-Block V8. Vortec 5700. CPI.<br /> '96-'99 Chevy C/K, GMC Sierra, '96-'99 Chevy Tahoe/GMC Yukon, Chevy/GMC Suburban, '99-'00 GMC Yukon Denali, Cadillac Escalade, '00 Chevy Tahoe Limited/Z71, '96-'02 Chevy Express/GMC Savana. |- | R ||L8B|| 5.3L || V8 || Gas ||OHV||Mild Hybrid. Gen V Chevrolet Small-Block V8 (EcoTec3). Direct injection, VVT. Active Fuel Management. '16-'18 Chevy Silverado 1500, GMC Sierra 1500. |- | S ||LQ7|| 2.2L || I4 || Diesel ||OHV||Isuzu C220 engine imported from Japan. '81-'82 Chevy LUV, '84-'85 Chevy S-10/GMC S-15 |- | S ||L56|| 6.5L || V8 Turbo || Diesel ||OHV||Detroit Diesel V8. For sub-8,500 lb. GVWR Chevy C/K, GMC Sierra trucks '94-'99,<br /> Chevy Blazer '94, Chevy Tahoe 2-d '95-'99, GMC Yukon 2-d '94-'97 |- | S ||LL8|| 4.2L || I6 || Gas ||DOHC,<br /> 24 valve||Atlas I6. SFI. VVT. '02-'09 GMT360/370 SUVs (Chevy Trailblazer, GMC Envoy, Oldsmobile Bravada, Buick Rainier, Isuzu Ascender, Saab 9-7X) |- | S ||LGX|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6, 4th gen. Direct Injection. VVT. Active Fuel Management.<br /> '17+ Cadillac XT5, '17-'23 GMC Acadia, '19+ Chevrolet Blazer, '20-'25 Cadillac XT6. |- | S ||LK0|| 2.5L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||L3B engine family. Direct Injection. VVT. '24- Chevy Traverse, GMC Acadia, '25- Buick Enclave |- | T ||L25|| 4.8L || I6 || Gas ||OHV||1-bbl carb. Chevrolet Turbo-Thrift I6. '81-'86 Chevy/GMC C/K pickups, '88 R/V pickups |- | T ||LM7|| 5.3L || V8 || Gas ||OHV|| Gen III Chevrolet Small-Block V8. Iron Block & Aluminum Heads. Vortec 5300. 270/285/295hp.<br /> '99-'07 GMT800 pickups & SUVs including '02-'05 Escalade 2wd, '07 Silverado Classic 1500/<br> Sierra Classic 1500, '03-'07 Express/Savana |- | T ||LEA|| 2.4L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex Fuel. GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Orlando '13. |- | T ||LM2|| 3.0L || I6 Turbo|| Diesel ||DOHC,<br /> 24 valve|| Duramax Diesel I6. Aluminum Block & Heads. '20-'22 Silverado/Sierra 1500, '21-'24 Tahoe/Suburban, Yukon/Yukon XL, Escalade/Escalade ESV. |- | U ||LS5|| 1.6L || I4 || Gas ||SOHC,<br /> 8 valve||Suzuki G16A engine. TBI. '89-'95 Geo Tracker |- | U ||LQ4|| 6.0L || V8 || Gas ||OHV|| Gen III Chevrolet Small-Block V8. Iron Block & Aluminum Heads (Iron Heads in '99-'00).<br /> '99-'06 GMT800 pickups, '07 Silverado Classic 1500HD/Sierra Classic 1500HD,<br> '00-'06 Suburban/Yukon XL 2500, '01-'06 Yukon Denali/Yukon XL Denali,<br> '06 Suburban LTZ, '03-'07 Express/Savana, '03-'07 Hummer H2. |- | U ||LE9|| 2.4L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex-Fuel. GM Ecotec Gen II. 2011 Chevy HHR |- | U ||LH7|| 1.6L ||I4 Turbo|| Diesel ||DOHC,<br /> 16 valve||GM Medium Diesel engine ("Whisper Diesel"). Made by Opel in Szentgotthárd, Hungary.<br /> Aluminum Block & Heads. '18-'19 Chevy Equinox & GMC Terrain Diesel. |- | V ||LR4|| 4.8L || V8 || Gas ||OHV||Gen III Chevrolet Small-Block V8. Iron Block/Aluminum Heads.<br> '99-'06 GMT800 pickups, '07 Silverado Classic 1500/Sierra Classic 1500,<br /> '00-'06 Tahoe/Yukon, '03-'07 Express/Savana |- | V ||LE9|| 2.4L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex-Fuel. GM Ecotec Gen II. 2009-2010 Chevy HHR |- | V ||LYX|| 1.5L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Small Gasoline Engine. Direct Injection. VVT. '18-'22 Chevy Equinox, GMC Terrain |- | W ||LE8|| 7.4L || V8 || Gas ||OHV|| Mark IV Chevrolet Big-Block V8. 4bbl carb. '81-'86 Chevy/GMC C/K pickups, Suburban.<br /> '88-'89 Chevy/GMC R30/3500 Chassis Cab w/C7C (10,500 lb. GVWR),<br /> V30/3500 Chassis Cab w/C7E (11,000 lb. GVWR) |- | W ||L35|| 4.3L || V6 || Gas ||OHV|| CPI. Vortec 4300 H.O. Chevrolet 90° V6 (Chevy Small-Block V8 Derived).<br /> '92-'95 Sonoma, S-10 Blazer/Jimmy, Astro/Safari, '94-'95 S-10, '92-'94 Oldsmobile Bravada |- | W ||L35|| 4.3L || V6 || Gas ||OHV|| SFI. Vortec 4300 H.O. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '96-'02 S-10/Sonoma, Blazer/Jimmy, Express/Savana, C/K, Silverado, Sierra, '96-'01 Bravada, Astro/Safari, '00 Isuzu Hombre |- | W ||LGD|| 3.9L || V6 || Gas/E85 ||OHV||Flex Fuel. GM High Value 60° V6. SFI. VVT. '07-'09 GMT201 minivans |- | W ||LAF|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. Chevy Equinox, GMC Terrain '10. |- | W ||LE8|| 2.2L || I4 || Gas/E85 ||DOHC,<br /> 16 valve||Flex-Fuel. SFI. GM Ecotec Gen II. VVT. 2011 Chevy HHR. |- | W ||LFY|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. Direct Injection.<br> '18-'23 Chevrolet Traverse, '24 Chevrolet Traverse Limited, '18-'24 Buick Enclave. |- | X ||LF6|| 4.3L || V6 || Gas ||OHV||SFI. Vortec 4300. Chevrolet 90° V6 (Chevy Small-Block V8 Derived).<br /> '96-'99 S-10/Sonoma, '97-'99 Isuzu Hombre. |- | X ||LU3|| 4.3L || V6 || Gas ||OHV||Vortec 4300. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '03-'04 S-10/Sonoma,<br /> '03-'05 Blazer/Jimmy, '02-'05 Astro/Safari, '03-'14 Express/Savana, '03-'13 Silverado/Sierra,<br> '07 Silverado Classic 1500/Sierra Classic 1500 |- | X ||LNF|| 2.0L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen II. Direct Injection. VVT. '08-'09 Chevy HHR SS. |- | X ||LTG|| 2.0L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. Direct Injection. VVT.<br /> '16-'20 Buick Envision, '18-'20 Chevy Equinox, GMC Terrain, '18-'19 Chevy Traverse RS |- | Y ||LQ2|| 2.0L || I4 || Gas ||OHV||2-bbl carb. Chevrolet "122" engine.<br /> '83-'84 Chevy S-10/GMC S-15, '83-'84 Chevy S-10 Blazer/GMC S-15 Jimmy |- | Y ||L57|| 6.5L || V8 || Diesel ||OHV||Detroit Diesel V8. For over-8,500 lb. GVWR full-size vans '94-'95 & '96 G-Classic full-size vans |- | Y ||L76|| 6.0L || V8 || Gas ||OHV||SFI. Gen IV Chevy Small-Block V8. Aluminum Block & Heads. VVT. With Active Fuel Management.<br /> '07-'09 Silverado/Sierra, Suburban/Yukon XL, Chevy Avalanche |- | Y ||LF1|| 3.0L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. Direct Injection. VVT.<br /> '10-'11 Cadillac SRX, '11 Saab 9-4X, '10 Chevy Equinox, GMC Terrain |- | Y ||L5P|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. '17+ Silverado HD/Sierra HD. Engine updated in '24. |- | Z ||LF9|| 5.7L || V8 || Diesel ||OHV||Oldsmobile Diesel V8. '81 Chevy C10/GMC C1500 full-size pickups. |- | Z ||LB4|| 4.3L || V6 || Gas ||OHV|| TBI. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). '85-'87 Chevy El Camino/GMC Caballero,<br /> '86-'94 Astro/Safari, '87 R/V pickups, '88-'95 C/K & Sierra pickups, '87-'95 full-size vans & <br /> '96 G-Classic full-size vans, '88-'95 S-10, S-15/Sonoma, '88-'94 S-10 Blazer, S-15 Jimmy,<br /> '91-'92 Oldsmobile Bravada |- | Z ||LB4|| 4.3L || V6 Turbo || Gas ||OHV|| MPI. For GMC Syclone & Typhoon. Chevrolet 90° V6 (Chevy Small-Block V8 Derived) |- | Z ||L59|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. Gen III Chevrolet Small-Block V8. Iron Block & Aluminum Heads. Vortec 5300. 285/295hp.<br /> '02-'07 GMT800 pickups, '07 Silverado Classic 1500/Sierra Classic 1500,<br> '02-'06 Suburban/Yukon XL, Avalanche. |- | Z ||LAT|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||Mild Hybrid. MFI. GM Ecotec Gen II. VVT. '07-'09 Saturn Vue Green Line |- | 1 ||LZ9|| 3.9L || V6 || Gas ||OHV||GM High Value 60° V6. SFI. VVT. '06-'09 GMT201 minivans |- | 1 ||LE5|| 2.4L || I4 || Gas ||DOHC,<br /> 16 valve||MFI. GM Ecotec Gen II. VVT. '10 Saturn Vue. |- | 1 ||LB7|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. First version of the Duramax V8. '01-Mid '04 Silverado HD/Sierra HD |- | 1 ||LWN|| 2.8L || I4 Turbo || Diesel ||DOHC,<br /> 16 valve||Based on VM Motori A428 engine. Made by GM Powertrain Thailand 2016-2020. Made in Brazil for '22. '16-'22 Colorado/Canyon, '17-'22 Express/Savana. |- | 2 ||LLY|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. Mid '04-Mid '06 Silverado HD/Sierra HD, '06-Mid '07 Express/Savana |- | 2 ||L9H|| 6.2L || V8 || Gas/E85 ||OHV||Flex-Fuel. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. SFI. VVT.<br /> '09-'13 Chevy Silverado 1500, GMC Sierra 1500, Sierra Denali 1500,<br /> '09 Chevy Tahoe LTZ, GMC Yukon Denali/Yukon XL Denali, Cadillac Escalade/Escalade ESV,<br> Hummer H2 |- | 2 ||LIH|| 1.2L || I3 Turbo || Gas ||DOHC,<br /> 12 valve||GM E-Turbo Engine. Direct Injection. VVT.<br /> '20-'24 Buick Encore GX, '21-'24 Chevy Trailblazer, '24 Chevy Trax, Buick Envista,<br> '25 Chevy Trax, Buick Envista (Canada only). |- | 3 ||LC9|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. VVT added for '10. Aluminum Block & Heads.<br /> '07-'11 Silverado/Sierra 1500, Tahoe/Yukon, Suburban/Yukon XL 1500, '07-'09 & '11 Avalanche |- | 3 ||LFX|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. Direct Injection. VVT. E85 Flex Fuel.<br /> '12-'16 Cadillac SRX, '13-'17 Chevrolet Equinox, GMC Terrain, '15-'16 Colorado/Canyon |- | 4 ||LN2|| 2.2L || I4 || Gas ||OHV||MFI (94-95). SFI (96-00). Chevrolet "122" engine. '94-'00 S-10/Sonoma, '96-'00 Isuzu Hombre |- | 4 ||LE8|| 2.5L || V6 || Gas ||DOHC,<br /> 24 valve||Suzuki H25A engine. MFI. '01-'04 Chevrolet Tracker |- | 4 ||L66|| 3.5L || V6 || Gas ||SOHC,<br /> 24 valve||Honda J35S1 V6. VTEC. '04-'07 Saturn Vue |- | 4 ||LMF|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '08-'14 Express/Savana 1500 |- | 4 ||LAU|| 2.8L || V6 Turbo || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. SFI. '10 Cadillac SRX |- | 4 ||LSY|| 2.0L || I4 Turbo || Gas ||DOHC,<br /> 16 valve||GM Ecotec engine, Gen III. Direct Injection. Active Fuel Management. VVT. VVL.<br /> '19-'25 Cadillac XT4, '20+ Chevy Blazer, Cadillac XT5, '20-'23 GMC Acadia,<br /> '21+ Buick Envision, '21-'25 Cadillac XT6 |- | 5 ||L43|| 2.2L || I4 || Gas/E85 ||OHV||Flex-Fuel. SFI. Chevrolet "122" engine. '00-'02 S-10/Sonoma, '00 Isuzu Hombre |- | 5 ||LFA|| 6.0L || V8 || Gas-Electric Hybrid ||OHV||2-Mode Hybrid. Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. VVT. Active Fuel Management. '08-'09 Tahoe Hybrid/Yukon Hybrid, '09 Escalade Hybrid, Silverado Hybrid/Sierra Hybrid |- | 5 ||LFW|| 3.0L || V6 || Gas/E85 ||DOHC,<br /> 24 valve||Flex-Fuel. GM High Feature V6. Direct Injection. VVT. '11-'12 Chevy Equinox, GMC Terrain,<br /> '12 Chevy Captiva Sport |- | 6 ||L01|| 1.6L || I4 || Gas ||SOHC,<br /> 16 valve||Suzuki G16B engine. MFI. '94-'97 Geo Tracker, '98-'00 Chevrolet Tracker |- | 6 ||L52|| 3.5L || I5 || Gas ||DOHC,<br /> 20 valve||Atlas I5. SFI. VVT. '04-'06 Colorado/Canyon, '06 Isuzu i-350, '06 Hummer H3 |- | 6 ||LAU|| 2.8L || V6 Turbo || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. SFI. '11 Cadillac SRX, Saab 9-4X |- | 6 ||LMM|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. '07-'10 Silverado HD/Sierra HD (GMT900), Mid '07-Mid '10 Express/Savana |- | 7 ||LY7|| 3.6L || V6 || Gas ||DOHC,<br /> 24 valve||GM High Feature V6. '04-'06 Buick Rendezvous, '04-'09 Cadillac SRX,<br /> '07-'08 GMC Acadia, Saturn Outlook, '08 Buick Enclave, '08-'10 Saturn Vue |- | 7 ||LC9|| 5.3L || V8 || Gas/E85 ||OHV||Flex Fuel. SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. VVT.<br /> Aluminum Block & Heads.<br /> '12-'13 Silverado/Sierra 1500, Avalanche, '12-'14 Tahoe/Yukon, Suburban/Yukon XL 1500 |- | 7 ||L8T|| 6.6L || V8 || Gas ||OHV||Gen V Chevrolet Small-Block V8. Iron Block/Aluminum Heads. Direct injection, VVT.<br /> '20+ Silverado HD/Sierra HD, '21+ Express/Savana |- | 8 ||LK5|| 2.8L || I4 || Gas ||DOHC,<br /> 16 valve||Atlas I4. SFI. VVT. '04-'06 Colorado/Canyon, '06 Isuzu i-280. |- | 8 ||L92|| 6.2L || V8 || Gas ||OHV||Gen IV Chevrolet Small-Block V8. Aluminum Block & Heads. SFI. VVT.<br /> '07-'08 GMC Sierra Denali, Yukon Denali/Yukon XL Denali, Cadillac Escalade/Escalade ESV,<br> '08 Chevy Tahoe LTZ, Hummer H2. |- | 8 ||LML|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine.<br /> '11-'16 Silverado HD/Sierra HD pickups, '13-'16 Silverado HD/Sierra HD chassis cabs. |- | 8 ||LZ0|| 3.0L || I6 Turbo|| Diesel ||DOHC,<br /> 24 valve|| Duramax Diesel I6. Aluminum Block & Heads.<br> '23+ Silverado/Sierra 1500, '24+ Suburban HD, '25+ Tahoe/Suburban, Yukon/Yukon XL. |- | 9 ||LC3|| 3.8L || V6 || Gas ||OHV||2-bbl carb. Chevrolet 90° V6 (Chevy Small-Block V8 Derived). 229 cu. in. <br /> '83-'84 Chevy El Camino, GMC Caballero (49-state emissions). |- | 9 ||LLV|| 2.9L || I4 || Gas ||DOHC,<br /> 16 valve||Atlas I4. SFI. VVT. '07-'12 Colorado/Canyon, '07-'08 Isuzu i-290. |- | 9 ||LT4|| 6.2L ||V8 Supercharged|| Gas ||OHV||Gen V Chevy Small-Block V8. Aluminum Block & Heads. Direct injection. VVT. Active Fuel Management. '23+ Cadillac Escalade/Escalade ESV V-Series. |- | 0 ||LMG|| 5.3L || V8 || Gas/E85 ||OHV||Flex-Fuel. SFI. Gen IV Chevrolet Small-Block V8. Active Fuel Management. VVT added for '10.<br /> Iron Block & Aluminum Heads.<br /> '07-'13 Silverado/Sierra 1500, Avalanche, '07-'14 Tahoe/Yukon, Suburban/Yukon XL 1500. |} H.O.=High Output, VVT=Variable Valve Timing, VVL=Variable Valve Lift, GVWR=Gross Vehicle Weight Rating, CNG=Compressed Natural Gas, LPG=Liquefied Petroleum Gas (Propane Autogas) ====Motor codes for electric light trucks==== {| class="wikitable" |- ! VIN !! RPO !! Fuel !! Drive Wheels !! Application/Notes |- | H ||LN1|| Electricity || Front || '97-'98 Chevrolet S-10 Electric. |- |} ====Motor codes for Ultium-powered electric light trucks==== {| class="wikitable" |- ! VIN !! Motor <br /> RPO code !! # of Motors !! Battery Module <br /> RPO code !! # of Modules !! Fuel !! Drive Wheels !! Application/Notes |- | A ||XRL|| 3 || ETN || 24 || Electricity || All || '22- GMC Hummer EV pickup 3X |- | B ||XRL|| 3 || ETI || 20 || Electricity || All || '24- GMC Hummer EV pickup 3X |- | C ||XRL|| 3 || ETJ || 20 || Electricity || All || '24- GMC Hummer EV SUV 3X |- | D ||XRJ|| 2 || ETI || 20 || Electricity || All || '24 Chevrolet Silverado EV 3WT, '25- Silverado EV 5WT, 3LT,<br> '25 Silverado EV RST (2SP), '26- Silverado EV Trail Boss (2TR),<br> '24- GMC Hummer EV pickup 2X, '25- GMC Sierra EV Denali 5SC,<br> '26- Sierra EV Elevation 3SC, AT4 4SC |- | E ||XRJ|| 2 || ETJ || 20 || Electricity || All || '24- GMC Hummer EV SUV 2X |- | G ||XRJ|| 2 || ETJ || 20 || Electricity || All || '23 BrightDrop Zevo 600 |- | H ||XRJ|| 2 || EWX || 14 || Electricity || All ||'26- Chevrolet Silverado EV 4WT, 2LT,<br> '26- GMC Sierra EV Elevation 3SB, Denali 5SB |- | J ||X0C|| 2 || EC5 || 10 || Electricity || All || '24 Chevy Blazer EV 2LT, 1RS AWD,<br> '25- Chevy Blazer EV 4LT, 3RS AWD, '24-'26 Honda Prologue AWD |- | K ||X0D|| 1 || EC6 || 12 || Electricity || Rear || '23- Cadillac Lyriq RWD, '24-'25 Chevrolet Blazer EV 2RS RWD,<br> '24 Acura ZDX A-Spec RWD |- | L ||X0E|| 2 || EC6 || 12 || Electricity || All || '23- Cadillac Lyriq AWD, '24- Chevrolet Blazer EV PPV AWD,<br> '25- Chevrolet Blazer EV SS AWD, '26- Cadillac Vistiq AWD,<br> '24 Acura ZDX A-Spec, Type S AWD |- | L ||XRJ|| 2 || ETN || 24 || Electricity || All || '24 Chevrolet Silverado EV 4WT, RST (3SP), '25- Silverado EV 8WT,<br> '25 Silverado EV RST (3SP), '26- Silverado EV 4LT, Trail Boss (3TR),<br> '24- GMC Sierra EV Denali 5SD, '26- Sierra EV AT4 4SD,<br> '25- Cadillac Escalade IQ, '26- Cadillac Escalade IQL |- | M ||X0B|| 1 || EC5 || 10 || Electricity || Front || '24-'26 Honda Prologue FWD, '25- Chevy Blazer EV 2LT, 1RS FWD |- | P ||X0B|| 1 || EC3 || 10 || Electricity || Front || '24- Chevrolet Equinox EV FWD |- | R ||X0C|| 2 || EC3 || 10 || Electricity || All || '24- Chevrolet Equinox EV AWD, '25 Cadillac Optiq AWD |- | Y ||XRJ|| 2 || ETC || 12 || Electricity || All || '24 BrightDrop Zevo 400, Zevo 600,<br> '25-'26 Chevrolet BrightDrop 400/600 AWD |- | Z ||XRJ|| 2 || ETJ || 20 || Electricity || All || '24 BrightDrop Zevo 400, Zevo 600,<br> '25-'26 Chevrolet BrightDrop 400/600 AWD |- | 4 ||X0E|| 2 || EC3 || 10 || Electricity || All || '26- Cadillac Optiq AWD |- | 5 ||X0D|| 1 || EC3 || 10 || Electricity || Rear|| '26- Cadillac Optiq RWD |- | 6 ||XRM|| 1 || ETC || 12 || Electricity || Front || '25-'26 Chevrolet BrightDrop 400/600 FWD |- | 7 ||XRJ|| 2 || EWU || 14 || Electricity || All || '26 Chevrolet BrightDrop 600 AWD |} SB=Standard Range, SC=Extended Range, SD=Max Range ====Engine codes for medium duty trucks 2016-==== GM encodes the engine type in character 8 of the VIN. The following table outlines the various engines encoded there: {| class="wikitable" |- ! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes/Applications |- | B ||L96|| 6.0L || V8 || Gas ||OHV||SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '16-'20 Chevy LCF 3500/4500. |- | C ||LC8|| 6.0L || V8 || Gas/CNG or<br>Gas/LPG ||OHV||Bi-Fuel. SFI. Gen IV Chevrolet Small-Block V8. Iron Block & Aluminum Heads. VVT.<br /> '16-'20 Chevy LCF 3500/4500. |- | D ||L8T|| 6.6L || V8 || Gas ||OHV||Gen V Chevrolet Small-Block V8. Iron Block/Aluminum Heads. Direct injection, VVT.<br /> '21-'23 Chevy LCF 3500/4500, '24- Chevy LCF 3500HG/4500HG/5500HG/5500XG. |- | F ||LCB|| 6.7L || I6 Turbo || Diesel ||OHV,<br /> 32 valve||Cummins B Series ISB engine. '22- Chevy LCF 6500XD, '23- Chevy LCF 7500XD. |- | 6 ||I1B|| 5.2L || I4 Turbo || Diesel ||SOHC,<br /> 16 valve||Isuzu 4HK1-TC engine. '17- Chevy LCF 4500HD/XD, 5500XD, '17-'24 Chevy LCF 5500HD,<br /> '18-'21 Chevy LCF 6500XD. |- | 7 ||IZ3|| 3.0L || I4 Turbo || Diesel ||DOHC,<br /> 16 valve||Isuzu 4JJ1-TC engine. '16-'18 Chevy LCF 3500HD. |- |} ====Engine codes for AM General-built Hummer H1 2000-2006==== AM General encodes the engine type in character 4 of the VIN. {| class="wikitable" |- ! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes |- | F || || 6.5L || V8 Turbo || Diesel ||OHV||Detroit Diesel V8 built by GEP (General Engine Products), a subsidiary of AM General.<br> '01-'04 Hummer H1 & '06 H1 Fleet models. |- | P ||LLY|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. '06 Hummer H1 Alpha. |- | Z ||L65|| 6.5L || V8 Turbo || Diesel ||OHV||Detroit Diesel V8 built by GM. '00-'01 Hummer H1. |- |} ====Engine codes for Nissan-built vans==== Nissan encodes the engine type in character 4 of the VIN. {| class="wikitable" |- ! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes |- | 3 ||L0A|| 2.0L || I4 || Gas ||DOHC,<br /> 16 valve||Nissan MR20DE engine. SFI. VVT. For the '15-'18 Chevrolet City Express. |- |} ====Engine codes for Navistar-built medium-duty trucks==== Navistar encodes the engine type in character 6 & 7 of the VIN. {| class="wikitable" |- ! VIN !! RPO !! Size !! Type !! Fuel !! Valvetrain !! Engine Family/Notes |- | PV ||L5D|| 6.6L || V8 Turbo || Diesel ||OHV,<br /> 32 valve||Duramax 6600 V8 engine. For the Chevy Silverado Medium Duty '19+. |- |} ==GM factories supplying North America== ===North American GM factories=== [[w:List_of_General_Motors_factories | List of GM Factories]] {| class="wikitable" !VIN code !Location !Notes |- |A |Lakewood Assembly (Lakewood Heights, Atlanta, Georgia) |through 1990 model year |- |A |Artisan Center (Warren, Michigan) |From 2026 model year. Cadillac CT5-V Blackwing "Curated by Cadillac" program only. |- |B |Baltimore Assembly (Baltimore, Maryland) |through 2005 model year |- |B |Reatta Craft Centre/Lansing Craft Centre (Lansing Township, Michigan) |1988-2006 model year (except GM EV1) |- |B |GM Defense-Manufacturing Customer Innovation Center (MCIC) (Concord, North Carolina) |From 2024 model year. Chevrolet Suburban HD (a.k.a. HD SUV) (for US govt. only). |- |C |South Gate Assembly (South Gate, California) |through 1982 model year |- |C |Lansing Car Assembly (Lansing, Michigan) |South assembly line 1985-2004 model year |- |D |Doraville Assembly (Doraville, Georgia) |through 2009 model year |- |E |Linden Assembly (Linden, New Jersey) |through 1991 model year |- |E |Pontiac East Assembly (Pontiac, Michigan) |1988-2009 model year |- |E |AM General Military plant (Mishawaka, Indiana) |1992-2006 Hummer H1 |- |F |Flint Truck Assembly (Flint, Michigan) |since 1953 |- |F |Fairfax II Assembly (Kansas City, Kansas) |since 1988 model year |- |G |Framingham Assembly (Framingham, Massachusetts) |through 1989 model year |- |G |Silao Assembly (Silao, Guanajuato, Mexico) |since 1995 model year |- |H |Buick City Assembly (Flint, Michigan) |through 1999 model year |- |H |AM General Commercial plant (Mishawaka, Indiana) |2003-2009 Hummer H2 |- |H |Navistar Springfield plant (Main Line) (Springfield, Ohio) |2019- Chevrolet Silverado Medium Duty (4500HD/5500HD/6500HD) |- |J |Janesville Assembly (Janesville, Wisconsin) |through 2009 model year |- |J |Lansing Delta Township Assembly (Lansing, Michigan) |since 2007 model year |- |K |Leeds Assembly (Leeds, Kansas City, Missouri) |through 1988 model year |- |K |Linden Assembly (Linden, New Jersey) |from 1994-2005 model year |- |K |Nissan plant (Cuernavaca, Morelos, Mexico) |2015-2018 Chevrolet City Express |- |L |Van Nuys Assembly (Van Nuys, California) |through 1992 model year |- |L |San Luis Potosí Assembly (San Luis Potosí, Mexico) |since 2009 model year |- |M |Lansing Car Assembly (Lansing, Michigan) |through 1984 model year, North assembly line 1985-2005 model year |- |M |Toluca Assembly (Toluca, Mexico state, Mexico) |through 2008 model year |- |N |Norwood Assembly (Norwood, Ohio) |through 1987 model year |- |N |Navistar Springfield plant (Secondary Line) (Springfield, Ohio) |2017- Chevrolet Express cutaway, GMC Savana cutaway |- |P |Pontiac Assembly (Pontiac, Michigan) |through 1988 model year |- |R |Arlington Assembly (Arlington, Texas) |since 1965 [all GM brands]. (R plant code used only by Chevrolet in 1963-64) |- |S |St. Louis Assembly (St. Louis, Missouri) |through 1987 model year |- |S |Spring Hill Manufacturing (Spring Hill, Tennessee) |2002-2007 Saturn Vue & 2009-2010 Chevrolet Traverse only |- |S |Spartan Motors/Shyft Group plant (Charlotte, Michigan) |2016- Chevrolet Low Cab Forward 3500/3500HG/4500/4500HG/5500HG/5500XG/6500XD/7500XD |- |S |Ramos Arizpe Assembly (Ramos Arizpe, Coahuila, Mexico) |since 1982 |- |T |Tarrytown Assembly (North Tarrytown, New York) |through 1996 model year |- |U |Detroit/Hamtramck Assembly (Factory Zero) <br /> (Detroit & Hamtramck, Michigan) |since 1986 model year |- |U |Artisan Center (Warren, Michigan) |From 2025 model year. Cadillac Celestiq only. |- |V |Pontiac Central Assembly (Pontiac, Michigan) |through 1991 model year |- |V |Pontiac East Assembly (Pontiac, Michigan) |through 1985 model year |- |W |Willow Run Assembly (Ypsilanti Township, Michigan) |through 1993 model year |- |X |Fairfax Assembly (Fairfax I) (Kansas City, Kansas) |through 1987 model year |- |Y |Wilmington Assembly (Wilmington, Delaware) |through 2010 model year |- |Z |Fremont Assembly (Fremont, California) |through 1982 model year |- |Z |NUMMI (Fremont, California) |1985-2010 model year |- |Z |Spring Hill Manufacturing (Spring Hill, Tennessee) |since 1991 model year (except Vue & Traverse) |- |Z |Fort Wayne Assembly (Roanoke, Indiana) |since 1988 model year |- |0 |Pontiac West Assembly (Pontiac, Michigan) |through 1994 model year |- |0 |Lansing Craft Centre (Lansing Township, Michigan) |GM EV1 only |- |0 |Lansing Grand River Assembly (Lansing, Michigan) |since 2003 model year |- |0 |Artisan Center (Warren, Michigan) |2024 Cadillac CT5-V Blackwing 20th Anniversary Edition where the final eight digits of the VIN are R0912004 through R0912024 or R0962004 through R0962024 |- |1 |Wentzville Assembly (Wentzville, Missouri) |since 1985 model year |- |1 |Oshawa Car Assembly (Oshawa, Ontario, Canada) |from 1967-1983 model year |- |1 |Oshawa Car Assembly (Line 2 a.k.a. Consolidated Line) (Oshawa, Ontario, Canada) |from 1984-2019 model year; switched to pickup trucks for 2019 model year |- |1 |Oshawa Car Assembly (Oshawa, Ontario, Canada) |Silverado pickup trucks since 2022 model year |- |1 |Oshawa Truck Assembly (Oshawa, Ontario, Canada) |through 2009 model year |- |2 |Moraine Assembly (Moraine, Ohio) |through 2009 model year |- |2 |Sainte-Thérèse Assembly (Boisbriand, Quebec, Canada) |through 2002 model year |- |3 |Detroit Truck & Bus plant (Piquette Ave., Detroit, Michigan) |through 1999 model year |- |3 |Saint-Eustache Bus Plant (Saint-Eustache, Quebec, Canada) |through 1987 model year |- |4 |Orion Assembly (Orion Township, Michigan) |since 1985 model year |- |4 |Scarborough Van Assembly (Scarborough, Ontario, Canada) |through 1993 model year |- |5 |Bowling Green Assembly (Bowling Green, Kentucky) |since 1981 model year |- |6 |Oklahoma City Assembly (Oklahoma City, Oklahoma) |through 2006 model year |- |6 |CAMI plant (Ingersoll, Ontario, Canada) |1990-2022 model year |- |7 |Lordstown Assembly (Warren, Ohio) |from 1979-2019 model year |- |8 |Shreveport Assembly (Shreveport, Louisiana) |through 2012 model year |- |9 |Detroit Assembly (Clark Street, Detroit, Michigan)<br> (Cadillac plant) |from 1979-1988 model year |- |9 |Oshawa Car Assembly (Line 1 a.k.a. Flex Line)<br> (Oshawa, Ontario, Canada) |from 1984-2020 model year |- |9 |KUKA plant (Livonia, Michigan) |2022 model year only (BrightDrop Zevo 600) |- |9 |CAMI plant (Ingersoll, Ontario, Canada) |2023-2026 model year (BrightDrop Zevo/Chevrolet BrightDrop) |} ===Non-North American GM factories supplying North America=== {| class="wikitable" !VIN code !Location !Models Sourced |- |A |SAIC-GM plant: Jinqiao, Pudong district, Shanghai, China |2017-2018 Cadillac CT6 Plug-in Hybrid |- |B |Daewoo/GM Daewoo/GM Korea plant: Bupyeong, South Korea |1988-1993 Pontiac LeMans, 2004-2011 Chevrolet Aveo, 2005-2010 Pontiac Wave/G3, 2004-2006 Chevrolet <br /> Epica (Canada), 2013-2022 Chevrolet Trax, Buick Encore, 2021- Chevrolet Trailblazer, 2020- Buick Encore GX, 2024- Buick Envista |- |C |GM Daewoo/GM Korea plant: Changwon, South Korea |2003-2010 Pontiac Matiz/Matiz G2 (Mexico), 2013-2022 Chevrolet Spark, 2024- Chevrolet Trax |- |D |SAIC-GM Dongyue Motors plant: Yantai, Shandong province, China |2016- Buick Envision, 2019-2023 Chevrolet Aveo (Mexico), 2023- Chevrolet Onix (Mexico) |- |G |Opel plant: Gliwice, Poland |2016-2019 Buick Cascada |- |K |Suzuki plant: Kosai, Shizuoka prefecture, Japan |1985-1988 Chevrolet Sprint, 1989-1990 Geo Metro hatchback, 1990-1993 Geo Metro convertible, 1985-1990 Pontiac Firefly (Canada), 1991 & 1994 Pontiac Firefly convertible & sedan (Canada) |- |K |GM Daewoo/GM Korea plant: Kunsan, South Korea |2004-2007 Chevrolet Optra (Canada), 2012-2014 Chevrolet Orlando (Canada) |- |L |Holden plant: Elizabeth, South Australia, Australia |2004-2006 Pontiac GTO, 2008-2009 Pontiac G8, 2011-2017 Chevrolet Caprice PPV, 2014-2017 Chevrolet SS |- |R |Opel plant: Rüsselsheim, Germany |1997-2001 Cadillac Catera |- |T |GM India plant: Talegaon, Maharashtra, India |2017-2021 Chevrolet Spark Classic/Beat (Mexico) |- |V |SAIC-GM Wuhan plant: Wuhan, Hubei province, China |2018-2021 Chevrolet Cavalier (Mexico), 2022- Chevrolet Cavalier Turbo (Mexico) |- |W |Suzuki plant: Iwata, Shizuoka prefecture, Japan |1989-1990 Geo Tracker |- |1 |Opel plant: Rüsselsheim, Germany |2011, 2018-2020 Buick Regal |- |3 |Isuzu plant: Kawasaki, Kanagawa prefecture, Japan |1987-1998 Chevrolet/GMC W5, 1989-1996 Chevrolet/GMC W6, 1984-1996 Chevrolet/GMC W7 |- |5 |Opel plant: Antwerp, Belgium |2008-2009 Saturn Astra |- |7 |Isuzu plant: Fujisawa, Kanagawa prefecture, Japan |1988 Chevrolet Spectrum, 1988 Pontiac Sunburst (Canada), 1989 Geo Spectrum, 1990-1993 Geo Storm,<br /> 1999-2008 Chevrolet/GMC W3500, 1988-2009 Chevrolet/GMC W4, 1999-2009 Chevrolet/GMC W5,<br /> 2000-2004 Chevrolet/GMC WT5500,<br /> 2016- Chevrolet Low Cab Forward 3500HD/4500HD/4500XD/5500HD/5500XD |- |8 |Isuzu plant: Fujisawa, Kanagawa prefecture, Japan |1981-1982 Chevrolet LUV, 1985-1987 Chevrolet Spectrum, 1985-1987 Pontiac Sunburst (Canada),<br /> 1986-1987 Chevrolet/GMC W4 |} ==GM WMIs== {| class=wikitable !WMI !Marque !Country |- |1G1||rowspan=57|Chevrolet||United States |- |1G8||United States (MPV 1981-1986) |- |1GA||United States (bus [van with more than 3 rows of seats]) |- |1GB||United States (incomplete vehicle) |- |1GC||United States (truck) |- |1GN||United States (MPV 1987-) |- |1HA||United States (Express incomplete vehicle made by Navistar) |- |1HT||United States ([[w:Chevrolet Silverado#Medium duty version_(4500HD,_5500HD,_6500HD,_and_International_CV)|Silverado Medium Duty]] incomplete vehicle made by Navistar) |- |1Y1||United States (made by NUMMI) |- |2C1||Canada (car made by CAMI) |- |2CN||Canada (SUV made by CAMI - 1998-2011) |- |2G1||Canada |- |2G5||Canada (truck - Chevrolet BrightDrop '25) |- |2G8||Canada (MPV 1981-1986) |- |2GA||Canada (bus [van with more than 3 rows of seats]) |- |2GB||Canada (incomplete vehicle) |- |2GC||Canada (truck - includes Chevrolet BrightDrop '26) |- |2GN||Canada (MPV 1987-) |- |3G1||Mexico |- |3GC||Mexico (truck) |- |3GN||Mexico (MPV) |- |3N6||Mexico (Truck - City Express made by Nissan) |- |4G1||United States (made by Genasys L.C.) |- |4KB||United States (W-Series incomplete vehicle made by GM - through 2009) |- |4W1||United States (MPV - Chevrolet Suburban HD made for US govt. in Concord, NC) |- |54D||United States (incomplete vehicle made by Spartan Motors/The Shyft Group) |- |6G1||Australia (2011-2013 Caprice PPV) |- |6G3||Australia (2014-2017 Caprice PPV & SS performance sedan) |- |ADM||South Africa |- |J81||Japan (car made by Isuzu) |- |J8B||Japan (incomplete vehicle made by Isuzu - through 2009) |- |J8Z||Japan (LUV pickup made by Isuzu) |- |JAL||Japan (incomplete vehicle made by Isuzu - 2016+) |- |JG1||Japan (car made by Suzuki) |- |KL1||South Korea (car) |- |KL7||South Korea (MPV - 2012+) |- |KL8||South Korea (Spark) |- |LSF||China (S-10 Max made by SAIC-Maxus - Mexico only) |- |LSG||China (SAIC-GM) |- |LSH||China (Express Max made by SAIC-Maxus - Mexico only) |- |LZW||China (SAIC-GM-Wuling) |- |MA6||India |- |MJB||Indonesia (GM Indonesia) |- |MK3||Indonesia (SGMW Motor Indonesia) |- |MMM||Thailand |- |XUF||Russia (GM Russia - St. Petersburg plant) |- |XUU||Russia (Chevrolet Korea models made by Avtotor in Kaliningrad) |- |XWB||Uzbekistan (GM Uzbekistan, UzAuto Motors) |- |XWF||Russia (Chevrolet Tahoe & Trailblazer [GMT360] made by Avtotor in Kaliningrad) |- |X9L||Russia (GM-AvtoVAZ) |- |8AG||Argentina |- |8GG||Chile |- |8LD||Ecuador |- |8Z1||Venezuela |- |9BG||Brazil |- |93C||Brazil |- |9GC||Colombia |- |J81||rowspan=6|Geo||Japan (car made by Isuzu) |- |JG1||Japan (car made by Suzuki) |- |JGC||Japan (SUV made by Suzuki) |- |1Y1||United States (car made by NUMMI) |- |2C1||Canada (car made by CAMI) |- |2CN||Canada (SUV made by CAMI - 1990-1997) |- |KLA||rowspan=3|GM Daewoo/<br />GM Korea||South Korea (Bupyeong & Kunsan plants) |- |KLY||South Korea (Changwon plant) |- |5GD||United States (G2X) |- |1G2||rowspan=12|Pontiac||United States |- |1G5||United States (incomplete vehicle - for '89-'90 Turbo Grand Prix by ASC/McLaren & '03-'05 Montana Mobility, '06 Montana SV6 Mobility) |- |1GM||United States (MPV) |- |2CK||Canada (2006-2009 Torrent made by CAMI) |- |2G2||Canada |- |2G7||Canada (US market 1983 Pontiac Parisienne) |- |3G2||Mexico |- |3G7||Mexico (MPV: 2001-2005 Aztek) |- |4G2||United States (made by Genasys L.C.) |- |5Y2||United States (made by NUMMI) |- |6G2||Australia |- |KL2||South Korea (made by Daewoo/GM Daewoo) |- |1G7||rowspan=6|Pontiac<br />(Canada only)||United States |- |2C7||Canada (car made by CAMI) |- |2CG||Canada (SUV made by CAMI) |- |2G7||Canada |- |J87||Japan (car made by Isuzu) |- |JG7||Japan (car made by Suzuki) |- |KL7||Passport<br />(Canada only)||South Korea (car made by Daewoo) |- |J87||rowspan=3|Asüna<br />(Canada only)||Japan (car made by Isuzu) |- |KL7||South Korea (car made by Daewoo) |- |2CG||Canada (SUV made by CAMI) |- |1G3||rowspan=3|Oldsmobile||United States |- |1GH||United States (MPV/SUV) |- |2G3||Canada |- |1G4||rowspan=9|Buick||United States |- |2G4||Canada |- |3G4||Mexico |- |3G5||Mexico (MPV) |- |4GL||United States (incomplete vehicle) |- |5GA||United States (MPV) |- |KL4||South Korea (MPV) |- |LRB||China (SAIC-GM) |- |W04||Germany & Poland |- |KLA||Alpheon||South Korea (2011-2015) |- |1G6||rowspan=10|Cadillac||United States |- |1GE||United States (incomplete vehicle) |- |1GY||United States (SUV) |- |2G6||Canada |- |2GE||Canada (incomplete vehicle) |- |3GY||Mexico (SUV) |- |LRE||China (SAIC-GM) |- |W06||Germany |- |XWF||Russia (made by Avtotor in Kaliningrad) |- |YSC||Sweden |- |1G8||rowspan=4|Saturn||United States |- |3GS||Mexico (SUV) |- |5GZ||United States (MPV/SUV) |- |W08||Belgium |- |1G0||rowspan=22|GMC||United States (bus 1981-1986) |- |1G5||United States (MPV 1981-1986) |- |1GD||United States (incomplete vehicle) |- |1GJ||United States (bus 1987-) |- |1GK||United States (MPV 1987-) |- |1GT||United States (truck) |- |2CK||Canada (1990-1991 Tracker made by CAMI - Canada only) |- |2CT||Canada (2010-2011 Terrain made by CAMI) |- |2G0||Canada (bus [van with more than 3 rows of seats] 1981-1986) |- |2G5||Canada (MPV 1981-1986) |- |2GD||Canada (incomplete vehicle) |- |2GH||Canada (transit bus) |- |2GJ||Canada (bus [van with more than 3 rows of seats] 1987-) |- |2GK||Canada (MPV 1987-) |- |2GT||Canada (truck) |- |3GK||Mexico (SUV) |- |3GT||Mexico (truck) |- |4KD||United States (W-Series incomplete vehicle made by GM - through 2009) |- |7GZ||United States (incomplete vehicle made by Navistar) |- |J8D||Japan (incomplete vehicle made by Isuzu - through 2009) |- |JGT||Japan (SUV made by Suzuki - Canada only) |- |KL6||South Korea (Middle East market Terrain '08-'10) |- |4GD||WhiteGMC||United States (1988-1989 Brigadier made by GM) |- |137||rowspan=6|Hummer||United States (H1 made by AM General) |- |5GN||United States (H3T) |- |5GR||United States (H2 made by AM General) |- |5GT||United States (H3) |- |ADM||South Africa (H3) |- |XWF||Russia (H2 & H3 made by Avtotor in Kaliningrad) |- |4G5||General Motors||United States (EV1) |- |2G5||rowspan=2|BrightDrop||Canada (Truck 2023-2024) |- |5G5||United States (Truck made by Kuka AG - 2022 only) |- |5G2||rowspan=2|Cruise||United States (car) (Cruise AV) |- |5G3||United States (MPV) (Cruise Origin AV) |- |YS3||rowspan=4|Saab||Sweden |- |JF4||Japan (9-2X made by Subaru) |- |3G0||Mexico (9-4X) |- |5S3||United States (9-7X) |- |W0L||rowspan=19|Opel/Vauxhall||Germany & the rest of Europe (2017 and earlier) |- |W0V||Germany & the rest of Europe (2018 and later) & Opel Ampera-e Mid-2017 - 2019 |- |W0L||when plant code is H: Thailand (Zafira A) |- |W0L||when plant code is 0: South Korea (Antara) or B: South Korea (Antara, Mokka A, Mokka X [A]) |- |W0L||when plant code is C: South Korea (Opel Karl/Vauxhall Viva) |- |W0V||when plant code is B: South Korea (Mokka X [A]) or C: South Korea (Opel Karl/Vauxhall Viva) |- |SCC||UK (Opel Lotus Omega made by Lotus) |- |SED||UK (made by IBC Vehicles) |- |TW8||Portugal |- |VF1||France (Arena made by Renault) |- |VN1||France (Movano A made by Renault at SOVAB plant in Batilly, France) |- |VSX||Spain |- |XUF||Russia (Opel made by GM Russia - St. Petersburg plant) |- |XWF||Russia (Opel made by Avtotor in Kaliningrad) |- |1G0||United States (Opel GT, Opel/Vauxhall Ampera, Opel Ampera-e Early - Mid-2017) |- |4GD||United States (Sintra) |- |ADM||South Africa |- |JAA||Japan (Opel Campo made by Isuzu) |- |JAC||Japan (Monterey made by Isuzu) |- |SKA||rowspan=4|Vauxhall Motors||UK |- |SCC||UK (Vauxhall Lotus Carlton made by Lotus) |- |6G1||Australia (Vauxhall Monaro & VXR8 made by Holden) |- |JAA||Japan (Vauxhall Brava made by Isuzu) |- |SKF||rowspan=2|Bedford Vehicles||UK |- |JAA||Japan (Bedford Brava made by Isuzu) |- |6G1||rowspan=18|Holden||Australia (2003-2017) |- |6H8||Australia (1989-2002) |- |JAA||Japan (Rodeo pickup [TF] made by Isuzu) |- |JAC||Japan (Jackaroo/Monterey made by Isuzu) |- |JSA||Japan (YG Cruze made by Suzuki) |- |KL3||South Korea |- |MMM||Thailand ('09-'11 Colorado pickup [RC] made by GM Thailand) |- |MMU||Thailand ('13-'20 Colorado pickup [RG], '13-'16 Colorado 7, '17-'20 Trailblazer made by GM Thailand) |- |MPA||Thailand ('04-'08 Rodeo pickup [RA] made by Isuzu Thailand) |- |SED||UK (1st gen. Frontera made by IBC Vehicles) |- |W0L||Germany & the rest of Europe (2017 and earlier) |- |W0L||when plant code is H: Thailand (Zafira A) |- |W0V||Germany & the rest of Europe (2018-2020) |- |1GH||United States (Acadia) |- |3G0||Mexico (Equinox) |- |3GM||Mexico (Suburban) |- |4S2||United States (2nd gen. Frontera made by [[w:Subaru Isuzu Automotive|SIA]]) |- |5G8||United States (Volt) |- |1GG||rowspan=4|Isuzu||United States (Truck - Hombre & i-Series made by GM) |- |4GT||United States (H-Series & T-Series incomplete vehicle made by GM - through 2009) |- |4KL||United States (N-Series incomplete vehicle made by GM - through 2009) |- |4NU||United States (MPV/SUV - Ascender made by GM) |- |W0L||Subaru||Thailand [plant code H] (Traviq made by GM Thailand for export to Japan) |- |4G3||Toyota||United States (Cavalier made by GM for export to Japan) |- |3GP||Honda||Mexico (MPV/SUV: 2024-2026 Prologue made by GM) |- |4W5||Acura||United States (MPV/SUV: 2024 ZDX EV made by GM) |} {{BookCat}} iymeb3rdlednvgd3ujydswieywc27wy User:SKYNET X7000~enwikibooks/UserBoxes 2 143467 4656038 4649026 2026-08-02T07:29:17Z Minorax 3226541 4656038 wikitext text/x-wiki {| cellspacing=1 style="width: 100%; border: solid white 2px; background: black" |- | <table width="100%" border="0px" style="background: skyblue; border-style:solid; border: solid white 2px"> <tr> <td width="0px"><div style="text-align: center;">{{Click|link=User:SKYNET_X7000|image=Crystal Clear app linneighborhood.png|width=90px|height=90px|title=}}</div></td> <td width="0px"><div style="text-align: center;">{{Click|link=User talk:SKYNET_X7000|image=Crystal Clear app email.png|width=90px|height=90px|title=}}</div></td> <td width="0px"><div style="text-align: center;">{{Click|link=User:SKYNET_X7000/About|image=Crystal_Clear_app_kdmconfig.png|width=90px|height=90px|title=}}</div></td> <td width="0px"><div style="text-align: center;">{{Click|link=User:SKYNET_X7000/Awards|image=Crystal_Clear_action_bookmark.png|width=90px|height=90px|title=}}</div></td> <td width="0px"><div style="text-align: center;">{{Click|link=User:SKYNET_X7000/UserBoxes|image=Crystal_Clear_app_ark.png|width=90px|height=90px|title=}}</div></td> <td width="0px"><div style="text-align: center;">{{Click|link=User:SKYNET_X7000/Sandbox|image=Crystal Project Warehause.png|width=90px|height=90px|title=}}</div></td> <td width="0px"><div style="text-align: center;">{{Click|link=Special:Random|image=Crystal Clear app help index.svg|width=90px|height=90px|title=}}</div></td> <td width="0px"><div style="text-align: center;">{{Click|link=User:SKYNET_X7000/Wikipedia Links|image=Crystal_Clear_app_kedit.png|width=90px|height=90px|title=}}</div></td> <td width="0px"><div style="text-align: center;">{{Click|link=User:SKYNET_X7000/Guestbook|image=Crystal_Clear_app_kdict.png|width=90px|height=90px|title=}}</div></td> </tr> <tr> <td><div style="text-align: center;">'''[[User:SKYNET_X7000|Homepage]]'''</div></td> <td><div style="text-align: center;">'''[[User talk:SKYNET_X7000|Talk]]'''</div></td> <td><div style="text-align: center;">'''[[User:SKYNET_X7000/About|About]]'''</div></td> <td><div style="text-align: center;">'''[[User:SKYNET_X7000/Awards|Awards]]'''</div></td> <td><div style="text-align: center;">'''[[User:SKYNET_X7000/UserBoxes|Userboxes]]'''</div></td> <td><div style="text-align: center;">'''[[User:SKYNET_X7000/Sandbox|Sandbox]]'''</div></td> <td><div style="text-align: center;">'''[[Special:Random|Random]]'''</div></td> <td><div style="text-align: center;">'''[[User:SKYNET_X7000/Wikimedia Links|Wikimedia Links]]'''</div></td> <td><div style="text-align: center;">'''[[User:SKYNET_X7000/Guestbook|Guestbook]]'''</div></td> </tr> </table> |- |} {| cellspacing=1 style="width: 100%; border: solid white 2px; background: black" |- | {| cellspacing=1 style="width: 100%; border: solid white 2px; background: lightblue" |- | {| class="wikitable" | {| class="wikitable" |- |- |- |{{user CVU1-en}} |- |{{user en}} |- |- |} |} <!-- End of page contents --> |} |} 46t0a9uqtn9o8qckvj3cbelsnetrtef Cookbook:Schwarzwälder Kirschtorte (Black Forest Cake) 102 166807 4655996 4587384 2026-08-01T14:53:04Z 101929ha 3480877 Clarify procedure to match ingredients 4655996 wikitext text/x-wiki __NOTOC__ {{recipesummary|category=Recipes for dessert|servings=12|time=about 3 hours|difficulty=3| Image = [[File:Foret noire mel0.jpg|300px]]}} {{recipe}} | [[Cookbook:Dessert|Pastries and desserts]] | [[Cookbook:Cuisine of Germany|German cuisine]] | '''Schwarzwälder kirschtorte''', or Black Forest gateau in English, is a German dessert. ==Ingredients== {| class="wikitable" style="background: none" !Ingredient !Count !Volume !Weight |- | colspan="4" style="text-align: center; background: #f5f5f5" |'''Shortcrust base''' |- |[[Cookbook:All-purpose flour|All-purpose flour]] | |¾ [[Cookbook:Cup|cup]] |125 [[Cookbook:Gram|g]] |- |[[Cookbook:Cocoa Powder|Cocoa powder]] | |1 [[Cookbook:Tsp|tsp]] |10 g |- |[[Cookbook:Baking Powder|Baking powder]] | |½ tsp |3 g |- |[[Cookbook:Sugar|Sugar]] | |¼ cup |50 g |- |[[Cookbook:Vanilla Sugar|Vanilla sugar]] |1 packet |2 tsp |8 g |- |[[Cookbook:Egg White|Egg white]] |1 [[Cookbook:Each|ea]]. | | |- |[[Cookbook:Butter|Butter]], cut into pieces | |¼ cup |50 g |- | colspan="4" style="text-align: center; background: #f5f5f5" |'''Cake''' |- |[[Cookbook:Egg|Eggs]] |3 [[Cookbook:Each|ea]]. | | |- |[[Cookbook:Egg Yolk|Egg yolk]] |1 ea. | | |- |Warm water | |2 [[Cookbook:Tablespoon|tbsp]] | |- |[[Cookbook:Sugar|Sugar]] | |½ cup |100 g |- |[[Cookbook:Vanilla Sugar|Vanilla sugar]] |1 packet |2 tsp |8 g |- |[[Cookbook:Almond Oil|Bitter almond oil]] |3 drops | | |- |Ground [[Cookbook:Cinnamon|cinnamon]] | |⅛ tsp | |- |[[Cookbook:All-purpose flour|All-purpose flour]] | |½ cup |75 g |- |[[Cookbook:Cocoa Powder|Cocoa powder]] | |1 tbsp |10 g |- |[[Cookbook:Cornstarch|Cornstarch]] | |3 tbsp |25 g |- |[[Cookbook:Baking Powder|Baking powder]] | |½ tsp |1½ g |- | colspan="4" style="text-align: center; background: #f5f5f5" |'''Filling''' |- |[[Cookbook:Cherry|Sour cherries]], stoned |1 can | |24 [[Cookbook:Ounce|oz]] (750 g) |- |[[Cookbook:Sugar|Sugar]] | |6 tbsp |80 g |- |[[Cookbook:Cornstarch|Cornstarch]] | |5 tbsp |40 g |- |[[Cookbook:Kirsch|Kirschwasser]] | |2 tbsp | |- |Powdered [[Cookbook:Gelatine|gelatine]] | |2 tsp | |- |Cold water | |3 tbsp | |- |[[Cookbook:Heavy Cream|Heavy cream]] | |2 cups (500 [[Cookbook:Milliliter|ml]]) | |- |Vanilla sugar |1 packet |2 tsp |8 g |- |Sugar | |1 tbsp | |- |Shaved [[Cookbook:Chocolate|chocolate]] for garnish | | |40 g (2 oz) |- |Glacé or maraschino cherries for decoration <ref>(If possible, use only cherries in real maraschino liqueur, not the imitation maraschino cherries found in grocers and supermarkets)</ref> |1 jar | | |} == Procedure == === '''Shortcrust base''' === #Mix the flour, cocoa and baking powder in a bowl. Mix the egg white with the sugar and vanilla sugar, then pour into a well in the middle of the flour. #Mix the liquid into some of the flour until it forms a porridge-like mass #Add the cold butter, and rub into the dough. #Mix in the rest of the flour and [[Cookbook:Kneading|knead]] briefly into a ball. #Rest the dough in the refrigerator for 30 minutes. #[[Cookbook:Dough#Rolling|Roll]] the dough out to fit the base of a 20 [[Cookbook:Centimetre (cm)|cm]] (8 [[Cookbook:Inch|inch]]) [[Cookbook:Springform Pan|springform cake pan]]. #[[Cookbook:Baking|Bake]] at 160°C (325°F) for 20 minutes. ===Cake=== #Mix the flour, cornstarch, baking powder and cocoa powder with a [[Cookbook:Whisk|whisk]]. #Whisk the 4 egg yolks with the warm water until it is foamy, and little by little add ⅔ of the sugar, the vanilla sugar, almond extract, and cinnamon. #[[Cookbook:Whipping|Whip]] the egg whites to stiff peaks, and beat in the rest of the sugar a little at a time. #[[Cookbook:Folding|Fold]] the beaten egg whites into the egg yolk mixture. #Sprinkle the flour mixture onto the egg mixture and carefully incorporate. #Pour into a 20 cm (8 inch) [[Cookbook:Springform Pan|springform pan]] lined with [[Cookbook:Parchment Paper|parchment paper]]. #Bake at 160°C (325°F) oven for about 35 minutes until a wooden [[Cookbook:Skewer|skewer]] or toothpick comes out clean when the cake is pierced. #Cool cake in pan for 15 minutes, then turn out onto a [[Cookbook:Cooling Rack|cooling rack]] to cool completely. ===Filling=== #Drain the cherries in a [[Cookbook:Sieve|sieve]]. Reserve the juice. #Begin heating ¾ of the juice in a saucepan, and mix the cornstarch with the rest. #When the juice starts to [[Cookbook:Boiling|boil]], pour a little hot juice onto the cornstarch. Mix well, then stir it back into the saucepan. Cook until the mixture has thickened. #Add the sugar and stir to dissolve. Mix in the cherries in, then remove from the heat and allow to cool. #Add the Kirschwasser. #Sprinkle the gelatin onto the 3 tablespoons of water, and allow to bloom for 10 minutes, stirring from time to time. #Heat the gelatin carefully until melted. Allow to cool to room temperature, but don't let it set. #Whip the cream to soft peaks, and fold in the cool but still liquid gelatin. Whip until stiff, adding vanilla sugar to taste. If you don't have vanilla sugar, use 1 tablespoon of vanilla extract and granulated sugar to taste. ===Assembly=== #Spread ½ the cherry mixture then ⅓ of the whipped cream mixture onto the shortcrust base. #Cut the cake horizontally into two layers using a length of cotton thread. #Press one cake layer onto the filling. #Spread the rest of the cherry mixture onto the cake, along with half of the remaining whipped cream. #Cover the filling with the last layer of cake, and spread the remaining whipped cream on top. #Strew the top of the torte with shaved chocolate, and decorate with glacé or maraschino cherries. #Refrigerate for 4 hours or longer before serving. ==Notes, tips, and variations== * The cake layers may optionally be sprinkled with Kirschwasser before assembly. * The bitter almond oil can be replaced by 2 tsp [[Cookbook:Almond Extract|almond extract]]. * If possible, use only cherries in real maraschino liqueur, not the imitation maraschino cherries found in grocers and supermarkets. == Similar recipes == <categorytree mode="all">Black forest cake recipes</categorytree> [[Category:Recipes for black forest cake]] [[Category:Recipes for dessert]] [[Category:German recipes]] [[Category:Recipes with metric units]] [[Category:Recipes using egg]] [[Category:Recipes using whipped cream]] [[Category:Recipes using almond extract]] [[Category:Recipes using baking powder]] [[Category:Recipes using cherry]] [[Category:Recipes using cocoa powder]] [[Category:Recipes using ground cinnamon]] [[Category:Recipes using cornstarch]] [[Category:Recipes using all-purpose flour]] [[Category:Recipes using gelatin]] [[fr:Livre_de_cuisine/Desserts/Forêt_noire]] <references /> [[Category:Recipes using white sugar]] [[Category:Recipes using butter]] [[Category:Recipes for whipped cream]] [[Category:Recipes using heavy cream]] [[Category:Recipes using kirsch]] ejbjwpjd5cccznbx2pmqkzmcjkd23rd Talk:Chess Opening Theory/1. e4/1...b6 1 189568 4656033 4654542 2026-08-02T04:04:20Z 123957a 582828 /* Unclear */ Reply 4656033 wikitext text/x-wiki {{ChessProject|importance=Mid|class=Stub}} == Unclear == When it says "light-squared bishop" it's not clear it means specifically in Owen's Defense rather than Black's fianchetto pattern as a whole, which is why I misunderstood. [[User:123957a|123957a]] ([[User talk:123957a|discuss]] • [[Special:Contributions/123957a|contribs]]) 11:40, 15 July 2026 (UTC) :I fixed it now. [[User:123957a|123957a]] ([[User talk:123957a|discuss]] • [[Special:Contributions/123957a|contribs]]) 04:04, 2 August 2026 (UTC) q2ionu5kc0zuntx3384lgdo8ew2rgvp Digital Circuits/CORDIC 0 196363 4656045 4609802 2026-08-02T09:58:35Z ~2026-42565-43 3618656 /* General Concept */ 4656045 wikitext text/x-wiki A [http://en.wikipedia.org/wiki/CORDIC CORDIC] (standing for '''CO'''ordinate '''R'''otation '''DI'''gital '''C'''omputer) circuit serves to compute several common mathematical functions, such as trigonometric, hyperbolic, logarithmic and exponential functions. ==Application== A CORDIC uses only adders and bitshifts to compute the results, with the benefit that it can therefore be implemented using relatively basic hardware. Methods such as power series or table lookups usually need multiplications to be performed. If a hardware multiplier is not available, a CORDIC is generally faster, but if a multiplier can be used, other methods may be faster. CORDICs can also be implemented in many ways, including a single-stage iterative method, which requires very few gates when compared to multiplier circuits. Also, CORDICs can compute many functions with precisely the same hardware, so they are ideal for applications with an emphasis on reduction of cost (e.g. by reducing gate counts in FPGAs) over speed. An example of this priority is in pocket calculators, where CORDICs are very frequently used. ==History== The CORDIC was first invented in 1959 by J.E. Volder, in the aeroelectronics departments of Convair, and was designed for the B-58 Hustler bomber's navigational computer to replace an analogue resolver, a device that computed trigonometric functions (Circular CORDIC). In 1971, J.S. Walther, at Hewlett-Packard, extended the method to calculate hyperbolic functions, natural logarithms, natural exponentials, multiplications, divisions, and square roots (Linear CORDIC and Hyperbolic CORDIC). In 2019, based on Hyperbolic CORDIC, Yuanyong Luo et al. further proposed a Generalized Hyperbolic CORDIC (GH CORDIC) to directly compute logarithms and exponentials with an arbitrary fixed base. Theoretically, Hyperbolic CORDIC is a special case of GH CORDIC. ==General Concept== Consider the following rotations of vectors: {| align=center |- |[[Image:CORDIC Vector Rotation 1.svg]] |[[Image:CORDIC Vector Rotation 2.svg]] |- | *Start at (1, 0) *Rotate by ''θ'' *We get (cos''θ'', sin''θ'') | *Start at (1, ''y'') *Rotate until ''y'' = 0 *The rotation is tan<sup>−1</sup>''y'' |} If we were to have a computationally efficient method of rotating a vector, we can directly evaluate sine, cosine and arctan functions. However, rotation by an arbitrary angle is non-trivial (you have to know the sine and cosines, which is precisely what we don't have). We use two methods to make it easier: *Instead of performing rotations, we perform "pseudorotations", which are easier to compute. *Construct the desired angle ''θ'' from a sum of special angles, ''α<sub>i</sub>'': ::<math>\theta = \alpha_1 + \alpha_2 + \ldots + \alpha_m</math> The diagram belows shows a rotation and pseudo-rotation of a vector of length ''R''<sub>i</sub> about an angle of ''a''<sub>i</sub> about the origin: [[File:CORDIC Pseudo-rotation.svg|center]] A rotation about the origin produces the following co-ordinates: ::<math>x_{i+1} = x_i \cos \alpha_i - y_i \sin \alpha_i </math> ::<math>y_{i+1} = y_i \cos \alpha_i + x_i \sin \alpha_i </math> ::<math>\theta_{i+1} = \theta_i + \alpha_i</math> Recall the identity <math>\cos \theta \equiv 1 \Big / \sqrt{1+ \tan^2 \theta } </math>. ::<math>x_{i+1} = \left( x_i - y_i \tan \alpha_i \right) \Big / \sqrt{1+ \tan^2 \alpha_i } </math> ::<math>y_{i+1} = \left( y_i + x_i \tan \alpha_i \right) \Big / \sqrt{1+ \tan^2 \alpha_i } </math> Our strategy will be to eliminate the factor of <math>1 \Big / \sqrt{1+ \tan^2 \alpha_i}</math> and somehow remove the multiplication by <math>\tan \alpha_i</math>. A pseudo-rotation produces a vector with the same angle as the rotated vector, but with a different length. In fact, the pseudo-rotation changes the length to: ::<math>R_{i+1} = \frac{R_i}{\cos \alpha_i } = R_i \sqrt{ 1+ \tan^2 \alpha_i }</math> Thus we now have these co-ordinates following a pseudo-rotation: ::<math>x^\prime_{i+1} = \left( x_i - y_i \tan \alpha_i \right) </math> ::<math>y^\prime_{i+1} = \left( y_i + x_i \tan \alpha_i \right) </math> ::<math>\theta_{i+1} = \theta_i + \alpha_i</math> The pseudo-rotation has succeeded in removing our length-factor, which would have required a costly division operation. However, the vector will grow by a factor of ''K'' over a sequence of ''n'' pseudo-rotations: ::<math>K = \prod_{i=0}^{n-1} \sqrt{ 1+ \tan^2 \alpha_i }</math> The co-ordinates following the ''n'' pseudo-rotations are then: ::<math>x_{n} = K \left( x_i \cos \sum_{i=0}^{n-1} {\alpha_i} - y_i \sin \sum_{i=0}^{n-1}\alpha_i \right) </math> ::<math>y_{n} = K \left( y_i \cos \sum_{i=0}^{n-1} {\alpha_i} + x_i \sin \sum_{i=0}^{n-1}\alpha_i \right) </math> ::<math>\theta_{n} = \theta_i - \sum_{i=0}^{n-1}{\alpha_i}</math> [[File:CORDIC Pseudo-rotation Example.svg|right|frame|The first three pseudo-rotations. Note how we converge on the correct angle, ''&theta;'']] If the angles are always the same set, then ''K'' is fixed, and can be accounted for later. We choose these angle according to two criteria: *We must also choose the angles so that any angle can be constructed from the sum of all them, with appropriate signs. *We make all <math>\tan \alpha_i</math> a power of 2, so that the multiplication can be performed by a simple logical shift of a binary number. The tangent function has a monotonically increasing gradient on the interval [0, ''&pi;''/2], so the tangent of a given angle is always less than twice the tangent of half the angle. This means that if we make the angles <math>\alpha_i = \tan^{-1} 2^{-i}</math>, we can satisfy both criteria. Note that the tangent function is odd, which means that to pseudo-rotate the other way, you just subtract, rather than add, the tangent of the angle. {| class=wikitable style="text-align:center; margin: 1em auto 1em auto" |- !width=40 rowspan=2|i !colspan=2|''&alpha;''<sub>i</sub> = tan<sup>−1</sup> (2<sup>−i</sup>) |- !width=60|Degrees!!width=60|Radians |- |0|| 45.00 || 0.7854 |- |1|| 26.57 || 0.4636 |- |2|| 14.04 || 0.2450 |- |3|| 7.13 || 0.1244 |- |4|| 3.58 || 0.0624 |- |5|| 1.79 || 0.0312 |- |6|| 0.90 || 0.0160 |- |7|| 0.45 || 0.0080 |- |8|| 0.22 || 0.0040 |- |9|| 0.11 || 0.0020 |} In step ''i'' of the process, we pseudo-rotate by <math>d_i 2^{-i}\,</math>, where <math>d_i\,</math> is the direction (or sign) of the rotation, which will be chosen at each step to force the angle to converge to the desired final rotation. For example, consider a rotation of 28°: ::<math>28 \approx 45.0 - 26.57 + 14.04 - 7.13 + 3.58 - 1.79 +0.90 - 0.45 + 0.22 + 0.11</math> ::<math>28 \approx 27.91</math> The more steps we take, the better the approximation that we can make by successive rotations. Thus, we have the following iterative co-ordinate calculation: ::<math>x_{i+1} = x_i - d_i y_i 2^{-i}</math> ::<math>y_{i+1} = y_i + d_i x_i 2^{-i}</math> ::<math>\theta_{i+1} = \theta_i - d_i \alpha_i</math> In order to achieve ''k'' bit of precision, ''k'' iterations are needed, because <math>\tan^{-1} 2^{-i} \lessapprox 2^{-i}</math>, converging as ''i'' increases. ==Using CORDICs== [[File:CORDIC Block.svg|right]] CORDICs can be used to compute many functions. A CORDIC has three inputs, ''x''<sub>0</sub>, ''y''<sub>0</sub>, and ''z''<sub>0</sub>. Depending on the inputs to the CORDIC, various results can be produced at the outputs ''x''<sub>n</sub>, ''y''<sub>n</sub>, and ''z''<sub>n</sub>. {{clear}} ===Using CORDIC in rotation mode=== {| |- |width=250| <math>x_{i+1} = x_i - d_i y_i 2^{-i}</math><br> <math>y_{i+1} = y_i + d_i x_i 2^{-i}</math><br> <math>z_{i+1} = z_i - d_i \alpha_i</math> |width=250| <math> x_{n} = K \left( x_0 \cos z_0 - y_0 \sin z_0 \right) </math><br> <math> y_{n} = K \left( y_0 \cos z_0 + x_0 \sin z_0 \right) </math><br> <math> z_{n} = 0</math> |} For convergence of ''z''<sub>n</sub> to 0, choose <math>d_i = \mbox{sgn } z_i </math>. If we start with ''x''<sub>0</sub> = 1/''K'' and ''y''<sub>0</sub>=0, at the end of the process, we find ''x''<sub>n</sub>=cos ''z''<sub>0</sub> and ''y''<sub>n</sub>=sin ''z''<sub>0</sub>. The domain of convergence is <math>-99.7^{\circ} < z_{0} < 99.7^{\circ}</math> because 99.7° is the sum of all angles in the list. ===Using CORDIC in vectoring mode=== {| |- |width=250| <math>x_{i+1} = x_i - d_i y_i 2^{-i}</math><br> <math>y_{i+1} = y_i + d_i x_i 2^{-i}</math><br> <math>z_{i+1} = z_i - d_i \alpha_i</math> |width=250| <math>x_{n} = K \sqrt{ x^2 + y^2} </math><br> <math> y_{n} = 0 </math><br> <math>z_{n} = z_0 + \tan^{-1} \left( y_0 / x_0 \right) </math> |} For convergence of ''y''<sub>n</sub> to 0, choose <math>d_i = - \mbox{sgn } (y_i)</math>. If we start with ''x''<sub>0</sub> = 1 and ''z''<sub>0</sub> = 0, we find ''z''<sub>n</sub>=tan<sup>−1</sup>''y''<sub>0</sub> ==Implementations of CORDICs== ===Bit-parallel, unrolled=== [[File:CORDIC (Bit-Parallel, Unrolled, Circular Rotation).svg|center]] ===Bit-parallel, iterative=== [[File:CORDIC (Bit-Parallel, Iterative, Circular Rotation).svg|center]] If a high speed is not required, this can be implemented with a single adder and a single shifter. ===Bit-serial=== ==The Universal CORDIC== By introducing a factor ''&mu;'', we can also cater for linear and hyperbolic functions: ::<math>x_{i+1} = x_i - \mu d_i y_i 2^{-i}</math> ::<math>y_{i+1} = y_i + d_i x_i 2^{-i}</math> ::<math>z_{i+1} = z_i - d_i \alpha_i</math> ===Summary of Universal CORDIC implementations=== ::<math>x_{i+1} = x_i - \mu d_i y_i 2^{-i}</math> ::<math>y_{i+1} = y_i + d_i x_i 2^{-i}</math> ::<math>z_{i+1} = z_i - d_i \alpha_i</math> {| class=wikitable style="text-align:center; margin: 1em auto 1em auto" |- !rowspan=2|Mode!!Rotation!!Vectoring |- |<math>d_i = \mbox{sgn } (z_i), \quad z \rightarrow 0</math> |<math>d_i = -\mbox{sgn } (y_i), \quad y \rightarrow 0</math> |- |'''Circular''' ''&mu;'' = 1<br> ''&alpha;''<sub>i</sub> = tan<sup>−1</sup>2<sup>−i</sup> |[[File:CORDIC Block, Circular, Rotation.svg]] |[[File:CORDIC Block, Circular, Vectoring.svg]] |- |'''Linear''' ''&mu;'' = 0<br> ''&alpha;''<sub>i</sub> = 2<sup>−i</sup> |[[File:CORDIC Block, Linear, Rotation.svg]] |[[File:CORDIC Block, Linear, Vectoring.svg]] |- |'''Hyperbolic''' ''&mu;'' = -1<br> ''&alpha;''<sub>i</sub> = tanh<sup>−1</sup>2<sup>−i</sup> |[[File:CORDIC Block, Hyperbolic, Rotation.svg]] |[[File:CORDIC Block, Hyperbolic, Vectoring.svg]] |- |colspan=3 align=left| *In hyperbolic mode, iterations 4, 13, 40, 121, ..., ''j'', 3''j''+1,... must be repeated. The constant ''K&#39;'' given below accounts for this. *''K'' = 1.646760258121... *1/''K'' = 0.607252935009... *''K&#39;'' = 0.8281593609602... *1/''K&#39;'' = 1.207497067763... |} ===Directly computable functions=== ::{| |height=30 width=200|<math>\sin z\,</math> |width=200|<math>\cos z\,</math> |- |height=30|<math>\tan^{-1} z\,</math> |<math>\sinh z\,</math> |- |height=30|<math>\cosh z\,</math> |<math>\tanh^{-1} z\,</math> |- |height=30|<math>y/x </math> |<math>xz</math> |- |height=30|<math>\tan^{-1} (y/x)\,</math> |<math>\sqrt{ x^2 + y^2 }</math> |- |height=30|<math>\sqrt{ x^2 - y^2 }</math> |<math>e^z = \sinh z + \cosh z</math> |} ===Indirectly computable functions=== In addition to the above functions, a number of other functions can be produced by combining the results of previous computations: ::{| |height=30 width=200|<math>\tan z = \frac{\sin z}{\cos z}\,</math> |width=200|<math>\cos^{-1} w = \tan^{-1} \frac{\sqrt{1-w^2}}{w}</math> |- |height=30|<math>\tanh z = \frac{\sinh z}{\cosh z}</math> |<math>\sin^{-1} w = \tan^{-1} \frac{w}{\sqrt{1-w^2}}</math> |- |height=30|<math>\ln w = 2 \tanh^{-1} \frac{w-1}{w+1}</math> |<math>\log_b w = {\ln w \over \ln b}</math> |- |height=30|<math>w^t = e^{t \ln w}</math> |<math>\cosh^{-1} = \ln \left( w + \sqrt{w^2-1} \right) </math> |- |height=30|<math>\tan^{-1} (y/x)\,</math> |<math>\sinh^{-1} = \ln \left( w + \sqrt{w^2+1} \right) </math> |- |height=30|<math>\sqrt{ x^2 - y^2 }</math> |<math>\sqrt{w} = \sqrt{ (w+1/4)^2 - (w-1/4)^2 }</math> |} ==Further reading== {{wikipedia|CORDIC}} *{{Citation | title =  The CORDIC trigonometric computing technique | url = http://lapwww.epfl.ch/courses/comparith/Papers/3-Volder_CORDIC.pdf | year = 1959 | author = Volder, J.E. | journal = IRE Transactions on Electronic Computers | pages = 330–334 | volume = 8 | issue = 3 | accessdate = 2009-06-02 }} *{{Citation | title = A unified algorithm for elementary functions | url = http://portal.acm.org/citation.cfm?id=1478786.1478840 | year = 1971 | author = Walther, J.S. | journal = Proceedings of the May 18–20, 1971, spring joint computer conference | pages = 379–385 | format = w | accessdate = 2009-06-02 }} *{{Citation | title = Generalized Hyperbolic CORDIC and Its Logarithmic and Exponential Computation With Arbitrary Fixed Base | doi = 10.1109/TVLSI.2019.2919557 | year = 2019 | author = Yuanyong Luo, Yuxuan Wang, Yajun Ha, Zhongfeng Wang, Siyuan Chen, and Hongbing Pan | journal = IEEE Transactions on Very Large Scale Integration (VLSI) Systems | pages = 2156–2169 | volume = 27 | issue = 9 | accessdate = 2019-06-18 }} *[http://baykov.de/cordic1972.htm Vladimir Baykov, ''Problems of Elementary Functions Evaluation Based on Digit by Digit (CORDIC) Technique'', PhD thesis, Leningrad State Univ. of Electrical Eng., 1972] *Schmid, Hermann, ''Decimal computation.'' New York, Wiley, 1974 *[http://baykov.de/cordic1975.htm V.D.Baykov,V.B.Smolov, ''Hardware implementation of elementary functions in computers'', Leningrad State University, 1975, 96p.]*[http://www.umup.narod.ru/1115.zip Full Text] *Senzig, Don, ''Calculator Algorithms'', IEEE Compcon Reader Digest, IEEE Catalog No. 75 CH 0920-9C, pp139–141, IEEE, 1975. *V.D.Baykov,S.A.Seljutin, ''Elementary functions evaluation in microcalculators'', Moscow, Radio & svjaz,1982,64p. *[http://baykov.de/cordic1985.htm Vladimir D.Baykov, Vladimir B.Smolov, Special-purpose processors: iterative algorithms and structures, Moscow, Radio & svjaz, 1985, 288 pages ] *M. E. Frerking, ''Digital Signal Processing in Communication Systems, 1994'' * Vitit Kantabutra, ''On hardware for computing [[exponential function|exponential]] and [[trigonometric function]]s'', IEEE Trans. Computers 45 (3), 328-339 (1996) *[http://www.andraka.com/files/crdcsrvy.pdf Andraka, Ray, ''A survey of CORDIC algorithms for FPGA based computers''] *Henry Briggs, ''Arithmetica Logarithmica.'' London, 1624, folio *[http://cordic-bibliography.blogspot.com/2011/07/cordic-bibliography-site-revive.html ''CORDIC Bibliography Site''], Shaoyun Wang, July 2011 *[https://archived.hpcalc.org/laporte/TheSecretOfTheAlgorithms.htm ''The secret of the algorithms''], Jacques Laporte, Paris 1981 *[https://archived.hpcalc.org/laporte/digit_by_digit.htm ''Digit by digit methods''], Jacques Laporte, Paris 2006 *Ayan Banerjee, [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6V0X-4313PR1-1&_user=10&_rdoc=1&_fmt=&_orig=search&_sort=d&_docanchor=&view=c&_acct=C000050221&_version=1&_urlVersion=0&_userid=10&md5=c85888a82db1f3b515b4a8d2a529624b FPGA realization of a CORDIC based FFT processor for biomedical signal processing], Kharagpur, 2001 *[http://www.hindawi.com/journals/vlsi/2010/794891.html ''CORDIC Architectures: A Survey''], B. Lakshmi and A. S. Dhar, Journal: VLSI Design, January 2010 *[http://cockrum.net/Cockrum_Fall_2008_Final_Paper.pdf ''Implementation of a CORDIC Algorithm in a Digital Down-Converter''], C. Cockrum, Fall 2008 *{{Citation | title = Computer arithmetic: algorithms and hardware designs | year = 1999 | author = Parhami, B. }} {{BookCat}} i4t5op3aqa6cy7ub802r5aaksbnh3wz Aros/User/Applications 0 237399 4656037 4655825 2026-08-02T07:26:05Z Jeff1138 301139 4656037 wikitext text/x-wiki ==Introduction== [[#Graphical Image Editing Art]] [[#Office Application]] [[#Audio]] [[#Misc Application]] [[#Games & Emulation]] [[#Application Guides]] [[#top|...to the top]] [[#top|...to the top]] Most apps can be opened on the Workbench (aka publicscreen pubscreen) which is the default display option but can offer a custom one set to your configurations (aka custom screen mode promotion). These custom ones tend to stack so the possible use of A-M/A-N method of switching between full screens and the ability to pull down screens as well If you are interested in creating or porting new software, see [http://en.wikibooks.org/wiki/Aros/Developer/Docs here] {| class="wikitable sortable" |- !width:30%;|Internet Applications !width:10%;|AROS(x86) !width:10%;|Commodore-Amiga OS 3.1 (68k) !width:10%;|Hyperion OS4(PPC) !width:10%;|MorphOS(PPC) |- |<!--Sub Menu-->Web Online Browser [], |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=network/browser Odyssey 2.0], [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1175&highlight=odyssey&rowstart=100 Odyssey 3.0], |<!--Amiga OS-->[https://aminet.net/comm/www Amelinium], [https://blog.alb42.de/programs/amifox/ amifox] with [https://github.com/alb42/wrp wrp server], IBrowse*, Voyager*, [https://github.com/amigazen/aweb3/ AWeb 3.6 src], [https://github.com/matjam/aweb AWeb Src], [http://aminet.net/package/comm/www/NetSurf-m68k-sources Netsurf], [], |<!--AmigaOS4-->[ Odyssey OWB], [ Timberwolf (Firefox port 2011)], [http://amigaworld.net/modules/newbb/viewtopic.php?forum=32&topic_id=32847 OWB-mui], [http://strohmayer.org/owb/ OWB-Reaction], IBrowse*, [http://os4depot.net/index.php?function=showfile&file=network/browser/aweb.lha AWeb], Voyager, [http://www.os4depot.net/index.php?function=browse&cat=network/browser Netsurf], |<!--MorphOS-->Wayfarer, [http://fabportnawak.free.fr/owb/ Odyssey OWB], [ Netsurf], IBrowse*, AWeb, [], |- |<!--Sub Menu-->YouTube, Dailymotion website downloading videos audio [https://github.com/yt-dlp/yt-dlp yt-dlp], [https://clipgrab.org/ clipgrab], |<!--AROS-->[], [https://blog.alb42.de/amitube/ Amitube], |<!--Amiga OS-->[https://blog.alb42.de/amitube/ Amitube], [ smtube], |<!--AmigaOS4-->[https://blog.alb42.de/amitube/ Amitube], getVideo, Tubexx, [https://github.com/walkero-gr/aiostreams aiostreams], |<!--MorphOS-->[ ytsearch], [https://blog.alb42.de/amitube/ Amitube], [http://morphos.lukysoft.cz/en/vypis.php?kat=5 getVideo], Tubexx |- |<!--Sub Menu-->Old style E-mailing SMTP POP3 IMAP based |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=network/email SimpleMail], [http://sourceforge.net/projects/simplemail/files/ src], [https://github.com/jens-maus/yam YAM] |<!--Amiga OS-->[http://sourceforge.net/projects/simplemail/files/ SimpleMail], [https://github.com/jens-maus/yam YAM] |<!--AmigaOS4-->SimpleMail, YAM, |<!--MorphOS--> SimpleMail, YAM |- |<!--Sub Menu-->IRC |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=network/chat WookieChat], [https://sourceforge.net/projects/wookiechat/ Wookiechat src], [http://archives.arosworld.org/index.php?function=browse&cat=network/chat AiRcOS], Jabberwocky, |<!--Amiga OS-->Wookiechat, AmIRC |<!--AmigaOS4-->Wookiechat |<!--MorphOS-->[http://morphos.lukysoft.cz/en/vypis.php?kat=5 Wookiechat], [http://morphos.lukysoft.cz/en/vypis.php?kat=5 AmIRC], |- |<!--Sub Menu-->Instant Messaging IM like [https://github.com/BlitterStudio/amidon Hollywood lang based Mastodon client], BlueSky AT protocol, Facebook(TM), Twitter X (TM), Bitlbee IRC Gateway and others |<!--AROS-->[https://github.com/kaffeine1/telegram-amiga telegram-amiga], [http://archives.arosworld.org/index.php?function=browse&cat=network/chat jabberwocky], |<!--Amiga OS-->[http://amitwitter.sourceforge.net/ AmiTwitter], CLIMM, SabreMSN, jabberwocky, |<!--AmigaOS4-->[http://amitwitter.sourceforge.net/ AmiTwitter], SabreMSN, |<!--MorphOS-->[http://amitwitter.sourceforge.net/ AmiTwitter], [http://morphos.lukysoft.cz/en/vypis.php?kat=5 PolyglotNG], SabreMSN, |- |<!--Sub Menu-->Torrents |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=network/p2p ArTorr], |<!--Amiga OS--> |<!--AmigaOS4-->CTorrent, Transmission |<!--MorphOS-->MLDonkey, Beehive, [http://morphos.lukysoft.cz/en/vypis.php?kat=5 Transmission], CTorrent, |- |<!--Sub Menu-->FTP |<!--AROS-->Plugin included with Dopus Magellan, MarranoFTP, |<!--Amiga OS-->[http://aminet.net/package/comm/tcp/AmiFTP AmiFTP], AmiTradeCenter, ncFTP, |<!--AmigaOS4--> |<!--MorphOS-->[http://morphos.lukysoft.cz/en/vypis.php?kat=5 Pftp], [http://aminet.net/package/comm/tcp/AmiFTP-1.935-OS4 AmiFTP], |- |<!--Sub Menu-->WYSIWYG Web Site Editor |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Internet Radio Streaming Audio [http://www.gnu.org/software/gnump3d/ gnump3d], [http://www.icecast.org/ Icecast2] Server (Broadcast) and Client (Listen), [ mpd], [http://darkice.sourceforge.net/ DarkIce], [http://www.dyne.org/software/muse/ Muse], |<!--AROS-->[https://archives.arosworld.org/index.php?function=browse&cat=audio/misc ], Mplayer (Icecast Client only), |<!--Amiga OS-->[https://github.com/sandlbn/TuneFinder TuneFinder C Src], [https://github.com/sandlbn/TuneFinderMUI TuneFinderMUI], [http://amigazeux.net/anr/ AmiNetRadio], [], [], |<!--AmigaOS4-->[http://www.tunenet.co.uk/ Tunenet], |<!--MorphOS-->Mplayer, AmiNetRadio, |- |<!--Sub Menu-->VoIP (Voice over IP) with SIP Client (Session Initiation Protocol) or Asterisk IAX2 Clients Softphone (skype like) |<!--AROS--> |<!--Amiga OS-->AmiPhone with Speak Freely, |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Weather Forecast |<!--AROS-->[http://sourceforge.net/projects/zunetools/files/ WeatherBar], [http://archives.arosworld.org/index.php?function=browse&cat=utility/workbench AWeather], [] |<!--Amiga OS-->[http://amigazeux.net/wetter/ Wetter], [https://github.com/emartisoft/AmiWeatherForecasts AmiWeatherForecasts src], |<!--AmigaOS4-->[http://os4depot.net/?function=showfile&file=utility/workbench/flipclock.lha FlipClock], |<!--MorphOS-->[http://amigazeux.net/wetter/ Wetter], |- |<!--Sub Menu-->Street Road Maps Route Planning GPS Tracking |<!--AROS-->[https://blog.alb42.de/programs/muimapparium/ MuiMapparium] [https://build.alb42.de/ Build of MuiMapp versions], |<!--Amiga OS-->AmiAtlas*, UKRoutePlus*, [http://blog.alb42.de/ AmOSM], |<!--AmigaOS4--> |<!--MorphOS-->[http://blog.alb42.de/programs/mapparium/ Mapparium], |- |<!--Sub Menu-->Clock and Date setting from the internet (either ntp or websites) [https://www.timeanddate.com/worldclock/ World Clock], [http://www.time.gov/ NIST], [], |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=network/misc ntpsync], |<!--Amiga OS-->ntpsync |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Newsgroups |<!--AROS--> |<!--Amiga OS-->[http://newscoaster.sourceforge.net/ Newscoaster], [https://github.com/jens-maus/newsrog NewsRog], [ WorldNews], |<!--AmigaOS4--> |<!--MorphOS--> |- |} <nowiki>*</nowiki> Commercial product. ==Graphical Image Editing Art== {| class="wikitable sortable" |- !width:30%;|Image Editing !width:10%;|AROS(x86) !width:10%;|Commodore-Amiga OS 3.1(68k) !width:10%;|Hyperion OS4(PPC) !width:10%;|MorphOS(PPC) |- |<!--Sub Menu-->Pixel Raster Artwork [https://github.com/LibreSprite/LibreSprite LibreSprite based on GPL aseprite], [https://github.com/abetusk/hsvhero hsvhero], [], |<!--AROS-->[https://sourceforge.net/projects/zunetools/files/ZunePaint/ ZunePaint], [http://archives.arosworld.org/index.php?function=browse&cat=graphics/edit LunaPaint], [http://archives.arosworld.org/index.php?function=browse&cat=graphics/edit GrafX2], [ LodePaint needs OpenGL], |<!--Amiga OS-->[http://www.amigaforever.com/classic/download.html PPaint], GrafX2, [https://github.com/grovdata/Amiga_Sources/blob/master/software.md DeluxePaint], [http://www.amiforce.de/perfectpaint/perfectpaint.php PerfectPaint], Zoetrope, Brilliance2*, |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=browse&cat=graphics/edit LodePaint], GrafX2, |<!--MorphOS-->Sketch, Pixel*, GrafX2, [http://morphos.lukysoft.cz/en/vypis.php?kat=3 LunaPaint] |- |<!--Sub Menu-->Image viewing |<!--AROS-->[http://sourceforge.net/projects/zunetools/files/ ZuneView], [http://archives.arosworld.org/index.php?function=browse&cat=graphics/viewer LookHere], [http://archives.arosworld.org/index.php?function=browse&cat=graphics/viewer LoView], [http://archives.arosworld.org/index.php?function=browse&cat=graphics/viewer PicShow] , [http://amigaworld.net/modules/newbb/viewtopic.php?mode=viewtopic&topic_id=31400&forum=32&start=80&viewmode=flat&order=0#583458 Picture Album], |<!--Amiga OS-->PicShow, PicView, Photoalbum, |<!--AmigaOS4-->WarpView, PicShow, flPhoto, Thumbs, [http://amigaworld.net/modules/newbb/viewtopic.php?mode=viewtopic&topic_id=31400&forum=32&start=80&viewmode=flat&order=0#583458 Picture Album], |<!--MorphOS-->[http://morphos.lukysoft.cz/en/vypis.php?kat=3 ShowGirls], [http://amigaworld.net/modules/newbb/viewtopic.php?mode=viewtopic&topic_id=31400&forum=32&start=80&viewmode=flat&order=0#583458 Picture Album] |- |<!--Sub Menu-->Photography retouching / Image Manipulation like Photoshop(tm) |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=graphics/edit RNOEffects], [https://sourceforge.net/projects/zunetools/files/ ZunePaint], [http://sourceforge.net/projects/zunetools/files/ ZuneView], |<!--Amiga OS-->[ Tecsoft Video Paint aka TVPaint], Photogenics*, ArtEffect*, ImageFX*, XiPaint, fxPaint, ImageMasterRT, Opalpaint, |<!--AmigaOS4-->WarpView, flPhoto, [http://www.os4depot.net/index.php?function=browse&cat=graphics/edit Photocrop] |<!--MorphOS-->[http://morphos.lukysoft.cz/en/vypis.php?kat=3 ShowGirls], ImageFX*, |- |<!--Sub Menu-->Manage RAW picture folder galleries like Darktable, RAWtherapy, etc |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Graphic Format Converter - ICC profile support sRGB, Adobe RGB, XYZ and linear RGB |<!--AROS--> |<!--Amiga OS-->GraphicsConverter, ImageStudio, [http://www.coplabs.org/artpro.html ArtPro] |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Thumbnail Generator [], |<!--AROS-->[http://sourceforge.net/projects/zunetools/files/ ZuneView], [http://archives.arosworld.org/index.php?function=browse&cat=utility/shell Thumbnail Generator] |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Icon Editor |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=graphics/iconedit Archives], [http://archives.arosworld.org/index.php?function=browse&cat=utility/workbench Icon Toolbox], |<!--Amiga OS--> |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=browse&cat=graphics/iconedit IconEditor] |<!--MorphOS--> |- |<!--Sub Menu-->2D Pixel Art Animation |<!--AROS-->Lunapaint |<!--Amiga OS-->PPaint, AnimatED, Scala*, GoldDisk MovieSetter*, Walt Disney's Animation Studio*, ProDAD*, [https://github.com/historicalsource/DeluxePaint DeluxePaint src], Brilliance |<!--AmigaOS4--> |<!--MorphOS-->[http://morphos.lukysoft.cz/en/vypis.php?kat=3 Titler] |- |<!--Sub Menu-->2D SVG based MovieSetter type |<!--AROS--> |<!--Amiga OS-->MovieSetter*, Fantavision* |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Morphing |<!--AROS-->[ GLMorph] |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->2D Cad (qcad->LibreCAD, etc.) |<!--AROS--> |<!--Amiga OS-->Xcad, MaxonCAD |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->3D Cad like FreeCad, BRL-CAD, OpenSCAD, AvoCADo, etc. using dxf, obj (vertices), blend, |<!--AROS--> |<!--Amiga OS-->XCad3d*, DynaCADD*, Cycas, |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->3D Model Rendering of glft (json) gbl (png jpg), usdz (USD files with materials, textures, and animations), FBX Filmbox is a proprietary Autodesk format, |<!--AROS-->POV-Ray |<!--Amiga OS-->[http://www.discreetfx.com./amigaproducts.html CINEMA 4D]*, POV-Ray, Lightwave3D*, Real3D*, Caligari24*, Reflections/Monzoom*, [https://github.com/privatosan/RayStorm Raystorm src], Tornado 3D |<!--AmigaOS4-->Blender, POV-Ray, Yafray |<!--MorphOS-->Blender, POV-Ray, Yafray |- |<!--Sub Menu-->3D Format Converter [], [], |<!--AROS-->[https://archives.arosworld.org/?function=showfile&file=graphics/convert/ 3doc.i386-aros], [], |<!--Amiga OS--> |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=showfile&file=graphics/convert/ivcon.lha IVCon] |<!--MorphOS--> |- |<!--Sub Menu--> |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Screen grabbing display |<!--AROS-->[ Screengrabber], [http://archives.arosworld.org/index.php?function=browse&cat=utility/misc snapit], [http://archives.arosworld.org/index.php?function=browse&cat=video/record screen recorder], [] |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Grab graphics music from apps [https://github.com/Malvineous/ripper6 ripper6], [], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu--> |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |} <nowiki>*</nowiki> Commercial product. [[#top|...to the top]] ==Office Application== {| class="wikitable sortable" |- !width:30%;|Office !width:10%;|AROS (x86) !width:10%;|[http://en.wikipedia.org/wiki/Amiga_software Commodore-Amiga OS 3.1] (68k) !width:10%;|[http://en.wikipedia.org/wiki/AmigaOS_4 Hyperion OS4] (PPC) !width:10%;|[http://en.wikipedia.org/wiki/MorphOS MorphOS] (PPC) |- |<!--Sub Menu-->Word-processing |<!--AROS-->[https://archives.arosworld.org/index.php?function=browse&cat=office/wordprocessing Cinnamon Writer], [https://finalwriter.godaddysites.com/ Final Writer 7*], [https://github.com/sodero/MUI-Vim/releases MUI-Vim], [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1995&rowstart=20&pid=12668#post_12668 Slovo], [], |<!--AmigaOS-->[ Softwood FinalCopy II*], Haage AmigaWriter*, Digita WordWorth*, Softwood FinalWriter*, Micro-Systems Excellence 3*, Arnor Protext, Rashumon, [ InterWord], [ KindWords], [WordPerfect], [ New Horizons Flow], [ CygnusEd Pro], [ Micro-systems Scribble], |<!--AmigaOS4-->AbiWord, [ CinnamonWriter] |<!--MorphOS-->[ Cinnamon Writer], [http://www.meta-morphos.org/viewtopic.php?topic=1246&forum=53 scriba], [http://morphos.lukysoft.cz/en/index.php Papyrus Office], |- |<!--Sub Menu-->Spreadsheets |<!--AROS-->[https://blog.alb42.de/programs/leu/ Leu], [https://archives.arosworld.org/index.php?function=browse&cat=office/spreadsheet], |<!--AmigaOS-->[https://aminet.net/package/biz/spread/ignition-src Ignition Src 1.3], [MaxiPlan 500 Plus], [OXXI Plan/IT v2.0 Speadsheet], [ Superplan], [ Creative Developments TurboCalc], [ ProCalc], [ InterSpread], [Digita DGCalc], [ Gold Disk Advantage], [ Micro-systems Analyze!] |<!--AmigaOS4-->Gnumeric, [https://ignition-amiga.sourceforge.net/ Ignition], |<!--MorphOS-->[ ignition], [http://morphos.lukysoft.cz/en/vypis.php Papyrus Office], |- |<!--Sub Menu-->Presentations |<!--AROS-->[http://www.hollywoood-mal.com/ Hollywood]*, |<!--Amiga OS-->[http://www.hollywoood-mal.com/ Hollywood]*, MediaPoint, PointRider, Scala*, |<!--Amiga OS4-->[http://www.hollywoood-mal.com/ Hollywood]*, PointRider |<!--MorphOS-->[http://www.hollywoood-mal.com/ Hollywood]*, PointRider |- |<!--Sub Menu-->Databases |<!--AROS-->[http://sdb.freeforums.org/ SDB], [http://archives.arosworld.org/index.php?function=browse&cat=office/database BeeBase], |<!--Amiga OS-->Precision Superbase 4 Pro*, Arnor Prodata*, BeeBase, Datastore, FinalData*, AmigaBase, Fiasco, Twist2*, [Digita DGBase], [], |<!--AmigaOS4-->BeeBase, SQLite, |<!--MorphOS-->[http://morphos.lukysoft.cz/en/vypis.php?kat=6 BeeBase], |- |<!--Sub Menu-->PDF Viewing and editing digital signatures |<!--AROS-->[http://sourceforge.net/projects/arospdf/ ArosPDF via splash], [https://github.com/wattoc/AROS-vpdf vpdf wip], |<!--Amiga OS-->APDF |<!--AmigaOS4-->AmiPDF |<!--MorphOS-->APDF, vPDF, |- |<!--Sub Menu-->Printing |<!--AROS-->Postscript 3 laser printers and Ghostscript internal, [ GutenPrint], |<!--Amiga OS-->[http://www.irseesoft.de/tp_what.htm TurboPrint]* |<!--AmigaOS4-->(some native drivers), |<!--MorphOS-->early TurboPrint included, |- |<!--Sub Menu-->Note Taking markdown support like Obsidian like, joplin, OneNote, EverNotes, xournalpp, etc |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Study and analyse, collect, organize, annotate, cite, and share |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->PIM Personal Information Manager - Day Diary Planner Calendar App |<!--AROS-->[ ], [ ], [ ], |<!--Amiga OS-->Digita Organiser*, On The Ball, Everyday Organiser, [ Contact Manager], |<!--AmigaOS4-->AOrganiser, |<!--MorphOS-->[http://polymere.free.fr/orga_en.html PolyOrga], |- |<!--Sub Menu-->Accounting |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=office/misc ETB], LoanCalc, [ ], [ ], [ ], |[ Digita Home Accounts2], Accountant, Small Business Accounts, Account Master, [ Amigabok], |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Project Management Research |<!--AROS--> |<!--Amiga OS-->SuperGantt, SuperPlan, |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->System Wide Search |<!--AROS-->[https://archives.arosworld.org/index.php?function=browse&cat=utility/filetool Finder], [], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->System Wide Dictionary - multilingual [http://sourceforge.net/projects/babiloo/ Babiloo], [http://code.google.com/p/stardict-3/ StarDict], |<!--AROS-->[ ], |<!--AmigaOS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->System wide Thesaurus - multi lingual |<!--AROS-->[ ], |Kuma K-Roget*, |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Sticky Desktop Notes (post it type) |<!--AROS-->[http://aminet.net/package/util/wb/amimemos.i386-aros AmiMemos], [https://aminet.net/package/util/wb/amimemos.src-aros AmiMemos Src], [], |<!--Amiga OS-->[http://aminet.net/package/util/wb/StickIt-2.00 StickIt v2], |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->DTP Desktop Publishing |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=graphics/edit RNOPublisher], |<!--Amiga OS-->[http://pagestream.org/ Pagestream]*, Professional Pro Page*, Saxon Publisher, Pagesetter, PenPal, |<!--AmigaOS4-->[http://pagestream.org/ Pagestream]* |<!--MorphOS-->[http://pagestream.org/ Pagestream]* |- |<!--Sub Menu-->Scanning |<!--AROS-->[ SCANdal], [], |<!--Amiga OS-->FxScan*, ScanQuix* |<!--AmigaOS4-->SCANdal (Sane) |<!--MorphOS-->SCANdal |- |<!--Sub Menu-->OCR |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=graphics/convert gOCR] |<!--AmigaOS--> |<!--AmigaOS4--> |<!--MorphOS-->[http://morphos-files.net/categories/office/text Tesseract] |- |<!--Sub Menu-->Text Editing |<!--AROS-->Jano Editor (already installed as Editor), [http://archives.arosworld.org/index.php?function=browse&cat=development/edit EdiSyn], [http://archives.arosworld.org/index.php?function=browse&cat=utility/text/edit Annotate], [https://archives.arosworld.org/index.php?function=browse&cat=development/edit Vim], [http://archives.arosworld.org/index.php?function=browse&cat=utility/text/edit FrexxEd] [https://github.com/vidarh/FrexxEd src], [ NoWinEd], |<!--Amiga OS-->[https://aminet.net/package/text/edit/TurboText20 TurboText20 ttx], Annotate, MicroGoldED/CubicIDE*, CygnusED*, Protext*, NoWinED, |<!--AmigaOS4-->Notepad, Annotate, CygnusED*, NoWinED, |<!--MorphOS-->MorphOS ED, NoWinED, GoldED/CubicIDE*, CygnusED*, Annotate, |- |<!--Sub Menu-->Office Fonts [http://sourceforge.net/projects/fontforge/files/fontforge-source/ Font Designer] |<!--AROS-->[ ], [ ], |<!--Amiga OS-->TypeSmith*, SaxonScript (GetFont Adobe Type 1), |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Drawing Vector |<!--AROS-->[http://sourceforge.net/projects/amifig/ ZuneFIG previously AmiFIG], [https://github.com/serk118/designworks-aros designworks aros 64bit] |<!--Amiga OS-->Drawstudio*, ProVector*, ArtExpression*, Professional Draw*, AmiFIG, MetaView, [https://gitlab.com/amigasourcecodepreservation/designworks Design Works Src], [], |<!--AmigaOS4-->MindSpace, [http://www.os4depot.net/index.php?function=browse&cat=graphics/edit amifig], |<!--MorphOS-->SteamDraw, [http://aminet.net/package/gfx/edit/amifig amiFIG], |- |<!--Sub Menu-->video conferencing (jitsi) |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->source code hosting |<!--AROS-->Gitlab, |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Remote Desktop (server) |<!--AROS-->[http://sourceforge.net/projects/zunetools/files/VNC_Server ArosVNCServer], |<!--Amiga OS-->[http://s.guillard.free.fr/AmiVNC/AmiVNC.htm AmiVNC], [http://dspach.free.fr/amiga/avnc/index.html AVNC] |<!--AmigaOS4-->[http://s.guillard.free.fr/AmiVNC/AmiVNC.htm AmiVNC] |MorphVNC, vncserver |- |<!--Sub Menu-->Remote Desktop (client) login and connect to another machine |<!--AROS-->[https://sourceforge.net/projects/zunetools/files/VNC_Client/ ArosVNC], [http://archives.arosworld.org/index.php?function=browse&cat=network/misc rdesktop], |<!--Amiga OS-->[http://twinvnc.free.fr/index.php?menu=01&lang=eng TwinVNC], [http://dspach.free.fr/amiga/vva/index.html VVA], [http://www.hd-zone.com/ RDesktop] |<!--AmigaOS4-->[http://twinvnc.free.fr/index.php?menu=01&lang=eng TwinVNC], [http://www.hd-zone.com/ RDesktop] |[http://twinvnc.free.fr/index.php?menu=01&lang=eng TwinVNC], [http://www.hd-zone.com/ RDesktop] |- |<!--Sub Menu-->notifications |<!--AROS--> |<!--Amiga OS-->Ranchero |<!--AmigaOS4-->Ringhio |<!--MorphOS-->MagicBeacon |- |<!--Sub Menu-->Biometric facial logins and fingerprint security features |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu--> |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu--> |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |} <nowiki>*</nowiki> Commercial product. [[#top|...to the top]] ==Audio== {| class="wikitable sortable" |- !width:30%;|Audio !width:10%;|AROS(x86) !width:10%;|Commodore-Amiga OS 3.1(68k) !width:10%;|Hyperion OS4(PPC) !width:10%;|MorphOS(PPC) |- |<!--Sub Menu-->Playing playback Audio like MP3, [https://github.com/chrg127/gmplayer NSF], [https://github.com/kode54/lazyusf miniusf .usflib] [https://gitlab.com/kode54/psflib with pfslib], [], [], etc |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=video/play Mplayer], [ HarmonyPlayer hp], [http://www.a500.org/downloads/audio/index.xhtml playcdda] CDs, [ WildMidi Player], [https://bszili.morphos.me/ UADE mod player], [], [ RNOTunes], [ mp3Player], [], |<!--Amiga OS-->AmiNetRadio, AmigaAmp, playOGG, |<!--AmigaOS4-->TuneNet, SimplePlay, AmigaAmp, TKPlayer |AmiNetRadio, Mplayer, Kaya, AmigaAmp |- |<!--Sub Menu-->Editing Audio |<!--AROS-->[ Audio Evolution 4] |<!--Amiga OS-->[ Samplitude Opus Key], [https://sourceforge.net/projects/hd-rec/ HD-Rec Src], [http://www.sonicpulse.de/eng/news.html SoundFX], |<!--AmigaOS4-->[https://sourceforge.net/projects/hd-rec/ HD-Rec], AmiSoundED, [http://os4depot.net/?function=showfile&file=audio/record/audioevolution4.lha Audio Evolution 4] |[http://www.hd-rec.de/HD-Rec/index.php?site=home HD-Rec], |- |<!--Sub Menu-->Editing Tracker Music |<!--AROS-->[https://github.com/hitchhikr/protrekkr Protrekkr], [ Schism Tracker], [http://archives.arosworld.org/index.php?function=browse&cat=audio/tracker MilkyTracker], [http://www.hivelytracker.com/ HivelyTracker], [ Radium in AROS already], [http://www.a500.org/downloads/development/index.xhtml libMikMod], |<!--Amiga OS-->MilkyTracker, HivelyTracker, DigiBooster, Octamed SoundStudio, |<!--AmigaOS4-->MilkyTracker, HivelyTracker, GoatTracker |MilkyTracker, GoatTracker, DigiBooster, |- |<!--Sub Menu-->Editing Music [], [https://github.com/kmatheussen/camd CAMD] and/or staves and notes manuscript |<!--AROS-->[http://bnp.hansfaust.de/ Bars and Pipes for AROS], [ Audio Evolution], [], |<!--Amiga OS-->[http://bnp.hansfaust.de/ Bars'n'Pipes], MusicX* David "Talin" Joiner & Craig Weeks (for Notator-X), Deluxe Music Construction 2*, [https://github.com/timoinutilis/midi-sequencer-amigaos Horny c Src], HD-Rec, [https://aminet.net/package/mus/midi/dominatorV1_51 Dominator], |<!--AmigaOS4-->[https://sourceforge.net/p/hd-rec/code/HEAD/tree/ HD-Rec Src], Rockbeat, [http://bnp.hansfaust.de/download.html Bars'n'Pipes], [http://os4depot.net/index.php?function=browse&cat=audio/edit Horny], Audio Evolution 4, |<!--MorphOS-->Bars'n'Pipes, |- |<!--Sub Menu-->Sound Sampling |<!--AROS-->[https://archives.arosworld.org/index.php?function=browse&cat=audio/record Audio Evolution 4], [http://www.imica.net/SitePortalPage.aspx?siteid=1&did=162 Quick Record], [https://archives.arosworld.org/index.php?function=browse&cat=audio/misc SOX to get AIFF 16bit files], [https://github.com/aros-development-team/AROS/tree/master/workbench/tools/AHIRecord AHIRecord], |<!--Amiga OS-->[https://aminet.net/package/mus/edit/AudioEvolution3_src Audio Evolution 3 c src], [ Samplitude-MS Opus Key], Audiomaster IV*, |<!--AmigaOS4-->[https://github.com/timoinutilis/phonolith-amigaos phonolith c src], HD-Rec, Audio Evolution 4, |<!--MorphOS-->[https://sourceforge.net/p/hd-rec/code/HEAD/tree/ HD-Rec Src], Audio Evolution 4, |- |<!--Sub Menu-->Live Looping or Audio Misc - Groovebox like |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->CD/DVD burn |[https://code.google.com/p/amiga-fryingpan/ FryingPan], |<!--Amiga OS-->FryingPan, [http://www.estamos.de/makecd/#CurrentVersion MakeCD], |<!--AmigaOS4-->FryingPan, AmiDVD, |[http://www.amiga.org/forums/printthread.php?t=58736 FryingPan], Jalopeano, |- |<!--Sub Menu-->CD/DVD audio rip |Lame, [http://www.imica.net/SitePortalPage.aspx?siteid=1&cfid=0&did=167 Quick CDrip], |<!--Amiga OS-->Lame, |<!--AmigaOS4-->Lame, |Lame, |- |<!--Sub Menu-->MP3 v1 and v2 Tagger |<!--AROS-->id3ren (v1), [http://archives.arosworld.org/index.php?function=browse&cat=audio/edit mp3info], |<!--Amiga OS--> |<!--AmigaOS4--> | |- |<!--Sub Menu-->Audio Convert |<!--AROS-->[https://archives.arosworld.org/index.php?function=browse&cat=audio/misc Sox], [], |<!--Amiga OS-->[http://aminet.net/package/mus/misc/SoundBox SoundBox], [http://aminet.net/package/mus/misc/SoundBoxKey SoundBox Key], [http://aminet.net/package/mus/edit/SampleE SampleE], sox |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->DJ mixing jamming |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Radio Automation Software [http://www.rivendellaudio.org/ Rivendell], [http://code.campware.org/projects/livesupport/report/3 Campware LiveSupport], [http://www.sourcefabric.org/en/airtime/ SourceFabric AirTime], [http://www.ohloh.net/p/mediabox404 MediaBox404], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Speakers Audio Sonos Mains AC networked wired controlled *2005 ZP100 with ZP80 *2008 Zoneplayer ZP120 (multi-room wireless amp) ZP90 receiver only with CR100 controller, *2009 ZonePlayer S5, *2010 BR100 wireless Bridge (no support), *2011 Play:3 *2013 Bridge (no support), Play:1, *2016 Arc, Play:1, *Beam (Gen 2), Playbar, Ray, Era 100, Era 300, Roam, Move 2, *Sub (Gen 3), Sub Mini, Five, Amp S2 |<!--AROS-->SonosController |<!--Amiga OS-->SonosController |<!--AmigaOS4-->SonosController |<!--MorphOS-->SonosController |- |<!--Sub Menu-->Smart Speakers |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu--> |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu--> |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |} <nowiki>*</nowiki> Commercial product. [[#top|...to the top]] ==Video Creativity and Production== {| class="wikitable sortable" |- !width:30%;|Video !width:10%;|AROS(x86) !width:10%;|Commodore-Amiga OS 3.1(68k) !width:10%;|Hyperion OS4(PPC) !width:10%;|MorphOS(PPC) |- |<!--Sub Menu-->Playing Video |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=video/play Mplayer VAMP], [http://www.a500.org/downloads/video/index.xhtml CDXL player], [http://www.a500.org/downloads/video/index.xhtml IffAnimPlay], [], |<!--Amiga OS-->Frogger*, AMP2, MPlayer, RiVA*, MooViD*, |<!--AmigaOS4-->DvPlayer, MPlayer |<!--MorphOS-->MPlayer, Frogger, AMP2, VLC |- |<!--Sub Menu-->Streaming Video and game streaming like OBS studio, Parsec, [https://github.com/lizardbyte/sunshine sunshine], [https://github.com/moonlight-stream/moonlight-qt moonlight], etc |<!--AROS-->Mplayer, |<!--Amiga OS--> |<!--AmigaOS4-->Mplayer, Gnash, Tubexx |<!--MorphOS-->Mplayer, OWB, Tubexx |- |<!--Sub Menu-->Playing DVD |<!--AROS-->[http://a-mc.biz/ AMC]*, Mplayer |<!--Amiga OS-->AMP2, Frogger |<!--AmigaOS4-->[http://a-mc.biz/ AMC]*, DvPlayer*, AMP2, |<!--MorphOS-->Mplayer |- |<!--Sub Menu-->Screen Recording |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=video/record Screenrecorder], [ ], [ ], [ ], [ ], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS-->Screenrecorder, |- |<!--Sub Menu-->Create and Edit Individual Video NLE |<!--AROS-->[ Mencoder], [ Quick Videos], [http://archives.arosworld.org/index.php?function=browse&cat=graphics/edit AVIbuild], [http://archives.arosworld.org/index.php?function=browse&cat=graphics/misc FrameBuild], FFMPEG, |<!--Amiga OS-->[ MainConcept Mainactor Broadcast*], [http://en.wikipedia.org/wiki/Video_Toaster Video Toaster*], MacroSystem MovieShop 4.3*, proDAD Adorage*, [ IOSpirit VHI studio]*, [Gold Disk ShowMaker], [], |<!--AmigaOS4-->FFMpeg/GUI |<!--MorphOS-->Blender, Mencoder, FFmpeg |- |<!--Sub Menu-->Subtitle editor |<!--AROS-->[https://aminet.net/package/text/edit/Slarti_Arosx86ABIv0 Slarti_Arosx86ABIv0], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu--> |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->IP-based video production workflows with High Dynamic Range (HDR), 10-bit color collaborative NDI, |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Blogging like Lemmy or kbin |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->VR face recognition for Vtubers |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->VR chatting Live2D models with Cubism type editor <pre> Model data (cmo3) Basic motions (can3) Background image (png) Set of files for embedding (runtime folder) • Model data (moc3) • Motion data (motion3.json) • Model settings file (model3.json) • Physics settings file (physics3.json) • Display auxiliary file (cdi3.json) </pre> |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->VR chatting chatters .VRML models - standardized 3D file format for VR avatars |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->V-tubers V-tubing like Vseeface with Openseeface tracker or Vpuppr (virtual puppet project) for online live 2d / 3d art models rigging rigged LIV |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu--> |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |} <nowiki>*</nowiki> Commercial product. [[#top|...to the top]] ==Misc Application== {| class="wikitable sortable" |- !width:30%;|Misc Application !width:10%;|AROS(x86) !width:10%;|Commodore-Amiga OS 3.1 (68k) !width:10%;|Hyperion OS4(PPC) !width:10%;|MorphOS(PPC) |- |<!--Sub Menu-->File Management |<!--AROS-->DOpus4, [https://github.com/BlitterStudio/dopus5 DOpus Magellan aka DOpus 5], [ Scalos], [ ], |<!--Amiga OS-->DOpus2, DOpus 4, [http://sourceforge.net/projects/dopus5allamigas/files/?source=navbar DOpus Magellan DOpus5], ClassAction, FileMaster, [http://www.amiga.org/forums/showthread.php?t=4897 DirWork 2]*, [https://github.com/RudolphRiedel/DiskMaster2 DiskMaster2 src], |<!--AmigaOS4-->DOpus4, DOpus5, Filer, AmiDisk |<!--MorphOS-->DOpus4, DOpus5 |- |<!--Sub Menu-->File Verification / Repair |<!--AROS-->md5 (works in linux compiling shell), [http://archives.arosworld.org/index.php?function=browse&cat=utility/filetool workpar2] (PAR2), [http://zakalwe.fi/~shd/foss/cksfv/files/ compile cksfv from website], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS-->Par2, |- |Application Installer |<!--AROS-->[], [ InstallerNG], |<!--Amiga OS-->InstallerNG, Grunch, |<!--AmigaOS4-->Jack |<!--MorphOS-->Jack |- |<!--Sub Menu-->Compression archiver [https://github.com/FS-make-simple/paq9a paq9a], [], |<!--AROS-->XAD system is a toolkit designed for handling various file and disk archiver |<!--Amiga OS--> |<!--AmigaOS4-->[https://aminet.net/package/util/pack/decrunchmania_os4 Crunchmania CrM2 depacker], |<!--MorphOS--> |- |<!--Sub Menu-->Binary Hexadecimal Editor |<!--AROS-->[https://archives.arosworld.org/index.php?function=browse&cat=development/edit Zaphod], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Repository |<!--AROS-->[ Git] |<!--Amiga OS--> |<!--AmigaOS4-->Git |<!--MorphOS--> |- |<!--Sub Menu-->Filesystem Partition Editor formatter Disk Management |<!--AROS-->[https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1440&highlight=partition&pid=8821#post_8821 QuickPart], [ HDToolBox] |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Filesystem Repair and backups |<!--AROS-->ArSFSDoctor, |<!--Amiga OS-->[https://aminet.net/package/disk/bakup/quarterback_src Quarterback Tools C and asm src], [ ], [ ], [ ], |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->System Disk check, integrity and history [https://github.com/smartmontools/smartmontools smart tools], [], |<!--AROS--> |<!--Amiga OS-->[], |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Multiple File renaming |<!--AROS-->DOpus 4 or 5, |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Anti Virus |<!--AROS--> |<!--Amiga OS-->VChecker, |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Random Wallpaper Desktop changer [ DOpus5], [ Scalos], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Alarm Clock, Timer, Stopwatch, Countdown |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=utility/workbench DClock], [http://aminet.net/util/time/AlarmClockAROS.lha AlarmClock], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Fortune Cookie Quotes Sayings |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=utility/misc AFortune], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->C/C++ IDE |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=utility/text/edit FrexxEd], [https://github.com/vidarh/FrexxEd FrexxEd src], Annotate, Murks, |<!--Amiga OS-->[http://devplex.awardspace.biz/cubic/index.html Cubic IDE]*, Annotate, |<!--AmigaOS4-->CodeBench , [https://gitlab.com/boemann/codecraft CodeCraft], |<!--MorphOS-->[http://devplex.awardspace.biz/cubic/index.html Cubic IDE]*, Anontate, |- |<!--Sub Menu-->Computer Languages Translation [https://tetracorp.github.io/guide/reverse-engineering-amiga.html ], [https://amigasourcecodepreservation.gitlab.io/amiga-assembler-insider-guide/ ], [https://github.com/kermitfrog/Amiga-Re-Engineering Rust, Ghidra and FS-UAE], |<!--AROS--> |<!--Amiga OS-->[https://bitbucket.org/rhinoid/convert68000toc/src/main/ convert m68k seka asm-one to c], |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Gui Creators |<!--AROS-->[https://archives.arosworld.org/index.php?function=browse&cat=development/guitool MuiBuilder], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS-->[ MuiBuilder], |- |<!--Sub Menu-->Catalog .cd .ct Editors |<!--AROS-->FlexCat |<!--Amiga OS-->[http://www.geit.de/deu_simplecat.html SimpleCat], FlexCat |<!--AmigaOS4-->[http://aminet.net/package/dev/misc/simplecat SimpleCat], FlexCat |[http://www.geit.de/deu_simplecat.html SimpleCat], FlexCat |- |<!--Sub Menu--> |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu--> |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu--> |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |} <nowiki>*</nowiki> Commercial product. ==Misc Application 2== {| class="wikitable sortable" |- !width:30%;|Misc Application !width:10%;|AROS(x86) !width:10%;|Commodore-Amiga OS 3.1(68k) !width:10%;|Hyperion OS4(PPC) !width:10%;|MorphOS(PPC) |- |<!--Sub Menu-->System |<!--AROS-->[ SysExplorer], [ SysMon], [ Scout], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->OSK On Screen Keyboard |<!--AROS-->[], |<!--Amiga OS-->[https://aminet.net/util/wb/OSK.lha OSK] |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Screen Magnifier Magnifying Glass Magnification |<!--AROS-->[http://www.onyxsoft.se/files/zoomit.lha ZoomIT], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Comic Book CBR CBZ format reader viewer |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=graphics/viewer comics], [http://archives.arosworld.org/index.php?function=browse&cat=graphics/viewer comicon], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Ebook Reader |<!--AROS-->[https://blog.alb42.de/programs/#legadon Legadon EPUB],[] |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Ebook Converter |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Text to Speech tts [https://github.com/JonathanFly/bark-installer Bark], [], |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=audio/misc flite], |<!--Amiga OS-->[http://www.text2speech.com translator], |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=search&tool=simple FLite] |<!--MorphOS-->[http://se.aminet.net/pub/aminet/mus/misc/ FLite] |- |<!--Sub Menu-->Speech Voice Recognition Dictation - [http://sourceforge.net/projects/cmusphinx/files/ CMU Sphinx], [http://julius.sourceforge.jp/en_index.php?q=en/index.html Julius], [http://www.isip.piconepress.com/projects/speech/index.html ISIP], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Speech Voice Changer [], [], [], [], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Screen Display Blanker screensaver |<!--AROS-->Blanker Commodity (built in), [https://archives.arosworld.org/index.php?function=browse&cat=graphics/screenblanker GarshneBlanker], [http://sourceforge.net/projects/gblanker/ GBlanker Src], [], |<!--Amiga OS-->MultiCX, |<!--AmigaOS4--> |<!--MorphOS-->ModernArt Blanker, |- |} ==Misc Application 3== {| class="wikitable sortable" |- !width:30%;|Misc Application !width:10%;|AROS(x86) !width:10%;|Commodore-Amiga OS 3.1(68k) !width:10%;|Hyperion OS4(PPC) !width:10%;|MorphOS(PPC) |- |<!--Sub Menu-->Fractals mandelbrot, etc |<!--AROS-->[https://archives.arosworld.org/index.php?function=browse&cat=graphics/misc ], |<!--Amiga OS-->ZoneXplorer, |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Landscape Rendering |<!--AROS-->[https://archives.arosworld.org/index.php?function=browse&cat=graphics/raytrace WCS World Construction Set], |<!--Amiga OS-->[ Vista Pro], [http://en.wikipedia.org/wiki/World_Construction_Set World Construction Set] |<!--AmigaOS4-->[ WCS World Construction Set], |<!--MorphOS-->[ WCS World Construction Set], |- |<!--Sub Menu-->Astronomy [https://sourceforge.net/projects/skychart/ skychart freepascal], [], [], |<!--AROS-->[ Digital Almanac (ABIv0 only)], |<!--Amiga OS-->[http://aminet.net/search?query=planetarium Aminet search], [http://aminet.net/misc/sci/DA3V56ISO.zip Digital Almanac], [https://aminet.net/package/misc/sci/da3sourceV58 Src c V58], [ Galileo renamed to Distant Suns]*, [], |<!--AmigaOS4-->[http://sourceforge.net/projects/digital-almanac/ Digital Almanac], Distant Suns*, [http://www.digitaluniverse.org.uk/ Digital Universe]*, |<!--MorphOS-->[http://www.aminet.net/misc/sci/da3.lha Digital Almanac], [http://www.aminet.net/package/misc/sci/da3-mos-src Src c V56], |- |<!--Sub Menu-->Astrology [https://sourceforge.net/projects/skylendar/ skylendar], [https://github.com/CruiserOne/Astrolog Astrolog], [https://www.astrolog.org/astrolog/astfile.htm Astrology alt site], [https://saravali.github.io/download.html Maitreya], [https://github.com/alamahant/Asteria Asteria], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->PCB design |<!--AROS--> |<!--Amiga OS-->[ ], [ ], [ ], |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Digital Signage |<!--AROS-->Hollywood, Hollywood Designer |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Genealogy History Family Tree Ancestry Records (FreeBMD, FreeREG, and FreeCEN file formats or GEDCOM GenTree) |<!--AROS--> |<!--Amiga OS--> [ Origins], [ Your Family Tree], [ ], [ ], [ ], |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Languages |<!--AROS--> |<!--Amiga OS-->Fun School, |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Mathematics ([http://www-fourier.ujf-grenoble.fr/~parisse/install_en.html Xcas], etc.), |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=utility/scientific mathX] |<!--Amiga OS-->Maple V, mathX, Fun School, GCSE Maths, [ ], [ ], [ ], |<!--AmigaOS4-->Yacas |<!--MorphOS-->Yacas |- |<!--Sub Menu-->Maths Graph Function Plotting |<!--AROS-->[https://blog.alb42.de/programs/#MUIPlot MUIPlot], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->App Utility Launcher Dock toolbar |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=utility/docky BoingBar], [], |<!--Amiga OS-->[https://github.com/adkennan/DockBot Dockbot], |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->3D Printer [https://github.com/OrcaSlicer/OrcaSlicer OrcaSlicer] |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->BASIC Computer Language |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=development/language Basic4SDL], [ Ace Basic], [ X-AMOS], [SDLBasic], [ Alvyn], |<!--Amiga OS-->[http://www.amiforce.de/main.php Amiblitz 3], [http://amos.condor.serverpro3.com/AmosProManual/contents/c1.html Amos Pro], [http://aminet.net/package/dev/basic/ace24dist ACE Basic], |<!--AmigaOS4--> |<!--MorphOS-->sdlBasic |- |<!--Sub Menu-->HAM radio, amateur radio, packet radio [], [], [], [https://cemaxecuter.com/ Dragon OS], [https://github.com/km4ack/73Linux with 73 link update], [https://www.youtube.com/watch?v=YAL5KNePRSg video for], |<!--AROS--> |<!--Amiga OS-->[https://www.amigarealm.com/amiga/amicomms/comm4.htm Comm4], [https://www.amigarealm.com/archives/comms/aarug/ TNC Terminal Node Controller with packets over serial connections on Yaesu or Woxum handheld], [https://aminet.net/comm/misc AmiCom], [ with 7Plus file encoder/decoder], [ mksstv], [ RTTYam], |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu--> |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |} <nowiki>*</nowiki> Commercial product. ==Games & Emulation== Some emulators/games require OpenGL to function and to adjust ahi prefs channels, frequency and unit0 and unit1 and [http://aros.sourceforge.net/documentation/users/shell/changetaskpri.php changetaskpri -1] Rom patching https://www.marcrobledo.com/RomPatcher.js/ https://www.romhacking.net/patch/ (ips, ups, bps, etc) and this other site supports the latter formats https://hack64.net/tools/patcher.php Free public domain roms for use with emulators can be found [http://www.pdroms.de/ here] as most of the rest are covered by copyright rules. If you like to read about old games see [http://retrogamingtimes.com/ here] and [http://www.armchairarcade.com/neo/ here] and a [http://www.vintagecomputing.com/ blog] about old computers. Possibly some of the [http://www.answers.com/topic/list-of-best-selling-computer-and-video-games best selling] of all time. [http://en.wikipedia.org/wiki/List_of_computer_system_emulators Wiki] with emulated systems list. [https://archive.gamehistory.org/ Archive of VGHF], [https://library.gamehistory.org/ Video Game History Foundation Library search] {| class="wikitable sortable" |- !width:10%;|Games [http://archives.arosworld.org/index.php?function=browse&cat=emulation/computer Emulation] !width:10%;|AROS(x86) !width:10%;|AmigaOS3(68k) !width:10%;|AmigaOS4(PPC) !width:10%;|MorphOS(PPC) |- |<!--Sub Menu-->Games Emulation Amstrad CPC |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/computer], [ Caprice32 (OpenGL & pure SDL)], [ Arnold], [https://retroshowcase.gr/cpcbox-master/], |<!--Amiga OS--> |<!--AmigaOS4-->[http://os4depot.net/index.php?function=browse&cat=emulation/computer] |<!--MorphOS-->[http://morphos.lukysoft.cz/en/vypis.php?kat=2], |- |<!--Sub Menu-->Games Emulation Apple2 and 2GS |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/computer], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Arcade |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/gamesystem Mame], [ SI Emu (ABIv0 only)], |<!--Amiga OS-->Mame, |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=browse&cat=emulation/gamesystem xmame], amiarcadia, |<!--MorphOS-->[http://morphos.lukysoft.cz/en/vypis.php?kat=2 Mame], |- |<!--Sub Menu-->Games Emulation Atari 2600 [], [], |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/gamesystem Stella], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Atari 5200 [https://github.com/wavemotion-dave/A5200DS A5200DS], [], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Atari 7800 |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Atari 400 800 130XL [https://github.com/wavemotion-dave/A8DS A8DS], [], |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/computer Atari800], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Atari Lynx |<!--AROS-->[http://myfreefilehosting.com/f/6366e11bdf_1.93MB Handy (ABIv0 only)], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Atari Jaguar |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Bandai Wonderswan |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation BBC Micro and Acorn Electron [http://beehttps://bem-unix.bbcmicro.com/download.html BeebEm], [http://b-em.bbcmicro.com/ B-Em], [http://elkulator.acornelectron.co.uk/ Elkulator], [http://electrem.emuunlim.com/ ElectrEm], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Dragon 32 and Tandy CoCo [http://www.6809.org.uk/xroar/ xroar], [], |<!--AROS-->[], [], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Commodore C16 Plus4 |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Commodore C64 |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/computer Vice (ABIv0 only)], [], |<!--Amiga OS-->Frodo, |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=browse&cat=emulation/gamesystem viceplus], |<!--MorphOS-->Vice, |- |<!--Sub Menu-->Games Emulation Commodore Amiga |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/computer Janus UAE], Emumiga, |<!--Amiga OS--> |<!--AmigaOS4-->[http://os4depot.net/index.php?function=browse&cat=emulation/computer UAE], |<!--MorphOS-->[http://morphos.lukysoft.cz/en/vypis.php?kat=2 UAE], |- |<!--Sub Menu-->Games Emulation Japanese MSX MSX2 |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Mattel Intelivision |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Mattel Colecovision and Adam |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Milton Bradley (MB) Vectrex [ Vectrex OpenGL], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation PICO8 Pico-8 fantasy video game console [https://github.com/egordorichev/pemsa-sdl/ pemsa-sdl], [https://github.com/jtothebell/fake-08 fake-08], [https://github.com/Epicpkmn11/fake-08/tree/wip fake-08 fork], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Nintendo Gameboy |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/gamesystem vba no sound], [], |<!--Amiga OS--> |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=browse&cat=emulation/gamesystem vba] |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Nintendo NES |<!--AROS-->[ EmiNES], [http://archives.arosworld.org/index.php?function=browse&cat=emulation/gamesystem Fceu], [https://github.com/takahirox/nes-js?tab=readme-ov-file nes-js], [https://github.com/bfirsh/jsnes jsnes], [https://github.com/angelo-wf/NesJs NesJs], |<!--Amiga OS-->AmiNES, [http://www.dridus.com/~nyef/darcnes/ darcNES], |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=browse&cat=emulation/gamesystem amines] |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Nintendo SNES |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/gamesystem Zsnes], |<!--Amiga OS--> |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=browse&cat=emulation/gamesystem warpsnes] |<!--MorphOS-->[http://fabportnawak.free.fr/snes/ Snes9x], |- |<!--Sub Menu-->Games Emulation Nintendo N64 *HLE and plugins [ mupen64], [https://github.com/ares-emulator/ares ares], [https://github.com/N64Recomp/N64Recomp N64Recomp], [https://github.com/rt64/rt64 rt64], [https://github.com/simple64/simple64 Simple64], *LLE [], |<!--AROS-->[http://code.google.com/p/mupen64plus/ Mupen64+], |<!--Amiga OS-->[http://code.google.com/p/mupen64plus/ Mupen64+], [http://aminet.net/package/misc/emu/tr-981125_src TR64], |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->[ Nintendo Gamecube Wii] |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->[ Nintendo Wii U] |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->[https://github.com/yuzu-emu Nintendo Switch] |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation NEC PC Engine |<!--AROS-->[], [], [https://github.com/yhzmr442/jspce js-pce], |[http://www.hugo.fr.fm/ Hugo], [http://mednafen.sourceforge.net/ Mednafen], |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=browse&cat=emulation/gamesystem tgemu] |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Sega Master System (SMS) |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/gamesystem Dega], [http://archives.arosworld.org/index.php?function=browse&cat=emulation/gamesystem sms], |<!--Amiga OS--> |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=browse&cat=emulation/gamesystem osmose] |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Sega Genesis/Megadrive |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/gamesystem gp no sound], [http://archives.arosworld.org/index.php?function=browse&cat=emulation/gamesystem DGen], |<!--Amiga OS-->[http://code.google.com/p/genplus-gx/ Genplus], |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=browse&cat=emulation/gamesystem genesisplus] |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Sega Saturn *HLE [https://mednafen.github.io/ mednafen], [http://yabause.org/ yabause], [], *LLE [], [], |<!--AROS-->? |<!--Amiga OS-->[http://yabause.org/ Yabause], |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Sega Dreamcast *HLE [https://github.com/flyinghead/flycast flycast], [https://code.google.com/archive/p/nulldc/downloads NullDC], *LLE [], [], |<!--AROS-->? |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Sinclair ZX80 and ZX81 |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/computer], [], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Sinclair Spectrum |[http://archives.arosworld.org/index.php?function=browse&cat=emulation/computer Fuse (crackly sound)], [http://archives.arosworld.org/index.php?function=browse&cat=emulation/computer SimCoupe], [ FBZX slow], [https://jsspeccy.zxdemo.org/ jsspeccy], [http://torinak.com/qaop/games qaop], |<!--Amiga OS-->[http://www.lasernet.plus.com/ Asp], [http://www.zophar.net/sinclair.html Speculator], [http://www.worldofspectrum.org/x128/index.html X128], |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=browse&cat=emulation/computer] |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Sinclair QL |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/computer], [], |<!--Amiga OS-->[http://aminet.net/package/misc/emu/QDOS4amiga1 QDOS4amiga] |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation SNK NeoGeo Pocket |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/gamesystem], |<!--Amiga OS--> |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=browse&cat=emulation/gamesystem gngeo], NeoPop, |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation Sony PlayStation |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/gamesystem FPSE], |<!--Amiga OS--> |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=browse&cat=emulation/gamesystem FPSE] |<!--MorphOS--> |- |<!--Sub Menu-->[ Sony PS2] |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->[ Sony PS3] |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->[https://vita3k.org/ Sony Vita] |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->[https://github.com/shadps4-emu/shadPS4 PS4] |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation [http://en.wikipedia.org/wiki/Tangerine_Computer_Systems Tangerine] Oric and Atmos |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/computer Oricutron] |<!--Amiga OS--> |<!--AmigaOS4-->[http://www.os4depot.net/index.php?function=browse&cat=emulation/gamesystem Oricutron] |<!--MorphOS-->[http://aminet.net/package/misc/emu/oricutron Oricutron] |- |<!--Sub Menu-->Games Emulation TI 99/4 99/4A [https://github.com/wavemotion-dave/DS994a DS994a], [], [https://js99er.net/#/ js99er], [], [http://aminet.net/package/misc/emu/TI4Amiga TI4Amiga], [http://aminet.net/package/misc/emu/TI4Amiga_src TI4Amiga src in c], |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=emulation/computer], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation HP 38G 40GS 48 49G/50G Graphing Calculators |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Emulation TI 58 83 84 85 86 - 89 92 Graphing Calculators |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu--> |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |} {| class="wikitable sortable" |- !width:10%;|Games [https://www.rockpapershotgun.com/ General] !width:10%;|AROS(x86) !width:10%;|AmigaOS3(68k) !width:10%;|AmigaOS4(PPC) !width:10%;|MorphOS(PPC) |- style="background:lightgrey; text-align:center; font-weight:bold;" | Games [https://www.trackawesomelist.com/michelpereira/awesome-open-source-games/ Open Source and others] || AROS || Amiga OS || Amiga OS4 || Morphos |- |<!--Sub Menu-->Games Action like [https://github.com/opentomb/OpenTomb opentomb], [https://github.com/LostArtefacts/TRX TRX formerly Tomb1Main], [https://github.com/TombEngine TombEngine], [http://archives.arosworld.org/index.php?function=browse&cat=game/action Thrust], [https://github.com/fragglet/sdl-sopwith sdl sopwith], |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=game/action], [https://archives.arosworld.org/index.php?function=browse&cat=game/action BOH], [], |<!--Amiga OS-->[https://github.com/BSzili/OpenLara/tree/amiga/src source of openlara SDL2], |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Adventure like [http://dotg.sourceforge.net/ DMJ], [https://github.com/kromenak/gengine Gabriel Knight 3], [http://www.sarien.net/ Sierra Sarien], [https://github.com/klembot/twinejs twine js], [https://github.com/QSPFoundation/qspgui Quest Soft Player QSP], [], |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=game/adventure dmagnetic], [https://archives.arosworld.org/?function=browse&cat=emulation/misc ScummVM], [https://archives.arosworld.org/index.php?function=browse&cat=game/roleplaying frotz infocom], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Board like [https://github.com/aperture-software/colditz-escape escape from colditz], [], |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=game/board], [http://amigan.1emu.net/releases Africa] |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Cards |<!--AROS-->[https://archives.arosworld.org/index.php?function=browse&cat=game/card ], [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1443&rowstart=180&pid=12934#post_12934 Balatro], |<!--AmigaOS-->[http://home.arcor.de/amigasolitaire/e/welcome.html Reko], [https://github.com/samskivert/beschei-en beschei Src], |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Misc [https://github.com/michelpereira/awesome-open-source-games Awesome open], [https://github.com/bobeff/open-source-games General Open Source], [https://github.com/SAT-R/sa2 Sonic Advance 2], [https://github.com/velorek1/cwordle Wordle type], |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=game/misc], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games FPS like [https://aminet.net/package/game/shoot/D1X_Rebirth_AGA Descent D1X src], [https://github.com/DescentDevelopers/Descent3 Descent 3], [https://github.com/Fewnity/Counter-Strike-Nintendo-DS Counter-Strike-Nintendo-DS], [https://github.com/Aleph-One-Marathon/alephone Bungie Marathon 1994], [https://zdoom.org/downloads UzDoom opengl 3.3], [https://github.com/ZDoom/gzdoom gzdoom opengl 3+], [https://zdoom.org/downloads LZDoom opengl 2.1], |<!--AROS-->Doom, Quake, [http://archives.arosworld.org/index.php?function=browse&cat=game/fps Quake 3 Arena (OpenGL)], [http://archives.arosworld.org/index.php?function=browse&cat=game/fps Cube (OpenGL)], [http://archives.arosworld.org/index.php?function=browse&cat=game/fps Assault Cube (OpenGL)], [http://archives.arosworld.org/index.php?function=browse&cat=game/fps Cube 2 Sauerbraten (OpenGL)], [http://fodquake.net/test/ FodQuake QuakeWorld], [https://archives.arosworld.org/index.php?function=browse&cat=game/fps Duke Nukem 3D], [https://archives.arosworld.org/index.php?function=browse&cat=game/fps Darkplaces Nexuiz Xonotic], [http://archives.arosworld.org/index.php?function=browse&cat=game/fps Doom 3 SDL (OpenGL)], [http://archives.arosworld.org/index.php?function=browse&cat=game/fps Hexenworld and Hexen 2], [https://archives.arosworld.org/index.php?function=browse&cat=game/fps Aliens vs Predator Gold 2000 avp (openGL)], [https://archives.arosworld.org/index.php?function=browse&cat=game/fps Odamex (openGL doom)], [https://archives.arosworld.org/?function=showfile&file=game/fps/ zgloom], [], [https://archives.arosworld.org/?function=showfile&file=game/fps/ ab3dhd], [], |<!--Amiga OS-->Doom, Quake, AB3D, Fears, Breathless, Gloom, |<!--AmigaOS4-->Doom, Quake, |<!--MorphOS-->[http://morphos.lukysoft.cz/en/vypis.php?kat=12 Doom], Quake, Quake 3 Arena, [https://github.com/OpenXRay/xray-16 S.T.A.L.K.E.R Xray] |- |<!--Sub Menu-->Games MMORG like |<!--AROS-->[ Eternal Lands (OpenGL)], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Platform like |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=game/platform], [ Maze of Galious], [ Gish]*(openGL), [ Mega Mario], [https://archives.arosworld.org/?function=showfile&file=game/platform/ thextech SMBX], [http://www.gianas-return.de/ Giana's Return], [http://www.sqrxz.de/ Sqrxz], [www.sqrxz2.de/ Sqrxz 2], [http://www.sqrxz.de/sqrxz-3/ Sqrxz 3], [http://www.sqrxz.de/sqrxz-4/ Sqrxz 4], [http://archives.arosworld.org/index.php?function=browse&cat=game/platform Cave Story], [https://bszili.morphos.me/ Frogatto], [https://bszili.morphos.me/ OpenJazz], [https://archives.arosworld.org/?function=showfile&file=game/platform/ pekkakana2], [ Aquaria], [https://archives.arosworld.org/?function=showfile&file=game/platform/ sonic CD], [], |<!--Amiga OS-->[ Giana Sisters], [], |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Puzzle [https://github.com/mariopartyrd/marioparty4/tree/port Party], [https://github.com/mdodis/OpenSolomonsKey OpenSolomonsKey], [], |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=game/puzzle], [ Cubosphere (OpenGL)], [http://archives.arosworld.org/index.php?function=browse&cat=game/puzzle Candy Crisis], [http://bszili.morphos.me/ TailTale], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Racing [ Trigger Rally], [ VDrift], [http://www.ultimatestunts.nl/index.php?page=2&lang=en Ultimate Stunts], [http://maniadrive.raydium.org/ Mania Drive], [https://github.com/plowteam/donut Simpsons Hit and Run], [], |<!--AROS-->[ Super Tux Kart (OpenGL)], [http://www.dusabledanslherbe.eu/AROSPage/F1Spirit.30.html F1 Spirit (OpenGL)], [http://bszili.morphos.me/index.html MultiRacer], [https://bszili.morphos.me/ Speed Dreams], [], |<!--AmigaOS--> |<!--AmigaOS4-->[http://bszili.morphos.me/index.html Speed Dreams], |<!--MorphOS-->[http://morphos.lukysoft.cz/en/vypis.php?kat=12], [http://bszili.morphos.me/index.html TORCS], |- |<!--Sub Menu-->Games 1st first person DRPG [https://wiki.rpg.net/index.php/Open_Game_Systems Misc], [https://github.com/OpenEnroth/OpenEnroth OpenEnroth MM], [] |<!--AROS-->[https://github.com/BSzili/aros-stuff Arx Libertatis], [http://www.playfuljs.com/a-first-person-engine-in-265-lines/ js raycaster], [https://github.com/Dorthu/es6-crpg webgl], [https://github.com/sonountaleban/AmiShockolate System Shock], [], [], |<!--AmigaOS-->Phantasie, Faery Tale, Dungeon Master, |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games 3rd third person action CRPG [https://sourceforge.net/projects/sumwars/ Summoning Wars], [https://www.solarus-games.org/ Solarus], [https://wiki.rpg.net/index.php/Open_Game_Systems Misc], [https://github.com/alexbatalov/fallout1-ce fallout ce], [https://github.com/rwengine/openrw gta3], [https://github.com/gta-reversed/gta-reversed gta3 sa], [https://github.com/mrxenginner/reVC gta3 vc revc], |<!--AROS-->[https://archives.arosworld.org/?function=showfile&file=game/strategy/ fheroes2 homm2], [https://archives.arosworld.org/?function=showfile&file=game/roleplaying/ breakhack], [https://archives.arosworld.org/?function=showfile&file=game/roleplaying/ devilutionx diablo 1 hellfire], [https://archives.arosworld.org/?function=showfile&file=game/roleplaying/ fallout 1], [https://archives.arosworld.org/?function=showfile&file=game/strategy/ stratagus], [https://archives.arosworld.org/?function=showfile&file=game/strategy/ hostile-takeover], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games isometric RPG [https://sourceforge.net/projects/sumwars/ Summoning Wars], [https://www.solarus-games.org/ Solarus], [https://wiki.rpg.net/index.php/Open_Game_Systems Misc], [https://github.com/topics/dungeon?l=javascript Dungeon], [], [https://github.com/clintbellanger/heroine-dusk JS Dusk], |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=game/roleplaying nethack], [https://archives.arosworld.org/index.php?function=browse&cat=game/roleplaying GemRB], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games card based RPG [https://github.com/open-duelyst/duelyst Duelyst], [], [], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games turn based tactics RPG [], [], [], [], [], [], |<!--AROS-->[https://archives.arosworld.org/index.php?function=browse&cat=game/strategy UFO AI], [http://play.freeciv.org/ FreeCiv], [], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Strategy [http://rtsgus.org/ RTSgus], [http://stargus.sourceforge.net/ Stargus], [https://github.com/KD-lab-Open-Source/Perimeter Perimeter], [https://matty77.itch.io/conflict-3049 conflict-3049], [], |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=game/strategy MegaGlest (OpenGL)], [https://archives.arosworld.org/?function=showfile&file=game/strategy/ signus], [https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1443&rowstart=140&pid=12446#post_12446 Wargus warcraft 2 setup], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS-->[http://morphos.lukysoft.cz/en/vypis.php?kat=12] |- |<!--Sub Menu-->Games Rhythm, Beat, Step [], [], [https://clonehero.net/ clonehero], [https://github.com/MatteoGodzilla/Dj-Engine Dj-Engine], |<!--AROS-->[https://archives.arosworld.org/index.php?function=browse&cat=game/misc Frets on Fire], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Shoot Em Ups [http://www.mhgames.org/oldies/formido/ Formido], [http://code.google.com/p/violetland/ Violetland], ||<!--AROS-->[https://archives.arosworld.org/index.php?function=browse&cat=game/action Open Tyrian], [http://www.parallelrealities.co.uk/projects/starfighter.php Starfighter], [ Alien Blaster], [https://github.com/OpenFodder/openfodder OpenFodder], [https://archives.arosworld.org/?function=showfile&file=game/action/ tbftss The Battle for the Solar System: the Pandora War] |<!--AmigaOS--> |<!--AmigaOS4-->[http://www.parallelrealities.co.uk/projects/starfighter.php Starfighter], [ The Battle for the Solar System: the Pandora War] |<!--MorphOS--> |- |<!--Sub Menu-->Games Simulations [http://scp.indiegames.us/ Freespace 2], [http://www.heptargon.de/gl-117/gl-117.html GL117], [http://code.google.com/p/corsix-th/ Theme Hospital], [http://code.google.com/p/freerct/ Rollercoaster Tycoon], [http://hedgewars.org/ Hedgewars], [https://github.com/raceintospace/raceintospace raceintospace], [https://github.com/Return-To-The-Roots RTTR Settlers 2], [https://github.com/OoliteProject/oolite oolite elite], [https://github.com/fesh0r/newkind newkind elite], [], |<!--AROS--> |<!--Amiga OS-->SimCity, SimAnt, Sim Hospital, Theme Park, |<!--AmigaOS4--> |<!--MorphOS-->[http://morphos.lukysoft.cz/en/vypis.php?kat=12] |- |<!--Sub Menu-->Games Life Sim [https://github.com/ACreTeam/forest Animal Crossing], [ ], [], [], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Horror [https://github.com/Mikompilation/MikuPan Fatal Frame], [ ], [], [], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Sandbox Voxel Open World Exploration [https://github.com/ClassiCube/ Classicube],[http://www.michaelfogleman.com/craft/ Craft], [https://github.com/tothpaul/DelphiCraft DelphiCraft],[https://www.minetest.net/ Luanti formerly Minetest], [ infiniminer], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Battle Royale [https://bruh.io/ Play.Bruh.io], [https://www.coolmathgames.com/0-copter Copter Royale], [https://surviv.io/ Surviv.io], [https://nuggetroyale.io/#Ketchup Nugget Royale], [https://miniroyale2.io/ Miniroyale2.io], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Tower Defense [https://chriscourses.github.io/tower-defense/ HTML5], [https://github.com/SBardak/Tower-Defense-Game TD C++], [https://github.com/bdoms/love_defense LUA and LOVE], [https://github.com/HyOsori/Osori-WebGame HTML5], [https://github.com/PascalCorpsman/ConfigTD ConfigTD Pascal], [https://github.com/GloriousEggroll/wine-ge-custom Wine], [] |<!--AROS-->[https://www.arosworld.org/infusions/forum/viewthread.php?thread_id=1443&rowstart=180&pid=12871#post_12871 Plants vs Zombies PvZ], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Visual Novel Engines [https://github.com/diane1f0cd/VisualNovelTemplate Visual Novel Template], [https://github.com/Kirilllive/tuesday-js Tuesday JS], [https://github.com/tejasnayak25/vnsutra vnsutra], [https://github.com/weetabix-su/renpsp-dev RenPSP], [https://github.com/Galladite27/ONScripter-EN ONScripter-EN], [https://github.com/NathanGuilhot/VNES-Raylib https://github.com/NathanGuilhot/VNES VNES in Raylib], [https://www.renpy.org/latest.html renpy ren'py python based], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Virtual Reality VR [https://gitlab.com/madsbuvi/openmw openmw vr], [https://github.com/Team-Beef-Studios/BeefRaiderXR BeefRaiderXR], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Virtual Table Top VTT [ Roll20], [https://www.owlbear.rodeo/ owlbear rodeo], [], [], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Computer assisted TableTop TTRPG OSR [https://www.rpgsolo.com/play.php RPGSolo], [https://github.com/fpsvogel/solo-ttrpgs Solo TTRPG], [], [], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games 2D 3D Engines [https://github.com/fegennari/3DWorld 3DWorld], [https://github.com/GarageGames/Torque3D Torque3D], [https://github.com/gameplay3d/GamePlay GamePlay 3D], [https://www.babylonjs.com/ BabylonJS ], [ Godot], [ Ogre], [ Crystal Space], [https://github.com/JacobHess03/ Dragon-Quest like], [https://github.com/bjornbytes/lovr Lua LOVE for 2D LOVR for 3D], [], |<!--AROS-->[https://www.arkhamdev.net/wiki.htm?id=agx Arkham Development antiryadgx 8.9 lts with register], [], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games C based game frameworks [https://github.com/orangeduck/Corange Corange], [https://github.com/scottcgi/Mojoc Mojoc], [https://orx-project.org/ Orx], [https://github.com/ioquake/ioq3 Quake 3], [https://www.mapeditor.org/ Tiled], [https://www.raylib.com/ 2d Raylib], [https://github.com/Rabios/awesome-raylib other raylib], [https://github.com/MrFrenik/gunslinger Gunslinger], [https://o3de.org/ o3d], [http://archives.aros-exec.org/index.php?function=browse&cat=development/library GLFW], [], |<!--AROS-->[http://archives.arosworld.org/index.php?function=browse&cat=development/library Raylib 5], |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games RPGMaker MV/MZ-compatible projects [https://github.com/Psychronic-Games/RPGReactor RPGReactor js], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games Virtual Pinball [https://github.com/vpinball/vpinball vpinball], [], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |- |<!--Sub Menu-->Games unpack unarc [], [], |<!--AROS--> |<!--Amiga OS--> |<!--AmigaOS4--> |<!--MorphOS--> |} ==Application Guides== [[#top|...to the top]] ===Web Browser=== OWB is now at version 2.0 (which got an engine refresh, from July 2015 to February 2019) and 3.0. This latest version has a good support for many/most web sites, even YouTube web page now works. This improved compatibility comes at the expense of higher RAM usage (now 1GB RAM is the absolute minimum). Also, keep in mind that the lack of a JIT (Just-In-Time) JS compiler on the 32 bit version, makes the web surfing a bit slow. Only the 64 bit version of OWB 2.0 will have JIT enabled, thus benefitting of more speed. There are tooltypes that can be added to the icon to provide further features JIT, MSE etc Certificates from [https://curl.se/docs/caextract.html ca certs], DNS tracking blocking with [https://easylist.to/easylist/easylist.txt easylist.txt] in PROGDIR:Conf before starting browser with enabled AdBlock [https://github.com/easylist/easylist/tree/master easylist], [https://gitlab.com/eyeo anti abp], [https://firebog.net/ big blocklist], [https://github.com/StevenBlack/hosts Steves], [], [], This can be enabled with OWB Odyssey with Windows -> Content Blocking and Windows -> Messages and enter https://www.youtube.com/api/stats/ads* https://www.youtube.com/pagead/adview* https://www.youtube.com#@##player-ads* into your custom filters Element blocker browser extension might be needed for [https://github.com/easylist/easylist/wiki/Youtube-Issues youtube], [ mid roll], [ pre roll], [ ], OWB speed is much better when running from RAM Disk, the best way is to add the below into your S:User-Startup which copies OWB drawer from Extras:Internet/OWB to RAM Disk: So add this : <pre> copy Extras:Internet/OWB Ram:OWB/ ALL CLONE >NIL: copy Extras:Internet/OWB.info Ram: >NIL: </pre> Open RAM Disk and open OWB drawer and double click on OWB icon so that the above icon tooltypes are activated Problems are that the copy time is long (around 20 seconds added in the background), but we can make it faster if we delete useless files from the OWB drawer (docs, …) If you don’t copy the drawer back onto the HD, you won’t save your cache, cookies, passwords… So you need a script for it. Error messages SSL error "cant verify with ca-certificates", check bios clock time date is correct Error 6, try checking networking prefs settings and Save / Use preferences again or a '''few times''' otherwise the network chipset may not be compatible with Aros [https://www.google.com/search?q=%s&udm=14 Google search without AI overview] ===E-mail=== YAM does not support SSL and most mail providers now switched to encrypted SMTP/POP3 connections ====SimpleMail==== SimpleMail supports IMAP and appears to work with GMail, but it's never been reliable enough, it can crash with large mailboxes. Please read more on this [http://www.freelists.org/list/simplemail-usr User list] GMail Be sure to activate the pop3 usage in your gmail account setup / configuration first. pop3: pop.gmail.com Use SSL: Yes Port: 995 smtp: smtp.gmail.com (with authentication) Use Authentication: Yes Use SSL: Yes Port: 465 or 587 Hotmail/MSN/outlook/Microsoft Mail mid-2017, all outlook.com accounts will be migrated to Office 365 / Exchange Most users are currently on POP which does not allow showing folders and many other features (technical limitations of POP3). With Microsoft IMAP you will get folders, sync read/unread, and show flags. You still won't get push though, as Microsoft has not turned on the IMAP Idle command as at Sept 2013. If you want to try it, you need to first remove (you can't edit) your pop account (long-press the account on the accounts screen, delete account). Then set it up this way: 1. Email/Password 2. Manual 3. IMAP 4. * Incoming: imap-mail.outlook.com, port 993, SSL/TLS should be checked * Outgoing: smtp-mail.outlook.com, port 587, SSL/TLS should be checked * POP server name pop-mail.outlook.com, port 995, POP encryption method SSL Yahoo Mail On April 24, 2002 Yahoo ceased to offer POP access to its free mail service. Introducing instead a yearly payment feature, allowing users POP3 and IMAP server support, along with such benefits as larger file attachment sizes and no adverts. Sorry to see Yahoo leaving its users to cough up for the privilege of accessing their mail. Understandable, when competing against rivals such as Gmail and Hotmail who hold a large majority of users and were hacked in 2014 as well. Incoming Mail (IMAP) Server * Server - imap.mail.yahoo.com * Port - 993 * Requires SSL - Yes Outgoing Mail (SMTP) Server * Server - smtp.mail.yahoo.com * Port - 465 or 587 * Requires SSL - Yes * Requires authentication - Yes Your login info * Email address - Your full email address (name@domain.com) * Password - Your account's password * Requires authentication - Yes Note that you need to enable “Web & POP Access” in your Yahoo Mail account to send and receive Yahoo Mail messages through any other email program. You will have to enable “Allow your Yahoo Mail to be POPed” under “POP and Forwarding”, to send and receive Yahoo mails through any other email client. Cannot be done since 2002 unless the customer pays Yahoo a subscription subs fee to have access to SMTP and POP3 * Set the POP server for incoming mails as pop.mail.yahoo.com. You will have to enable “SSL” and use 995 for Port. * “Account Name or Login Name” – Your Yahoo Mail ID i.e. your email address without the domain “@yahoo.com”. * “Email Address” – Your Yahoo Mail address i.e. your email address including the domain “@yahoo.com”. E.g. myname@yahoo.com * “Password” – Your Yahoo Mail password. Yahoo! Mail Plus users may have to set POP server as plus.pop.mail.yahoo.com and SMTP server as plus.smtp.mail.yahoo.com. * Set the SMTP server for outgoing mails as smtp.mail.yahoo.com. You will also have to make sure that “SSL” is enabled and use 465 for port. you must also enable “authentication” for this to work. ====YAM Yet Another Mailer==== YAM does not support SSL and most mail providers have now switched to encrypted SMTP/POP3 connections This email client is POP3 only if the SSL library is available [http://www.freelists.org/list/yam YAM Freelists] One of the downsides of using a POP3 mailer unfortunately - you have to set an option not to delete the mail if you want it left on the server. IMAP keeps all the emails on the server. Possible issues Sending mail issues is probably a matter of using your ISP's SMTP server, though it could also be an SSL issue. getting a "Couldn't initialise TLSv1 / SSL error Use of on-line e-mail accounts with this email client is not possible as it lacks the OpenSSL AmiSSl v3 compatible library GMail Incoming Mail (POP3) Server - requires SSL: pop.gmail.com Use SSL: Yes Port: 995 Outgoing Mail (SMTP) Server - requires TLS: smtp.gmail.com (use authentication) Use Authentication: Yes Use STARTTLS: Yes (some clients call this SSL) Port: 465 or 587 Account Name: your Gmail username (including '@gmail.com') Email Address: your full Gmail email address (username@gmail.com) Password: your Gmail password Anyway, the SMTP is pop.gmail.com port 465 and it uses SSLLv3 Authentication. The POP3 settings are for the same server (pop.gmail.com), only on port 995 instead. Outlook.com access <pre > Outlook.com SMTP server address: smtp.live.com Outlook.com SMTP user name: Your full Outlook.com email address (not an alias) Outlook.com SMTP password: Your Outlook.com password Outlook.com SMTP port: 587 Outlook.com SMTP TLS/SSL encryption required: yes </pre > Yahoo Mail <pre > “POP3 Server” – Set the POP server for incoming mails as pop.mail.yahoo.com. You will have to enable “SSL” and use 995 for Port. “SMTP Server” – Set the SMTP server for outgoing mails as smtp.mail.yahoo.com. You will also have to make sure that “SSL” is enabled and use 465 for port. you must also enable “authentication” for this to work. “Account Name or Login Name” – Your Yahoo Mail ID i.e. your email address without the domain “@yahoo.com”. “Email Address” – Your Yahoo Mail address i.e. your email address including the domain “@yahoo.com”. E.g. myname@yahoo.com “Password” – Your Yahoo Mail password. </pre > Yahoo! Mail Plus users may have to set POP server as plus.pop.mail.yahoo.com and SMTP server as plus.smtp.mail.yahoo.com. Note that you need to enable “Web & POP Access” in your Yahoo Mail account to send and receive Yahoo Mail messages through any other email program. You will have to enable “Allow your Yahoo Mail to be POPed” under “POP and Forwarding”, to send and receive Yahoo mails through any other email client. Cannot be done since 2002 unless the customer pays Yahoo a monthly fee to have access to SMTP and POP3 Microsoft Outlook Express Mail 1. Get the files to your PC. By whatever method get the files off your Amiga onto your PC. In the YAM folder you have a number of different folders, one for each of your folders in YAM. Inside that is a file usually some numbers such as 332423.283. YAM created a new file for every single email you received. 2. Open up a brand new Outlook Express. Just configure the account to use 127.0.0.1 as mail servers. It doesn't really matter. You will need to manually create any subfolders you used in YAM. 3. You will need to do a mass rename on all your email files from YAM. Just add a .eml to the end of it. Amazing how PCs still rely mostly on the file name so it knows what sort of file it is rather than just looking at it! There are a number of multiple renamers online to download and free too. 4. Go into each of your folders, inbox, sent items etc. And do a select all then drag the files into Outlook Express (to the relevant folder obviously) Amazingly the file format that YAM used is very compatible with .eml standard and viola your emails appear. With correct dates and working attachments. 5. If you want your email into Microsoft Outlook. Open that up and create a new profile and a new blank PST file. Then go into File Import and choose to import from Outlook Express. And the mail will go into there. And viola.. you have your old email from your Amiga in a more modern day format. ===FTP=== Magellan has a great FTP module. It allows transferring files from/to a FTP server over the Internet or the local network and, even if FTP is perceived as a "thing of the past", its usability is all inside the client. The FTP thing has a nice side effect too, since every Icaros machine can be a FTP server as well, and our files can be easily transferred from an Icaros machine to another with a little configuration effort. First of all, we need to know the 'server' IP address. Server is the Icaros machine with the file we are about to download on another Icaros machine, that we're going to call 'client'. To do that, move on the server machine and 1) run Prefs/Services to be sure "FTP file transfer" is enabled (if not, enable it and restart Icaros); 2) run a shell and enter this command: ifconfig -a Make a note of the IP address for the network interface used by the local area network. For cabled devices, it usually is net0:. Now go on the client machine and run Magellan: Perform these actions: 1) click on FTP; 2) click on ADDRESS BOOK; 3) click on "New". You can now add a new entry for your Icaros server machine: 1) Choose a name for your server, in order to spot it immediately in the address book. Enter the IP address you got before. 2) click on Custom Options: 1) go to Miscellaneous in the left menu; 2) Ensure "Passive Transfers" is NOT selected; 3) click on Use. We need to deactivate Passive Transfers because YAFS, the FTP server included in Icaros, only allows active transfers at the current stage. Now, we can finally connect to our new file source: 1) Look into the address book for the newly introduced server, be sure that name and IP address are right, and 2) click on Connect. A new lister with server's "MyWorkspace" contents will appear. You can now transfer files over the network choosing a destination among your local (client's) volumes. Can be adapted to any FTP client on any platform of your choice, just be sure your client allows Active Transfers as well. ===IRC Internet Relay Chat=== Jabberwocky is ideal for one-to-one social media communication, use IRC if you require one to many. Just type a message in ''lowercase''' letters and it will be posted to all in the [ AROS irc channel]. Please do not use UPPER CASE as it is a sign of SHOUTING which is annoying. Other things to type in - replace <message> with a line of text and <nick> with a person's name <pre> /help /list /who /whois <nick> /msg <nick> <message> /query <nick> <message>s /query /away <message> /away /quit <going away message> </pre> [http://irchelp.org/irchelp/new2irc.html#smiley Intro guide here]. IRC Primer can be found here in [http://www.irchelp.org/irchelp/ircprimer.html html], [http://www.irchelp.org/irchelp/text/ircprimer.txt TXT], [http://www.kei.com/irc/IRCprimer1.1.ps PostScript]. Issue the command /me <text> where <text> is the text that should follow your nickname. Example: /me slaps ajk around a bit with a large trout /nick <newNick> /nickserv register <password> <email address> /ns instead of /nickserv, while others might need /msg nickserv /nickserv identify <password> Alternatives: /ns identify <password> /msg nickserv identify <password> ==== IRC WookieChat ==== WookieChat is the most complete internet client for communication across the IRC Network. WookieChat allows you to swap ideas and communicate in real-time, you can also exchange Files, Documents, Images and everything else using the application's DCC capabilities. add smilies drawer/directory run wookiechat from the shell and set stack to 1000000 e.g. wookiechat stack 1000000 select a server / server window * nickname * user name * real name - optional Once you configure the client with your preferred screen name, you'll want to find a channel to talk in. servers * New Server - click on this to add / add extra - change details in section below this click box * New Group * Delete Entry * Connect to server * connect in new tab * perform on connect Change details * Servername - change text in this box to one of the below Server: * Port number - no need to change * Server password * Channel - add #channel from below * auto join - can click this * nick registration password, Click Connect to server button above <pre> Server: irc.freenode.net Channel: #aros </pre> irc://irc.freenode.net/aros <pre> Server: chat.amigaworld.net Channel: #amigaworld or #amigans </pre> <pre> On Sunday evenings USA time usually starting around 3PM EDT (1900 UTC) Server:irc.superhosts.net Channel #team*amiga </pre> <pre> BitlBee and Minbif are IRCd-like gateways to multiple IM networks Server: im.bitlbee.org Port 6667 Seems to be most useful on WookieChat as you can be connected to several servers at once. One for Bitlbee and any messages that might come through that. One for your normal IRC chat server. </pre> [http://www.bitlbee.org/main.php/servers.html Other servers], <pre> #Amiga.org - irc.synirc.net eu.synirc.net dissonance.nl.eu.synirc.net (IPv6: 2002:5511:1356:0:216:17ff:fe84:68a) twilight.de.eu.synirc.net zero.dk.eu.synirc.net us.synirc.net avarice.az.us.synirc.net envy.il.us.synirc.net harpy.mi.us.synirc.net liberty.nj.us.synirc.net snowball.mo.us.synirc.net - Ports 6660-6669 7001 (SSL) </pre> <pre> Multiple server support "Perform on connect" scripts and channel auto-joins Automatic Nickserv login Tabs for channels and private conversations CTCP PING, TIME, VERSION, SOUND Incoming and Outgoing DCC SEND file transfers Colours for different events Logging and automatic reloading of logs mIRC colour code filters Configurable timestamps GUI for changing channel modes easily Configurable highlight keywords URL Grabber window Optional outgoing swear word filter Event sounds for tabs opening, highlighted words, and private messages DCC CHAT support Doubleclickable URL's Support for multiple languages using LOCALE Clone detection Auto reconnection to Servers upon disconnection Command aliases Chat display can be toggled between AmIRC and mIRC style Counter for Unread messages Graphical nicklist and graphical smileys with a popup chooser </pre> ====IRC Aircos ==== Double click on Aircos icon in Extras:Networking/Apps/Aircos. It has been set up with a guest account for trial purposes. Though ideally, choose a nickname and password for frequent use of irc. ====IRC and XMPP Jabberwocky==== Servers are setup and close down at random You sign up to a server that someone else has setup and access chat services through them. The two ways to access chat from jabberwocky <pre > Jabberwocky -> Server -> XMPP -> open and ad-free Jabberwocky -> Server -> Transports (Gateways) -> Proprietary closed systems </pre > The Jabber.org service connects with all IM services that use XMPP, the open standard for instant messaging and presence over the Internet. The services we connect with include Google Talk (closed), Live Journal Talk, Nimbuzz, Ovi, and thousands more. However, you can not connect from Jabber.org to proprietary services like AIM, ICQ, MSN, Skype, or Yahoo because they don’t yet use XMPP components (XEP-0114) '''but''' you can use Jabber.com's servers and IM gateways (MSN, ICQ, Yahoo etc.) instead. The best way to use jabberwocky is in conjunction with a public jabber server with '''transports''' to your favorite services, like gtalk, Facebook, yahoo, ICQ, AIM, etc. You have to register with one of the servers, [https://list.jabber.at/ this list] or [http://www.jabberes.org/servers/ another list], [http://xmpp.net/ this security XMPP list], Unfortunately jabberwocky can only connect to one server at a time so it is best to check what services each server offers. If you set it up with separate Facebook and google talk accounts, for example, sometimes you'll only get one or the other. Jabberwocky open a window where the Jabber server part is typed in as well as your Nickname and Password. Jabber ID (JID) identifies you to the server and other users. Once registered the next step is to goto Jabberwocky's "Windows" menu and select the "Agents" option. The "Agents List" window will open. Roster (contacts list) [http://search.wensley.org.uk/ Chatrooms] (MUC) are available File Transfer - can send and receive files through the Jabber service but not with other services like IRC, ICQ, AIM or Yahoo. All you need is an installed webbrowser and OpenURL. Clickable URLs - The message window uses Mailtext.mcc and you can set a URL action in the MUI mailtext prefs like SYS:Utils/OpenURL %s NEWWIN. There is no consistent Skype like (H.323 VoIP) video conferencing available over Jabber. The move from xmpp to Jingle should help but no support on any amiga-like systems at the moment. [http://aminet.net/package/dev/src/AmiPhoneSrc192 AmiPhone] and [http://www.lysator.liu.se/%28frame,faq,nobg,useframes%29/ahi/v4-site/ Speak Freely] was an early attempt voice only contact. SIP and Asterisk are other PBX options. Facebook If you're using the XMPP transport provided by Facebook themselves, chat.facebook.com, it looks like they're now requiring SSL transport. This means jabberwocky method below will no longer work. The best thing to do is to create an ID on a public jabber server which has a Facebook gateway. <pre > 1. launch jabberwocky 2. if the login window doesn't appear on launch, select 'account' from the jabberwocky menu 3. your jabber ID will be user@chat.facebook.com where user is your user ID 4. your password is your normal facebook password 5. to save this for next time, click the popup gadget next to the ID field 6. click the 'add' button 7. click the 'close' button 8. click the 'connect' button </pre > you're done. you can also click the 'save as default account' button if you want. jabberwocky configured to auto-connect when launching the program, but you can configure as you like. there is amigaguide documentation included with jabberwocky. [http://amigaworld.net/modules/newbb/viewtopic.php?topic_id=37085&forum=32 Read more here] for Facebook users, you can log-in directly to Facebook with jabberwocky. just sign in as @chat.facebook.com with your Facebook password as the password Twitter For a few years, there has been added a twitter transport. Servers include [http://jabber.hot-chilli.net/ jabber.hot-chili.net], and . An [http://jabber.hot-chilli.net/tag/how-tos/ How-to] :Read [http://jabber.hot-chilli.net/2010/05/09/twitter-transport-working/ more] Instagram no support at the moment best to use a web browser based client ICQ The new version (beta) of StriCQ uses a newer ICQ protocol. Most of the ICQ Jabber Transports still use an older ICQ protocol. You can only talk one-way to StriCQ using the older Transports. Only the newer ICQv7 Transport lets you talk both ways to StriCQ. Look at the server lists in the first section to check. Register on a Jabber server, e.g. this one works: http://www.jabber.de/ Then login into Jabberwocky with the following login data e.g. xxx@jabber.de / Password: xxx Now add your ICQ account under the window->Agents->"Register". Now Jabberwocky connects via the Jabber.de server with your ICQ account. Yahoo Messenger although yahoo! does not use xmpp protocol, you should be able to use the transport methods to gain access and post your replies MSN early months of 2013 Microsoft will ditch MSN Messenger client and force everyone to use Skype...but MSN protocol and servers will keep working as usual for quite a long time.... Occasionally the Messenger servers have been experiencing problems signing in. You may need to sign in at www.outlook.com and then try again. It may also take multiple tries to sign in. (This also affects you if you’re using Skype.) You have to check each servers' Agents List to see what transports (MSN protocol, ICQ protocol, etc.) are supported or use the list address' provided in the section above. Then register with each transport (IRC, MSN, ICQ, etc.) to which you need access. After registering you can Connect to start chatting. msn.jabber.com/registered should appear in the window. From this [http://tech.dir.groups.yahoo.com/group/amiga-jabberwocky/message/1378 JW group] guide which helps with this process in a clear, step by step procedure. 1. Sign up on MSN's site for a passport account. This typically involves getting a Hotmail address. 2. Log on to the Jabber server of your choice and do the following: * Select the "Windows/Agents" menu option in Jabberwocky. * Select the MSN Agent from the list presented by the server. * Click the Register button to open a new window asking for: **Username = passort account email address, typically your hotmail address. **Nick = Screen name to be shown to anyone you add to your buddy list. **Password = Password for your passport account/hotmail address. * Click the Register button at the bottom of the new window. 3. If all goes well, you will see the MSN Gateway added to your buddy list. If not, repeat part 2 on another server. Some servers may show MSN in their list of available agents, but have not updated their software for the latest protocols used by MSN. 4. Once you are registered, you can now add people to your buddy list. Note that you need to include the '''msn.''' ahead of the servername so that it knows what gateway agent to use. Some servers may use a slight variation and require '''msg.gate.''' before the server name, so try both to see what works. If my friend's msn was amiga@hotmail.co.uk and my jabber server was @jabber.meta.net.nz.. then amiga'''%'''hotmail.com@'''msn.'''jabber.meta.net.nz or another the trick to import MSN contacts is that you don't type the hotmail URL but the passport URL... e.g. Instead of: goodvibe%hotmail.com@msn.jabber.com You type: goodvibe%passport.com@msn.jabber.com And the thing about importing contacts I'm afraid you'll have to do it by hand, one at the time... Google Talk any XMPP server will work, but you have to add your contacts manually. a google talk user is typically either @gmail.com or @talk.google.com. a true gtalk transport is nice because it brings your contacts to you and (can) also support file transfers to/from google talk users. implement Jingle a set of extensions to the IETF's Extensible Messaging and Presence Protocol (XMPP) support ended early 2014 as Google moved to Google+ Hangouts which uses it own proprietary format ===Video Player MPlayer=== Many of the menu features (such as doubling) do not work with the current version of mplayer but using 4:3 mplayer -vf scale=800:600 file.avi 16:9 mplayer -vf scale=854:480 file.avi if you want gui use; mplayer -gui 1 <other params> file.avi <pre > stack 1000000 ; using AspireOS 1.xx ; copy FROM SYS:Extras/Multimedia/MPlayer/ TO RAM:MPlayer ALL CLONE > Nil: ; using Icaros Desktop 1.x ; copy FROM SYS:Tools/MPlayer/ TO RAM:MPlayer ALL CLONE > Nil: ; using Icaros Desktop 2.x ; copy FROM SYS:Utilities/MPlayer/ TO RAM:MPlayer ALL CLONE > Nil: cd RAM:MPlayer run MPlayer -gui > Nil: ;run MPlayer -gui -ao ahi_dev -playlist http://www.radio-paralax.de/listen.pls > Nil: </pre > $ mplayer rtsp://127.0.0.1:554/sample_300kbit.mp4 MPlayer supports multicast streaming, and rtp/rtsp protocols (it might require [http://www.live555.com/openRTSP/ live555 library] to work with some streams). But you might have to build it where it's disabled. Also, multicast won't work with some AmiTCP-likes. MIAMI supported it, though. AROS supports IPv4 (old but works) and this includes the needed address space for RTP. If you mean multicast via RTP - mplayer handles it. You can even force UDP over TCP -rtsp-stream-over-tcp If the rtsp Real Time Streaming Protocol server needs authentification: -user -passwd MPlayer - Menu - Open Playlist and load already downloaded .pls or .m3u file - auto starts around 4 percent cache MPlayer - Menu - Open Stream and copy one of the .pls lines below into space allowed, press OK and press play button on main gui interface Old 8bit 16bit remixes chip tune game music http://www.radio-paralax.de/listen.pls http://scenesat.com/ http://www.shoutcast.com/radio/Amiga http://www.theoldcomputer.com/retro_radio/RetroRadio_Main.htm http://www.kohina.com/ http://www.remix64.com/ http://retrogamer.net/forum/ http://retroasylum.podomatic.com/rss2.xml http://retrogamesquad.com/ http://www.retronauts.com/ http://monsterfeet.com/noquarter/ http://www.retrogamingradio.com/ http://www.radiofeeds.co.uk/mp3.asp [[#top|...to the top]] ====ZunePaint==== simplified typical workflow * importing and organizing and photo management * making global and regional local correction(s) - recalculation is necessary after each adjustment as it is not in real-time * exporting your images in the best format available with the preservation of metadata Whilst achieving 80% of a great photo with just a filter, the remaining 20% comes from a manual fine-tuning of specific image attributes. For photojournalism, documentary, and event coverage, minimal touching is recommended. Stick to Camera Raw for such shots, and limit changes to level adjustment, sharpness, noise reduction, and white balance correction. For fashion or portrait shoots, a large amount of adjustment is allowed and usually ends up far from the original. Skin smoothing, blemish removal, eye touch-ups, etc. are common. Might alter the background a bit to emphasize the subject. Product photography usually requires a lot of sharpening, spot removal, and focus stacking. For landscape shots, best results are achieved by doing the maximum amount of preparation before/while taking the shot. No amount of processing can match timing, proper lighting, correct gear, optimal settings, etc. Excessive post-processing might give you a dramatic shot but best avoided in the long term. * White Balance - Left Amiga or F12 and K and under "Misc color effects" tab with a pull down for White Balance - color temperature also known as AKA tint (movies) or tones (painting) - warm temp raise red reduce green blue - cool raise blue lower red green * Exposure - exposure compensation, highlight/shadow recovery * Noise Reduction - during RAW development or using external software * Lens Corrections - distortion, vignetting, chromatic aberrations * Detail - capture sharpening and local contrast enhancement * Contrast - black point, levels (sliders) and curves tools (F12 and K) * Framing - straighten () and crop (F12 and F) * Refinements - color adjustments and selective enhancements - Left Amiga or F12 and K for RGB and YUV histogram tabs - * Resizing - enlarge for a print or downsize for the web or email (F12 and D) * Output Sharpening - customized for your subject matter and print/screen size White Balance - F12 and K scan your image for a shade which was meant to be white (neutral with each RGB value being equal) like paper or plastic which is in the same light as the subject of the picture. Use the dropper tool to select this color, similar colours will shift and you will have selected the perfect white balance for your part of the image - for the whole picture make sure RAZ or CLR button at the bottom is pressed before applying to the image above. Exposure correction F12 and K - YUV Y luminosity - RGB extra red tint - move red curve slightly down and move blue green curves slightly up Workflows in practice * Undo - Right AROS key or F12 and Z * Redo - Right AROS key or F12 and R First flatten your image (if necessary) and then do a rotation until the picture looks level. * Crop the picture. Click the selection button and drag a box over the area of the picture you want to keep. Press the crop button and the rest of the photo will be gone. * Adjust your saturation, exposure, hue levels, etc., (right AROS Key and K for color correction) until you are happy with the photo. Make sure you zoom in all of the way to 100% and look the photo over, zoom back out and move around. Look for obvious problems with the picture. * After coloring and exposure do a sharpen (Right AROS key and E for Convolution and select drop down option needed), e.g. set the matrix to 5x5 (roughly equivalent Amount to 60%) and set the Radius to 1.0. Click OK. And save your picture Implemented or would like to see for simplification and ease of use basic filters (presets) like black and white, monochrome, edge detection (sobel), motion/gaussian blur, * negative, sepiatone, retro vintage, night vision, colour tint, color gradient, color temperature, glows, fire, lightning, lens flare, emboss, filmic, pixelate mezzotint, antialias, etc. adjust / cosmetic tools such as crop, * reshaping tools, straighten, smear, smooth, perspective, liquify, bloat, pucker, push pixels in any direction, dispersion, transform like warp, blending with soft light, page-curl, whirl, ripple, fisheye, neon, etc. * red eye fixing, blemish remover, skin smoothing, teeth whitener, make eyes look brighter, desaturate, effects like oil paint, cartoon, pencil sketch, charcoal, noise/matrix like sharpen/unsharpen, (right AROS key with A for Artistic effects) * blend two image, gradient blend, masking blend, explode, implode, custom collage, surreal painting, comic book style, needlepoint, stained glass, watercolor, mosaic, stencil/outline, crayon, chalk, etc. borders such as * dropshadow, rounded, blurred, color tint, picture frame, film strip polaroid, bevelled edge, etc. brushes e.g. * frost, smoke, etc. and manual control of fix lens issues including vignetting (darkening), color fringing and barrel distortion, and chromatic and geometric aberration - lens and body profiles perspective correction levels - directly modify the levels of the tone-values of an image, by using sliders for highlights, midtones and shadows curves - Color Adjustment and Brightness/Contrast color balance one single color transparent (alpha channel (color information/selections) for masking and/or blending ) for backgrounds, etc. Threshold indicates how much other colors will be considered mixture of the removed color and non-removed colors decompose layer into a set of layers with each holding a different type of pattern that is visible within the image any selection using any selecting tools like lasso tool, marquee tool etc. the selection will temporarily be save to alpha If you create your image without transparency then the Alpha channel is not present, but you can add later. File formats like .psd (Photoshop file has layers, masks etc. contains edited sensor data. The original sensor data is no longer available) .xcf .raw .hdr Image Picture Formats * low dynamic range (JPEG, PNG, TIFF 8-bit), 16-bit (PPM, TIFF), typically as a 16-bit TIFF in either ProPhoto or AdobeRGB colorspace - TIFF files are also fairly universal – although, if they contain proprietary data, such as Photoshop Adjustment Layers or Smart Filters, then they can only be opened by Photoshop making them proprietary. * linear high dynamic range (HDR) images (PFM, [http://www.openexr.com/ ILM .EXR], jpg, [http://aminet.net/util/dtype cr2] (canon tiff based), hdr, NEF, CRW, ARW, MRW, ORF, RAF (Fuji), PEF, DCR, SRF, ERF, DNG files are RAW converted to an Adobe proprietary format - a container that can embed the raw file as well as the information needed to open it) An old version of [http://archives.aros-exec.org/index.php?function=browse&cat=graphics/convert dcraw] There is no single RAW file format. Each camera manufacturer has one or more unique RAW formats. RAW files contain the brightness levels data captured by the camera sensor. This data cannot be modified. A second smaller file, separate XML file, or within a database with instructions for the RAW processor to change exposure, saturation etc. The extra data can be changed but the original sensor data is still there. RAW is technically least compatible. A raw file is high-bit (usually 12 or 14 bits of information) but a camera-generated TIFF file will be usually converted by the camera (compressed, downsampled) to 8 bits. The raw file has no embedded color balance or color space, but the TIFF has both. These three things (smaller bit depth, embedded color balance, and embedded color space) make it so that the TIFF will lose quality more quickly with image adjustments than the raw file. The camera-generated TIFF image is much more like a camera processed JPEG than a raw file. A strong advantage goes to the raw file. The power of RAW files, such as the ability to set any color temperature non-destructively and will contain more tonal values. The principle of preserving the maximum amount of information to as late as possible in the process. The final conversion - which will always effectively represent a "downsampling" - should prevent as much loss as possible. Once you save it as TIFF, you throw away some of that data irretrievably. When saving in the lossy JPEG format, you get tremendous file size savings, but you've irreversibly thrown away a lot of image data. As long as you have the RAW file, original or otherwise, you have access to all of the image data as captured. Keyboard equivalence with Photoshop(tm) would help File PHOTOSHOP SHORTCUT GIMP New Ctrl+n New Open Ctrl+o Open Close Ctrl+w Close Save Ctrl+s Save Save as Shift+Ctrl+s Save as Revert F12 Revert Print Ctrl+p Print Exit Ctrl+q Quit Edit PHOTOSHOP SHORTCUT GIMP Undo/Redo (1 level) Ctrl+z Undo (Redo is Shift+Ctrl+z) Cut Ctrl+x Cut Copy Ctrl+c Copy Paste Ctrl+v Paste Paste Into Shift+Ctrl+v Paste Into Fill with FG color Alt+Backspace Fill with FG color Fill with BG color Control+Backspace Fill with BG color Image/Colors PHOTOSHOP SHORTCUT GIMP Levels Ctrl+l Levels Auto Contrast Shift+Ctrl+Alt+l Stretch Contrast (same?) Curves Ctrl+m Curves Color Balance Ctrl+b Color Balance Hue/Saturation Ctrl+u Hue-Saturation Desaturate Shift+Ctrl+u Desaturate Invert Ctrl+i Invert Default Colors d Default Colors Switch Colors x Switch Colors Layer PHOTOSHOP SHORTCUT GIMP New Layer Shift+Ctrl+n New Layer Layer via Copy Ctrl+j Duplicate Layer Bring (layer) to Front Shift+Ctrl+] Layer to Top Send (layer) to Back Shift+Ctrl+[ Layer to Bottom Bring (layer) Forward Ctrl+] Raise Layer Send (layer) Backward Ctrl+[ Lower Layer Select Top Layer Shift+Alt+] Select Top Layer Select Bottom Layer Shift+Alt+[ Select Bottom Layer Select One Layer Forward Alt+] Select Previous Layer Select One Layer Backward Alt+[ Select Next Layer Merge Down Ctrl+e Merge Down Merge Visible Shift+Ctrl+e Merge Visible Preserve Transparency / Keep Transparency Cycle Modes Forwards Shift+= Next Layer Mode Cycle Modes Backwards Shift+- Previous Layer Mode Select PHOTOSHOP SHORTCUT GIMP Select All Ctrl+a Select All Deselect Ctrl+d Select None Inverse Shift+Ctrl+i Invert Feather Ctrl+Alt+d Feather View PHOTOSHOP SHORTCUT GIMP Zoom In Ctrl+= Zoom In Zoom Out Ctrl+- Zoom Out Fit on Screen Ctrl+0 Zoom to Fit Window Actual Pixels Ctrl+Alt+0 Zoom 1:1 Show/Hide Extras Ctrl+h Toggle Show Selection (close enough?) Show/Hide Guides Ctrl+' Toggle Show Guides Show/Hide Grid Ctrl+Alt+' Toggle Show Grid Show/Hide Rulers Ctrl+r Toggle Show Rulers Snap Ctrl+; Snap to Guides Scroll View Up Page Up Scroll Page Up Scroll View Down Page Down Scroll Page Down Scroll View Left Ctrl+Page Up Scroll Page Left Scroll View Right Ctrl+Page Down Scroll Page Right Window/Dialogs PHOTOSHOP SHORTCUT GIMP ? F5 Tools Dialog Color Tab F6 Colors Dialog Layers Tab F7 Layers Dialog Info Tab F8 Image Information Tools PHOTOSHOP SHORTCUT GIMP Rectangular Marquee Tool m Rect Select Tool Elliptical Marquee Tool Shift+m Ellipse Select Tool *This is a toggle between 'Elliptical Marquee Tool' and 'Rectangular Marquee Tool' in Photoshop Move Tool v Move Tool Lasso Tool l Free Select Tool Magic Wand Tool w Fuzzy Select Tool Crop Tool c Crop & Resize Tool Airbrush Tool j Airbrush Tool Paintbrush Tool b Paintbrush Tool Clone Stamp Tool s Clone Stamp Tool Eraser Tool e Eraser Tool Gradient Tool g Blend Tool Paint Bucket Tool Shift+g Bucket Fill Tool *This is a toggle between 'Paint Bucket Tool' and 'Gradient Tool' in Photoshop Blur Tool r Convolve Tool Dodge Tool o DodgeBurn Tool Type Tool t Text Tool Pen Tool p Bezier Select Tool Eye Dropper Tool i Color Picker Tool Zoom Tool z Magnify Tool Previous Brush , Previous Brush Next Brush . Next Brush First Brush Shift+< First Brush Last Brush Shift+> Last Brush Decrease Brush Size [ Decrease Brush Size Increase Brush Size ] Increase Brush Size Decrease Brush Hardness { Decrease Brush Hardness Increase Brush Hardness } Increase Brush Hardness Help PHOTOSHOP SHORTCUT GIMP Help F1 Help Context Help Shift+F1 Context Help Misc. PHOTOSHOP SHORTCUT GIMP Last Filter Ctrl+f Repeat Last Filter ? Shift+Ctrl+f Reshow Last Filter Preferences Ctrl+k Preferences Liquify Shift+Ctrl+x IWarp (close enough?) Toggle Quick Mask q Toggle Quick Mask Spotlights - triangle of white opaque shape Cutting out and/or replacing unwanted background or features - select large areas with the selection option like the Magic Wand tool (aka Color Range) or the Lasso (quick and fast) with feather 2 to soften edge or the pen tool which adds points/lines/Bézier curves (better control but slower), hold down the shift button as you click to add extra points/areas of the subject matter to remove. Increase the tolerance to cover more areas. To subtract from your selection hold down alt as you're clicking. * Layer masks are a better way of working than Erase they clip (black hides/hidden white visible/reveal). Clone Stamp can be simulated by and brushes for other areas. * Leave the fine details like hair, fur, etc. to later with lasso and the shift key to draw a line all the way around your subject. Gradient Mapping - Inverse - Mask. i.e. Refine your selected image with edge detection and using the radius and edge options / adjuster (increase/decrease contrast) so that you will capture more fine detail from the background allowing easier removal. Remove fringe/halo saving image as png rather than jpg/jpeg to keep transparency background intact. Implemented [http://colorizer.org/ colour model representations] [http://paulbourke.net/texture_colour/colourspace/ Mathematical approach] - Photo stills are spatially 2d (h and w), but are colorimetrically 3d (r g and b, or H L S, or Y U V etc.) as well. * RGB - split cubed mapped color model for photos and computer graphics hardware using the light spectrum (adding and subtracting) * YUV - Y-Lightness U-blue/yellow V-red/cyan (similar to YPbPr and YCbCr) used in the PAL, NTSC, and SECAM composite digital TV color [http://crewofone.com/2012/chroma-subsampling-and-transcoding/#comment-7299 video] Histograms White balanced (neutral) if the spike happens in the same place in each channel of the RGB graphs. If not, you're not balanced. If you have sky you'll see the blue channel further off to the right. RGB is best one to change colours. These elements RGB is a 3-channel format containing data for Red, Green, and Blue in your photo scale between 0 and 255. The area in a picture that appears to be brighter/whiter contains more red color as compared to the area which is relatively darker. Similarly in the green channel the area that appears to be darker contains less amount of green color as compared to the area that appears to be brighter. Similarly in the blue channel the area appears to be darker contains less amount of blue color as compared to the area that appears to be brighter. Brightness luminance histogram also matches the green histogram more than any other color - human eye interprets green better e.g. RGB rough ratio 15/55/30% RGBA (RGB+A, A means alpha channel) . The alpha channel is used for "alpha compositing", which can mostly be associated as "opacity". AROS deals in RGB with two digits for every color (red, green, blue), in ARGB you have two additional hex digits for the alpha channel. The shadows are represented by the left third of the graph. The highlights are represented by the right third. And the midtones are, of course, in the middle. The higher the black peaks in the graph, the more pixels are concentrated in that tonal range (total black area). By moving the black endpoint, which identifies the shadows (darkness) and a white light endpoint (brightness) up and down either sides of the graph, colors are adjusted based on these points. By dragging the central one, can increased the midtones and control the contrast, raise shadows levels, clip or softly eliminate unsafe levels, alter gamma, etc... in a way that is much more precise and creative . RGB Curves * Move left endpoint (black point) up or right endpoint (white point) up brightens * Move left endpoint down or right endpoint down darkens Color Curves * Dragging up on the Red Curve increases the intensity of the reds in the image but * Dragging down on the Red Curve decreases the intensity of the reds and thus increases the apparent intensity of its complimentary color, cyan. Green’s complimentary color is magenta, and blue’s is yellow. <pre> Red <-> Cyan Green <->Magenta Blue <->Yellow </pre> YUV Best option to analyse and pull out statistical elements of any picture (i.e. separate luminance data from color data). The line in Y luma tone box represents the brightness of the image with the point in the bottom left been black, and the point in the top right as white. A low-contrast image has a concentrated clump of values nearer to the center of the graph. By comparison, a high-contrast image has a wider distribution of values across the entire width of the Histogram. A histogram that is skewed to the right would indicate a picture that is a bit overexposed because most of the color data is on the lighter side (increase exposure with higher value F), while a histogram with the curve on the left shows a picture that is underexposed. This is good information to have when using post-processing software because it shows you not only where the color data exists for a given picture, but also where any data has been clipped (extremes on edges of either side): that is, it does not exist and, therefore, cannot be edited. By dragging the endpoints of the line and as well as the central one, can increased the dark/shadows, midtones and light/bright parts and control the contrast, raise shadows levels, clip or softly eliminate unsafe levels, alter gamma, etc... in a way that is much more precise and creative . The U and V chroma parts show color difference components of the image. It’s useful for checking whether or not the overall chroma is too high, and also whether it’s being limited too much Can be used to create a negative image but also With U (Cb), the higher value you are, the more you're on the blue primary color. If you go to the low values then you're on blue complementary color, i.e. yellow. With V (Cr), this is the same principle but with Red and Cyan. e.g. If you push U full blue and V full red, you get magenta. If you push U full yellow and V full Cyan then you get green. YUV simultaneously adds to one side of the color equation while subtracting from the other. using YUV to do color correction can be very problematic because each curve alters the result of each other: the mutual influence between U and V often makes things tricky. You may also be careful in what you do to avoid the raise of noise (which happens very easily). Best results are obtained with little adjustments sunset that looks uninspiring and needs some color pop especially for the rays over the hill, a subtle contrast raise while setting luma values back to the legal range without hard clipping. Free royalty pictures, [www.freeimages.com ], [http://imageshack.us/ ], [http://photobucket.com/ ], [http://rawpixels.net/], [], [], [], ====Lunapaint==== Pixel based drawing app with onion-skin animation function Blocking, Shading, Coloring, adding detail <pre> b BRUSH e ERASER alt eyedropper v layer tool z ZOOM / MAGNIFY < > n spc panning m marque q lasso w same color selection / region </pre> <pre> , LM RM v V f filter F . size p , pick color [] last / next color </pre> There is not much missing in Lunapaint to be as good as FlipBook and then you have to take into account that Flipbook is considered to be amongst the best and easiest to use animation software out there. Ok to be honest Flipbook has some nice features that require more heavy work but those aren't so much needed right away, things like camera effects, sound, smart fill, export to different movie file formats etc. Tried Flipbook with my tablet and compared it to Luna. The feeling is the same when sketching. LunaPaint is very responsive/fluent to draw with. Just as Flipbook is, and that responsiveness is something its users have mentioned as one of the positive sides of said software. author was learning MUI. Some parts just have to be rewritten with proper MUI classes before new features can be added. * add [Frame Add] / [Frame Del] * whole animation feature is impossible to use. If you draw 2 color maybe but if you start coloring your cells then you get in trouble * pickup the entire image as a brush, not just a selection ? And consequently remove the brush from memory when one doesn't need it anymore. can pick up a brush and put it onto a new image but cropping isn't possible, nor to load/save brushes. * Undo is something I longed for ages in Lunapaint. * to import into the current layer, other types of images (e.g. JPEG) besides RAW64. * implement graphic tablet features support **GENERAL DRAWING** Miss it very much: UNDO ERASER COLORPICKER - has to show on palette too which color got picked. BACKGROUND COLOR -Possibility to select from "New project screen" Miss it somewhat: ICON for UNDO ICON for ERASER ICON for CLEAR SCREEN ( What can I say? I start over from scratch very often ) BRUSH - possibility to cut out as brush not just copy off image to brush **ANIMATING** Miss it very much: NUMBER OF CELLS - Possibity to change total no. of cells during project ANIM BRUSH - Possibility to pick up a selected part of cells into an animbrush Miss it somewhat: ADD/REMOVE FRAMES: Add/remove single frame In general LunaPaint is really well done and it feels like a new DeluxePaint version. It works with my tablet. Sure there's much missing of course but things can always be added over time. So there is great potential in LunaPaint that's for sure. Animations could be made in it and maybe put together in QuickVideo, saving in .gif or .mng etc some day. LAYERS -Layers names don't get saved globally in animation frames -Layers order don't change globally in an animation (perhaps as default?). EXPORTING IMAGES -Exporting frames to JPG/PNG gives problems with colors. (wrong colors. See my animatiopn --> My robot was blue now it's "gold" ) I think this only happens if you have layers. -Trying to flatten the layers before export doesn't work if you have animation frames only the one you have visible will flatten properly all other frames are destroyed. (Only one of the layers are visible on them) -Exporting images filenames should be for example e.g. file0001, file0002...file0010 instead as of now file1, file2...file10 LOAD/SAVE (Preferences) -Make a setting for the default "Work" folder. * Destroyed colors if exported image/frame has layers * mystic color cycling of the selected color while stepping frames back/forth (annoying) <pre> Deluxe Paint II enhanced key shortcuts NOTE: @ denotes the ALT key [Technique] F1 - Paint F2 - Single Colour F3 - Replace F4 - Smear F5 - Shade F6 - Cycle F7 - Smooth M - Colour Cycle [Brush] B - Restore O - Outline h - Halve brush size H - Double brush size x - Flip brush on X axis X - Double brush size on X axis only y - Flip on Y Y - Double on Y z - Rotate brush 90 degrees Z - Stretch [Stencil] ` - Stencil On [Miscellaneous] F9 - Info Bar F10 - Selection Bar @o - Co-Ordinates @a - Anti-alias @r - Colourise @t - Translucent TAB - Colour Cycle [Picture] L - Load S - Save j - Page to Spare(Flip) J - Page to Spare(Copy) V - View Page Q - Quit [General Keys] m - Magnify < - Zoom In > - Zoom Out [ - Palette Colour Up ] - Palette Colour Down ( - Palette Colour Left ) - Palette Colour Right , - Eye Dropper . - Pixel / Brush Toggle / - Symmetry | - Co-Ordinates INS - Perspective Control +/- - Brush Size (Fine Control) w - Unfilled Polygon W - Filled Polygon e - Unfilled Ellipse E - Filled Ellipse r - Unfilled Rectangle R - Filled Rectangle t - Type/text tool a - Select Font u/U - Undo d - Brush D - Filled Non-Uniform Polygon f/F - Fill Options g/G - Grid h/H - Brush Size (Coarse Control) K - Clear c - Unfilled Circle C - Filled Circle v - Line b - Scissor Select and Toggle B - Brush {,} - Toggle between two background colours </pre> ====Lodepaint==== Pixel based painting artwork app ====Grafx2==== Pixel based painting artwork app aesprite like [https://www.youtube.com/watch?v=59Y6OTzNrhk aesprite workflow keys and tablet use], [], ====Vector Graphics ZuneFIG==== Vector Image Editing of files .svg .ps .eps *Objects - raise lower rotate flip aligning snapping *Path - unify subtract intersect exclude divide *Colour - fill stroke *Stroke - size *Brushes - *Layers - *Effects - gaussian bevels glows shadows *Text - *Transform - AmiFIG ([http://epb.lbl.gov/xfig/frm_introduction.html xfig manual]) [[File:MyScreen.png|thumb|left|alt=Showing all Windows open in AmiFIG.|All windows available to AmiFIG.]] for drawing simple to intermediate vector graphic images for scientific and technical uses and for illustration purposes for those with talent ;Menu options * Load - fig format but import(s) SVG * Save - fig format but export(s) eps, ps, pdf, svg and png * PAN = Ctrl + Arrow keys * Deselect all points There is no selected object until you apply the tool, and the selected object is not highlighted. ;Metrics - to set up page and styles - first window to open on new drawings ;Tools - Drawing Primitives - set Attributes window first before clicking any Tools button(s) * Shapes - circles, ellipses, arcs, splines, boxes, polygon * Lines - polylines * Text "T" button * Photos - bitmaps * Compound - Glue, Break, Scale * POINTs - Move, Add, Remove * Objects - Move, Copy, Delete, Mirror, Rotate, Paste use right mouse button to stop extra lines, shapes being formed and the left mouse to select/deselect tools button(s) * Rotate - moves in 90 degree turns centered on clicked POINT of a polygon or square ;Attributes which provide change(s) to the above primitives * Color * Line Width * Line Style * arrowheads ;Modes Choose from freehand, charts, figures, magnet, etc. ;Library - allows .fig clip-art to be stored * compound tools to add .fig(s) together ;FIG 3.2 [http://epb.lbl.gov/xfig/fig-format.html Format] as produced by xfig version 3.2.5 <pre> Landscape Center Inches Letter 100.00 Single -2 1200 2 4 0 0 50 -1 0 12 0.0000 4 135 1050 1050 2475 This is a test.01 </pre> # change the text alignment within the textbox. I can choose left, center, or right aligned by either changing the integer in the second column from 0 (left) to 1 or 2 (center, or right). # The third integer in the row specifies fontcolor. For instance, 0 is black, but blue is 1 and Green3 is 13. # The sixth integer in the bottom row specifies fontface. 0 is Times-Roman, but 16 is Helvetica (a MATLAB default). # The seventh number is fontsize. 12 represents a 12pt fontsize. Changing the fontsize of an item really is as easy as changing that number to 20. # The next number is the counter-clockwise angle of the text. Notice that I have changed the angle to .7854 (pi/4 rounded to four digits=45 degrees). # twelfth number is the position according to the standard “x-axis” in Xfig units from the left. Note that 1200 Xfig units is equivalent to once inch. # thirteenth number is the “y-position” from the top using the same unit convention as before. * The nested text string is what you entered into the textbox. * The “01″ present at the end of that line in the .fig file is the closing tag. For instance, a change to \100 appends a @ symbol at the end of the period of that sentence. ; Just to note there are no layers, no 3d functions, no shading, no transparency, no animation [[#top|...to the top]] ===Audio=== # AHI uses linear panning/balance, which means that in the center, you will get -6dB. If an app uses panning, this is what you will get. Note that apps like Audio Evolution need panning, so they will have this problem. # When using AHI Hifi modes, mixing is done in 32-bit and sent as 32-bit data to the driver. The Envy24HT driver uses that to output at 24-bit (always). # For the Envy24/Envy24HT, I've made 16-bit and 24-bit inputs (called Line-in 16-bit, Line-in 24-bit etc.). There is unfortunately no app that can handle 24-bit recording. ====Music Mods==== Digital module (mods) trackers are music creation software using samples and sometimes soundfonts, audio plugins (VST, AU or RTAS), MIDI. Generally, MODs are similar to MIDI in that they contain note on/off and other sequence messages that control the mod player. Unlike (most) midi files, however, they also contain sound samples that the sequence information actually plays. MOD files can have many channels (classic amiga mods have 4, corresponding to the inbuilt sound channels), but unlike MIDI, each channel can typically play only one note at once. However, since that note might be a sample of a chord, a drumloop or other complex sound, this is not as limiting as it sounds. Like MIDI, notes will play indefinitely if they're not instructed to end. Most trackers record this information automatically if you play your music in live. If you're using manual note entry, you can enter a note-off command with a keyboard shortcut - usually Caps Lock. In fact when considering file size MOD is not always the best option. Even a dummy song wastes few kilobytes for nothing when a simple SID tune could be few hundreds bytes and not bigger than 64kB. AHX is another small format, AHX tunes are never larger than 64kB excluding comments. [https://www.youtube.com/watch?v=rXXsZfwgil Protrekkr] (previously aka [w:Juan_Antonio_Arguelles_Rius|NoiseTrekkr]) If Protrekkr does not start, please check if the Unit 0 has been setup in the AHI prefs and still not, go to the directory utilities/protrekkr and double click on the Protrekkr icon *Sample *Note - Effect *Track (column) - Pattern - Order It all starts with the Sample which is used to create Note(s) in a Track (column of a tracker) The Note can be changed with an Effect. A Track of Note(s) can be collected into a Pattern (section of a song) and these can be given Order to create the whole song. Patience (notes have to be entered one at a time) or playing the bassline on a midi controller (faster - see midi section above). Best approach is to wait until a melody popped into your head. *Up-tempo means the track should be reasonably fast, but not super-fast. *Groovy and funky imply the track should have some sort of "swing" feel, with plenty of syncopation or off beat emphasis and a recognizable, melodic bass line. *Sweet and happy mean upbeat melodies, a major key and avoiding harsh sounds. *Moody - minor key First, create a quick bass sound, which is basically a sine wave, but can be hand drawn for a little more variance. It could also work for the melody part, too. This is usually a bass guitar or some kind of synthesizer bass. The bass line is often forgotten by inexperienced composers, but it plays an important role in a musical piece. Together with the rhythm section the bass line forms the groove of a song. It's the glue between the rhythm section and the melodic layer of a song. The drums are just pink noise samples, played at different frequencies to get a slightly different sound for the kick, snare, and hihats. Instruments that fall into the rhythm category are bass drums, snares, hi-hats, toms, cymbals, congas, tambourines, shakers, etc. Any percussive instrument can be used to form part of the rhythm section. The lead is the instrument that plays the main melody, on top of the chords. There are many instruments that can play a lead section, like a guitar, a piano, a saxophone or a flute. The list is almost endless. There is a lot of overlap with instruments that play chords. Often in one piece an instrument serves both roles. The lead melody is often played at a higher pitch than the chords. Listened back to what was produced so far, and a counter-melody can be imagined, which can be added with a triangle wave. To give the ends of phrases some life, you can add a solo part with a crunchy synth. By hitting random notes in the key of G, then edited a few of them. For the climax of the song, filled out the texture with a gentle high-pitch pad… …and a grungy bass synth. The arrow at A points at the pattern order list. As you see, the patterns don't have to be in numerical order. This song starts with pattern "00", then pattern "02", then "03", then "01", etcetera. Patterns may be repeated throughout a song. The B arrow points at the song title. Below it are the global BPM and speed parameters. These determine the tempo of the song, unless the tempo is altered through effect commands during the song. The C arrow points at the list of instruments. An instrument may consist of multiple samples. Which sample will be played depends on the note. This can be set in the Instrument Editing screen. Most instruments will consist of just one sample, though. The sample list for the selected instrument can be found under arrow D. Here's a part of the main editing screen. This is where you put in actual notes. Up to 32 channels can be used, meaning 32 sounds can play simultaneously. The first six channels of pattern "03" at order "02" are shown here. The arrow at A points at the row number. The B arrow points at the note to play, in this case a C4. The column pointed at by the C arrow tells us which instrument is associated with that note, in this case instrument #1 "Kick". The column at D is used (mainly) for volume commands. In this case it is left empty which means the instrument should play at its default volume. You can see the volume column being used in channel #6. The E column tells us which effect to use and any parameters for that effect. In this case it holds the "F" effect, which is a tempo command. The "04" means it should play at tempo 4 (a smaller number means faster). Base pattern When I create a new track I start with what I call the base pattern. It is worthwhile to spend some time polishing it as a lot of the ideas in the base pattern will be copied and used in other patterns. At least, that's how I work. Every musician will have his own way of working. In "Wild Bunnies" the base pattern is pattern "03" at order "02". In the section about selecting samples I talked about the four different categories of instruments: drums, bass, chords and leads. That's also how I usually go about making the base pattern. I start by making a drum pattern, then add a bass line, place some chords and top it off with a lead. This forms the base pattern from which the rest of the song will grow. Drums Here's a screenshot of the first four rows of the base pattern. I usually reserve the first four channels or so for the drum instruments. Right away there are a couple of tricks shown here. In the first channel the kick, or bass drum, plays some notes. Note the alternating F04 and F02 commands. The "F" command alters the tempo of the song and by quickly alternating the tempo; the song will get some kind of "swing" feel. In the second channel the closed hi-hat plays a fairly simple pattern. Further down in the channel, not shown here, some open hi-hat notes are added for a bit of variation. In the third and fourth channel the snare sample plays. The "8" command is for panning. One note is panned hard to the left and the other hard to the right. One sample is played a semitone lower than the other. This results in a cool flanging effect. It makes the snare stand out a little more in the mix. Bass line There are two different instruments used for the bass line. Instrument #6 is a pretty standard synthesized bass sound. Instrument #A sounds a bit like a slap bass when used with a quick fade out. By using two different instruments the bass line sounds a bit more ”human”. The volume command is used to cut off the notes. However, it is never set to zero. Setting the volume to a very small value will result in a reverb-like effect. This makes the song sound more "live". The bass line hints at the chords that will be played and the key the song will be in. In this case the key of the song is D-major, a positive and happy key. Chords The D major chords that are being played here are chords stabs; short sounds with a quick decay (fade out). Two different instruments (#8 and #9) are used to form the chords. These instruments are quite similar, but have a slightly different sound, panning and volume decay. Again, the reason for this is to make the sound more human. The volume command is used on some chords to simulate a delay, to achieve more of a live feel. The chords are placed off-beat making for a funky rhythm. Lead Finally the lead melody is added. The other instruments are invaluable in holding the track together, but the lead melody is usually what catches people's attention. A lot of notes and commands are used here, but it looks more complex than it is. A stepwise ascending melody plays in channel 13. Channel 14 and 15 copy this melody, but play it a few rows later at a lower volume. This creates an echo effect. A bit of panning is used on the notes to create some stereo depth. Like with the bass line, instead of cutting off notes the volume is set to low values for a reverb effect. The "461" effect adds a little vibrato to the note, which sounds nice on sustained notes. Those paying close attention may notice the instrument used here for the lead melody is the same as the one used for the bass line (#6 "Square"), except played two or three octaves higher. This instrument is a looped square wave sample. Each type of wave has its own quirks, but the square wave (shown below) is a really versatile wave form. Song structure Good, catchy songs are often carefully structured into sections, some of which are repeated throughout the song with small variations. A typical pop-song structure is: Intro - Verse - Chorus - Verse - Chorus - Bridge - Chorus. Other single sectional song structures are <pre> Strophic or AAA Song Form - oldest story telling with refrain (often title of the song) repeated in every verse section melody AABA Song Form - early popular, jazz and gospel fading during the 1960s AB or Verse/Chorus Song Form - songwriting format of choice for modern popular music since the 1960s Verse/Chorus/Bridge Song Form ABAB Song Form ABAC Song Form ABCD Song Form AAB 12-Bar Song Form - three four-bar lines or sub-sections 8-Bar Song Form 16-Bar Song Form Hybrid / Compound Song Forms </pre> The most common building blocks are: #INTRODUCTION(INTRO) #VERSE #REFRAIN #PRE-CHORUS / RISE / CLIMB #CHORUS #BRIDGE #MIDDLE EIGHT #SOLO / INSTRUMENTAL BREAK #COLLISION #CODA / OUTRO #AD LIB (OFTEN IN CODA / OUTRO) The chorus usually has more energy than the verse and often has a memorable melody line. As the chorus is repeated the most often during the song, it will be the part that people will remember. The bridge often marks a change of direction in the song. It is not uncommon to change keys in the bridge, or at least to use a different chord sequence. The bridge is used to build up tension towards the big finale, the last repetition of chorus. Playing RCTRL: Play song from row 0. LSHIFT + RCTRL: Play song from current row. RALT: Play pattern from row 0. LSHIFT + RALT: Play pattern from current row. Left mouse on '>': Play song from row 0. Right mouse on '>': Play song from current row. Left mouse on '|>': Play pattern from row 0. Right mouse on '|>': Play pattern from current row. Left mouse on 'Edit/Record': Edit mode on/off. Right mouse on 'Edit/Record': Record mode on/off. Editing LSHIFT + ESCAPE: Switch large patterns view on/off TAB: Go to next track LSHIFT + TAB: Go to prev. track LCTRL + TAB: Go to next note in track LCTRL + LSHIFT + TAB: Go to prev. note in track SPACE: Toggle Edit mode On & Off (Also stop if the song is being played) SHIFT SPACE: Toggle Record mode On & Off (Wait for a key note to be pressed or a midi in message to be received) DOWN ARROW: 1 Line down UP ARROW: 1 Line up LEFT ARROW: 1 Row left RIGHT ARROW: 1 Row right PREV. PAGE: 16 Arrows Up NEXT PAGE: 16 Arrows Down HOME / END: Top left / Bottom right of pattern LCTRL + HOME / END: First / last track F5, F6, F7, F8, F9: Jump to 0, 1/4, 2/4, 3/4, 4/4 lines of the patterns + - (Numeric keypad): Next / Previous pattern LCTRL + LEFT / RIGHT: Next / Previous pattern LCTRL + LALT + LEFT / RIGHT: Next / Previous position LALT + LEFT / RIGHT: Next / Previous instrument LSHIFT + M: Toggle mute state of the current channel LCTRL + LSHIFT + M: Solo the current track / Unmute all LSHIFT + F1 to F11: Select a tab/panel LCTRL + 1 to 4: Select a copy buffer Tracking 1st and 2nd keys rows: Upper octave row 3rd and 4th keys rows: Lower octave row RSHIFT: Insert a note off / and * (Numeric keypad) or F1 F2: -1 or +1 octave INSERT / BACKSPACE: Insert or Delete a line in current track or current selected block. LSHIFT + INSERT / BACKSPACE: Insert or Delete a line in current pattern DELETE (NOT BACKSPACE): Empty a column or a selected block. Blocks (Blocks can also be selected with the mouse by holding the right button and scrolling the pattern with the mouse wheel). LCTRL + A: Select entire current track LCTRL + LSHIFT + A: Select entire current pattern LALT + A: Select entire column note in a track LALT + LSHIFT + A: Select all notes of a track LCTRL + X: Cut the selected block and copy it into the block-buffer LCTRL + C: Copy the selected block into the block-buffer LCTRL + V: Paste the data from the block buffer into the pattern LCTRL + I: Interpolate selected data from the first to the last row of a selection LSHIFT + ARROWS PREV. PAGE NEXT PAGE: Select a block LCTRL + R: Randomize the select columns of a selection, works similar to CTRL + I (interpolating them) LCTRL + U: Transpose the note of a selection to 1 seminote higher LCTRL + D: Transpose the note of a selection to 1 seminote lower LCTRL + LSHIFT + U: Transpose the note of a selection to 1 seminote higher (only for the current instrument) LCTRL + LSHIFT + D: Transpose the note of a selection to 1 seminote lower (only for the current instrument) LCTRL + H: Transpose the note of a selection to 1 octave higher LCTRL + L: Transpose the note of a selection to 1 octave lower LCTRL + LSHIFT + H: Transpose the note of a selection to 1 octave higher (only for the current instrument) LCTRL + LSHIFT + L: Transpose the note of a selection to 1 octave lower (only for the current instrument) LCTRL + W: Save the current selection into a file Misc LALT + ENTER: Switch between full screen / windowed mode LALT + F4: Exit program (Windows only) LCTRL + S: Save current module LSHIFT + S: Switch top right panel to synths list LSHIFT + I: Switch top right panel to instruments list <pre> C-x xh xx xx hhhh Volume B-x xh xx xx hhhh Jump to A#x xh xx xx hhhh hhhh Slide F-x xh xx xx hhhh Tempo D-x xh xx xx hhhh Pattern Break G#x xh xx xx hhhh </pre> h Hex 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 d Dec 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 The Set Volume command: C. Input a note, then move the cursor to the effects command column and type a C. Play the pattern, and you shouldn't be able to hear the note you placed the C by. This is because the effect parameters are 00. Change the two zeros to a 40(Hex)/64(Dec), depending on what your tracker uses. Play back the pattern again, and the note should come in at full volume. The Position Jump command next. This is just a B followed by the position in the playing list that you want to jump to. One thing to remember is that the playing list always starts at 0, not 1. This command is usually in Hex. Onto the volume slide command: A. This is slightly more complex (much more if you're using a newer tracker, if you want to achieve the results here, then set slides to Amiga, not linear), due to the fact it depends on the secondary tempo. For now set a secondary tempo of 06 (you can play around later), load a long or looped sample and input a note or two. A few rows after a note type in the effect command A. For the parameters use 0F. Play back the pattern, and you should notice that when the effect kicks in, the sample drops to a very low volume very quickly. Change the effect parameters to F0, and use a low volume command on the note. Play back the pattern, and when the slide kicks in the volume of the note should increase very quickly. This because each part of the effect parameters for command A does a different thing. The first number slides the volume up, and the second slides it down. It's not recommended that you use both a volume up and volume down at the same time, due to the fact the tracker only looks for the first number that isn't set to 0. If you specify parameters of 8F, the tracker will see the 8, ignore the F, and slide the volume up. Using a slide up and down at same time just makes you look stupid. Don't do it... The Set Tempo command: F, is pretty easy to understand. You simply specify the BPM (in Hex) that you want to change to. One important thing to note is that values of lower than 20 (Hex) sets the secondary tempo rather than the primary. Another useful command is the Pattern Break: D. This will stop the playing of the current pattern and skip to the next one in the playing list. By using parameters of more than 00 you can also specify which line to begin playing from. Command 3 is Portamento to Note. This slides the currently playing note to another note, at a specified speed. The slide then stops when it reaches the desired note. <pre> C-2 1 000 - Starts the note playing --- 000 C-3 330 - Starts the slide to C-3 at a speed of 30. --- 300 - Continues the slide --- 300 - Continues the slide </pre> Once the parameters have been set, the command can be input again without any parameters, and it'll still perform the same function unless you change the parameters. This memory function allows certain commands to function correctly, such as command 5, which is the Portamento to Note and Volume Slide command. Once command 3 has been set up command 5 will simply take the parameters from that and perform a Portamento to Note. Any parameters set up for command 5 itself simply perform a Volume Slide identical to command A at the same time as the Portamento to Note. This memory function will only operate in the same channel where the original parameters were set up. There are various other commands which perform two functions at once. They will be described as we come across them. C-3 04 .. .. 09 00 ---> C-3 04 .. .. 09 00 C-3 04 .. .. 09 00 ---> C-3 04 .. .. 09 02 C-3 04 .. .. 09 00 ---> C-3 04 .. .. 09 05 C-3 04 .. .. 09 00 ---> C-3 04 .. .. 09 08 C-3 04 .. .. 09 00 ---> C-3 04 .. .. 09 0A C-3 04 .. .. 09 00 ---> C-3 04 .. .. 09 0D C-3 04 .. .. 09 10 ---> C-3 04 .. .. 09 10 (You can also switch on the Slider Rec to On, and perform parameter-live-recording, such as cutoff transitions, resonance or panning tweaking, etc..) Note: this command only works for volume/panning and fx datas columns. The next command we'll look at is the Portamento up/down: 1 and 2. Command 1 slides the pitch up at a specified speed, and 2 slides it down. This command works in a similar way to the volume slide, in that it is dependent on the secondary tempo. Both these commands have a memory dependent on each other, if you set the slide to a speed of 3 with the 1 command, a 2 command with no parameters will use the speed of 3 from the 1 command, and vice versa. Command 4 is Vibrato. Vibrato is basically rapid changes in pitch, just try it, and you'll see what I mean. Parameters are in the format of xy, where x is the speed of the slide, and y is the depth of the slide. One important point to remember is to keep your vibratos subtle and natural so a depth of 3 or less and a reasonably fast speed, around 8, is usually used. Setting the depth too high can make the part sound out of tune from the rest. Following on from command 4 is command 6. This is the Vibrato and Volume Slide command, and it has a memory like command 5, which you already know how to use. Command 7 is Tremolo. This is similar to vibrato. Rather than changing the pitch it slides the volume. The effect parameters are in exactly the same format. vibrato effect (0x1dxy) x = speed y = depth (can't be used if arpeggio (0x1b) is turned on) <pre> C-7 00 .. .. 1B37 <- Turn Arpeggio effect on --- .. .. .. 0000 --- .. .. .. 0000 --- .. .. .. 0000 --- .. .. .. 1B38 <- Change datas --- .. .. .. 0000 --- .. .. .. 0000 --- .. .. .. 0000 --- .. .. .. 1B00 <- Turn it off </pre> Command 9 is Sample Offset. This starts the playback of the sample from a different place than the start. The effect parameters specify the sample offset, but only very roughly. Say you have a sample which is 8765(Hex) bytes long, and you wanted it to play from position 4321(Hex). The effect parameter could only be as accurate as the 43 part, and it would ignore the 21. Command B is the Playing List/Order Jump command. The parameters specify the position in the Playing List/Order to jump to. When used in conjunction with command D you can specify the position and the line to play from. Command E is pretty complex, as it is used for a lot of different things, depending on what the first parameter is. Let's take a trip through each effect in order. Command E0 controls the hardware filter on an Amiga, which, as a low pass filter, cuts off the highest frequencies being played back. There are very few players and trackers on other system that simulate this function, not that you should need to use it. The second parameter, if set to 1, turns on the filter. If set to 0, the filter gets turned off. Commands E1/E2 are Fine Portamento Up/Down. Exactly the same functions as commands 1/2, except that they only slide the pitch by a very small amount. These commands have a memory the same as 1/2 as well. Command E3 sets the Glissando control. If parameters are set to 1 then when using command 3, any sliding will only use the notes in between the original note and the note being slid to. This produces a somewhat jumpier slide than usual. The best way to understand is to try it out for yourself. Produce a slow slide with command 3, listen to it, and then try using E31. Command E4 is the Set Vibrato Waveform control. This command controls how the vibrato command slides the pitch. Parameters are 0 - Sine, 1 - Ramp Down (Saw), 2 - Square. By adding 4 to the parameters, the waveform will not be restarted when a new note is played e.g. 5 - Sine without restart. Command E5 sets the Fine Tune of the instrument being played, but only for the particular note being played. It will override the default Fine Tune for the instrument. The parameters range from 0 to F, with 0 being -8 and F being +8 Fine Tune. A parameter of 8 gives no Fine Tune. If you're using a newer tracker that supports more than -8 to +8 e.g. -128 to +128, these parameters will give a rough Fine Tune, accurate to the nearest 16. Command E6 is the Jump Loop command. You mark the beginning of the part of a pattern that you want to loop with E60, and then specify with E6x the end of the loop, where x is the number of times you want it to loop. Command E7 is the Set Tremolo Waveform control. This has exactly the same parameters as command E4, except that it works for Tremolo rather than Vibrato. Command E9 is for Retriggering the note quickly. The parameter specifies the interval between the retrigs. Use a value of less than the current secondary tempo, or else the note will not get retrigged. Command EA/B are for Fine Volume Slide Up/Down. Much the same as the normal Volume Slides, except that these are easier to control since they don't depend on the secondary tempo. The parameters specify the amount to slide by e.g. if you have a sample playing at a volume of 08 (Hex) then the effect EA1 will slide this volume to 09 (Hex). A subsequent effect of EB4 would slide this volume down to 05 (Hex). Command EC is the Note Cut. This sets the volume of the currently playing note to 0 at a specified tick. The parameters should be lower than the secondary tempo or else the effect won't work. Command ED is the Note Delay. This should be used at the same time as a note is to be played, and the parameters will specify the number of ticks to delay playing the note. Again, keep the parameters lower than the secondary tempo, or the note won't get played! Command EE is the Pattern Delay. This delays the pattern for the amount of time it would take to play a certain number of rows. The parameters specify how many rows to delay for. Command EF is the Funk Repeat command. Set the sample loop to 0-1000. When EFx is used, the loop will be moved to 1000- 2000, then to 2000-3000 etc. After 9000-10000 the loop is set back to 0- 1000. The speed of the loop "movement" is defined by x. E is two times as slow as F, D is three times as slow as F etc. EF0 will turn the Funk Repeat off and reset the loop (to 0-1000). effects 0x41 and 0x42 to control the volumes of the 2 303 units There is a dedicated panel for synth parameter editing with coherent sections (osc, filter modulation, routing, so on) the interface is much nicer, much better to navigate with customizable colors, the reverb is now customizable (10 delay lines), It accepts newer types of Waves (higher bit rates, at least 24). Has a replay routine. It's pretty much your basic VA synth. The problem isn't with the sampler being to high it's the synth is tuned two octaves too low, but if you want your samples tuned down just set the base note down 2 octaves (in the instrument panel). so the synth is basically divided into 3 sections from left to right: oscillators/envelopes, then filter and LFO's, and in the right column you have mod routings and global settings. for the oscillator section you have two normal oscillators (sine, saw, square, noise), the second of which is tunable, the first one tunes with the key pressed. Attached to OSC 1 is a sub-oscillator, which is a sawtooth wave tuned one octave down. The phase modulation controls the point in the duty cycle at which the oscillator starts. The ADSR envelope sliders (grouped with oscs) are for modulation envelope 1 and 2 respectively. you can use the synth as a sampler by choosing the instrument at the top. In the filter column, the filter settings are: 1 = lowpass, 2 = highpass, 3 = off. cutoff and resonance. For the LFOs they are LFO 1 and LFO 2, the ADSR sliders in those are for the LFO itself. For the modulation routings you have ENV 1, LFO 1 for the first slider and ENV 2, LFO 2 for the second, you can cycle through the individual routings there, and you can route each modulation source to multiple destinations of course, which is another big plus for this synth. Finally the glide time is for portamento and master volume, well, the master volume... it can go quite loud. The sequencer is changed too, It's more like the one in AXS if you've used that, where you can mute tracks to re-use patterns with variation. <pre> Support for the following modules formats: 669 (Composer 669, Unis 669), AMF (DSMI Advanced Module Format), AMF (ASYLUM Music Format V1.0), APUN (APlayer), DSM (DSIK internal format), FAR (Farandole Composer), GDM (General DigiMusic), IT (Impulse Tracker), IMF (Imago Orpheus), MOD (15 and 31 instruments), MED (OctaMED), MTM (MultiTracker Module editor), OKT (Amiga Oktalyzer), S3M (Scream Tracker 3), STM (Scream Tracker), STX (Scream Tracker Music Interface Kit), ULT (UltraTracker), UNI (MikMod), XM (FastTracker 2), Mid (midi format via timidity) </pre> Possible plugin options include [http://lv2plug.in/ LV2], ====Midi - Musical Instrument Digital Interface==== A midi file typically contains music that plays on up to 16 channels (as per the midi standard), but many notes can simultaneously play on each channel (depending on the limit of the midi hardware playing it). '''Timidity''' Although usually already installed, you can uncompress the [http://www.libsdl.org/projects/SDL_mixer/ timidity.tar.gz (14MB)] into a suitable drawer like below's SYS:Extras/Audio/ assign timidity: SYS:Extras/Audio/timidity added to SYSːs/User-Startup '''WildMidi playback''' '''Audio Evolution 4 (2003) 4.0.23 (from 2012)''' *Sync Menu - CAMD Receive, Send checked *Options Menu - MIDI Machine Control - Midi Bar Display - Select CAMD MIDI in / out - Midi Remote Setup MCB Master Control Bus *Sending a MIDI start-command and a Song Position Pointer, you can synchronize audio with an external MIDI sequencer (like B&P). *B&P Receive, start AE, add AudioEvolution.ptool in Bars&Pipes track, press play / record in AE then press play in Pipes *CAMD Receive, receive MIDI start or continue commands via camd.library sync to AE *MIDI Machine Control *Midi Bar Display *Select CAMD MIDI in / out *Midi Remote Setup - open requester for external MIDI controllers to control app mixer and transport controls cc remotely Channel - mixer(vol, pan, mute, solo), eq, aux, fx, Subgroup - Volume, Mute, Solo Transport - Start, End, Play, Stop, Record, Rewind, Forward Misc - Master vol., Bank Down, Bank up <pre> q - quit First 3 already opened when AE started F1 - timeline window F2 - mixer F3 - control F4 - subgroups F5 - aux returns F6 - sample list i - Load sample to use space - start/stop play b - reset time 0:00 s - split mode r - open recording window a - automation edit mode with p panning, m mute and v volume [ / ] - zoom in / out : - previous track * - next track x c v f - cut copy paste cross-fade g - snap grid </pre> '''[http://bnp.hansfaust.de/ Bars n Pipes sequencer]''' BarsnPipes debug ... in shell Menu (right mouse) *Song - Songs load and save in .song format but option here to load/save Midi_Files .mid in FORMAT0 or FORMAT1 *Track - *Edit - *Tool - *Timing - SMTPE Synchronizing *Windows - *Preferences - Multiple MIDI-in option Windows (some of these are usually already opened when Bars n Pipes starts up for the first time) *Workflow -> Tracks, .... Song Construction, Time-line Scoring, Media Madness, Mix Maestro, *Control -> Transport (or mini one), Windows (which collects all the Windows icons together-shortcut), .... Toolbox, Accessories, Metronome, Once you have your windows placed on the screen that suits your workflow, Song -> Save as Default will save the positions, colors, icons, etc as you'd like them If you need a particular setup of Tracks, Tools, Tempos etc, you save them all as a new song you can load each time Right mouse menu -> Preferences -> Environment... -> ScreenMode - Linkages for Synch (to Slave) usbmidi.out.0 and Send (Master) usbmidi.in.0 - Clock MTC '''Tracks''' #Double-click on B&P's icon. B&P will then open with an empty Song. You can also double-click on a song icon to open a song in B&P. #Choose a track. The B&P screen will contain a Tracks Window with a number of tracks shown as pipelines (Track 1, Track 2, etc...). To choose a track, simply click on the gray box to show an arrow-icon to highlight it. This icon show whether a track is chosen or not. To the right of the arrow-icon, you can see the icon for the midi-input. If you double-click on this icon you can change the MIDI-in setup. #Choose Record for the track. To the right of the MIDI-input channel icon you can see a pipe. This leads to another clickable icon with that shows either P, R or M. This stands for Play, Record or Merge. To change the icon, simply click on it. If you choose P, this track can only play the track (you can't record anything). If you choose R, you can record what you play and it overwrites old stuff in the track. If you choose M, you merge new records with old stuff in the track. Choose R now to be able to make a record. #Chose MIDI-channel. On the most right part of the track you can see an icon with a number in it. This is the MIDI-channel selector. Here you must choose a MIDI-channel that is available on your synthesizer/keyboard. If you choose General MIDI channel 10, most synthesizer will play drum sounds. To the left of this icon is the MIDI-output icon. Double-click on this icon to change the MIDI-output configuration. #Start recording. The next step is to start recording. You must then find the control buttons (they look like buttons on a CD-player). To be able to make a record. you must click on the R icon. You can simply now press the play button (after you have pressed the R button) and play something on you keyboard. To playback your composition, press the Play button on the control panel. #Edit track. To edit a track, you simply double click in the middle part of a track. You will then get a new window containing the track, where you can change what you have recorded using tools provided. Take also a look in the drop-down menus for more features. Videos to help understand [https://www.youtube.com/watch?v=A6gVTX-9900 small intro], [https://www.youtube.com/watch?v=abq_rUTiSA4&t=3s Overview], [https://www.youtube.com/watch?v=ixOVutKsYQo Workplace Setup CC PC Sysex], [https://www.youtube.com/watch?v=dDnJLYPaZTs Import Song], [https://www.youtube.com/watch?v=BC3kkzPLkv4 Tempo Mapping], [https://www.youtube.com/watch?v=sd23kqMYPDs ptool Arpeggi-8], [https://www.youtube.com/watch?v=LDJq-YxgwQg PlayMidi Song], [https://www.youtube.com/watch?v=DY9Pu5P9TaU Amiga Midi], [https://www.youtube.com/watch?v=abq_rUTiSA4 Learning Amiga bars and Pipes], Groups like [https://groups.io/g/barsnpipes/topics this] could help '''Tracks window''' * blue "1 2 3 4 5 6 7 8 Group" and transport tape deck VCR-type controls * Flags * [http://theproblem.alco-rhythm.com/org/bp.html Track 1, Track2, to Track 16, on each Track there are many options that can be activated] Each Track has a *Left LHS - Click in grey box to select what Track to work on, Midi-In ptool icon should be here (5pin plug icon), and many more from the Toolbox on the Input Pipeline *Middle - (P, R, M) Play, Record, Merge/Multi before the sequencer line and a blue/red/yellow (Thru Mute Play) Tap *Right RHS - Output pipeline, can have icons placed uopn it with the final ptool icon(s) being the 5pin icon symbol for Midi-OUT Clogged pipelines may need Esc pressed several times '''Toolbox (tools affect the chosen pipeline)''' After opening the Toolbox window you can add extra Tools (.ptool) for the pipelines like keyboard(virtual), midimonitor, quick patch, transpose, triad, (un)quantize, feedback in/out, velocity etc right mouse -> Toolbox menu option -> Install Tool... and navigate to Tool drawer (folder) and select requried .ptool Accompany B tool to get some sort of rythmic accompaniment, Rythm Section and Groove Quantize are examples of other tools that make use of rythms [https://aminet.net/search?query=bars Bars & Pipes pattern format .ptrn] for drawer (folder). Load from the Menu as Track or Group '''Accessories (affect the whole app)''' Accessories -> Install... and goto the Accessories drawer for .paccess like adding ARexx scripting support '''Song Construction''' <pre> F1 Pencil F2 Magic Wand F3 Hand F4 Duplicator F5 Eraser F6 Toolpad F7 Bounding box F8 Lock to A-B-A A-B-A strip, section, edit flags, white boxes, </pre> Bars&Pipes Professional offers three track formats; basic song tracks, linear tracks — which don't loop — and finally real‑time tracks. The difference between them is that both song and linear tracks respond to tempo changes, while real‑time tracks use absolute timing, always trigger at the same instant regardless of tempo alterations '''Tempo Map''' F1 Pencil F2 Magic Wand F3 Hand F4 Eraser F5 Curve F6 Toolpad Compositions Lyrics, Key, Rhythm, Time Signature '''Master Parameters''' Key, Scale/Mode '''Track Parameters''' Dynamics '''Time-line Scoring''' '''Media Madness''' '''Mix Maestro''' *ACCESSORIES Allows the importation of other packages and additional modules *CLIPBOARD Full cut, copy and paste operations, enabling user‑definable clips to be shared between tracks. *INFORMATION A complete rundown on the state of the current production and your machine. *MASTER PARAMETERS Enables global definition of time signatures, lyrics, scales, chords, dynamics and rhythm changes. *MEDIA MADNESS A complete multimedia sequencer which allows samples, stills, animation, etc *METRONOME Tempo feedback via MIDI, internal Amiga audio and colour cycling — all three can be mixed and matched as required. *MIX MAESTRO Completely automated mixdown with control for both volume and pan. All fader alterations are memorised by the software *RECORD ACTIVATION Complete specification of the data to be recorded/merged. Allows overdubbing of pitch‑bend, program changes, modulation etc *SET FLAGS Numeric positioning of location and edit flags in either SMPTE or musical time *SONG CONSTRUCTION Large‑scale cut and paste of individual measures, verses or chorus, by means of bounding box and drag‑n‑drop mouse selections *TEMPO MAP Tempo change using a variety of linear and non‑linear transition curves *TEMPO PALETTE Instant tempo changes courtesy of four user‑definable settings. *TIMELINE SCORING Sequencing of a selection of songs over a defined period — ideal for planning an entire set for a live performance. *TOOLBOX Selection screen for the hundreds of signal‑processing tools available *TRACKS Opens the main track window to enable recording, editing and the use of tools. *TRANSPORT Main playback control window, which also provides access to user‑ defined flags, loop and punch‑in record modes. Bars and Pipes Pro 2.5 is using internal 4-Byte IDs, to check which kind of data are currently processed. Especially in all its files the IDs play an important role. The IDs are stored into the file in the same order they are laid out in the memory. In a Bars 'N' Pipes file (no matter which kind) the ID "NAME" (saved as its ANSI-values) is stored on a big endian system (68k-computer) as "NAME". On a little endian system (x86 PC computer) as "EMAN". The target is to make the AROS-BnP compatible to songs, which were stored on a 68k computer (AMIGA). If possible, setting MIDI channels for Local Control for your keyboard http://www.fromwithin.com/liquidmidi/archive.shtml MIDI files are essentially a stream of event data. An event can be many things, but typically "note on", "note off", "program change", "controller change", or messages that instruct a MIDI compatible synth how to play a given bit of music. * Channel - 1 to 16 - * Messages - PC presets, CC effects like delays, reverbs, etc * Sequencing - MIDI instruments, Drums, Sound design, * Recording - * GUI - Piano roll or Tracker, Staves and Notes MIDI events/messages like step entry e.g. Note On, Note Off MIDI events/messages like PB, PC, CC, Mono and Poly After-Touch, Sysex, etc MIDI sync - Midi Clocks (SPS Measures), Midi Time Code (h, m, s and frames) SMPTE Individual track editing with audition edits so easier to test any changes. Possible to stop track playback, mix clips from the right edit flag and scroll the display using arrow keys. Step entry, to extend a selected note hit the space bar and the note grows accordingly. Ability to cancel mouse‑driven edits by simply clicking the right mouse button — at which point everything snaps back into its original form. Lyrics can now be put in with syllable dividers, even across an entire measure or section. Autoranging when you open a edit window, the notes are automatically displayed — working from the lowest upwards. Flag editing, shift‑click on a flag immediately open the bounds window, ready for numeric input. Ability to cancel edits using the right‑hand mouse button, plus much improved Bounding Box operations. Icons other than the BarsnPipes icon -> PUBSCREEN=BarsnPipes (cannot choose modes higher than 8bit 256 colors) Preferences -> Menu in Tracks window - Send MIDI defaults OFF Prefs -> Environment -> screenmode (saved to BarsnPipes.prefs binary file) Customization -> pics in gui drawer (folder) - Can save as .song files and .mid General Midi SMF is a “Standard Midi File” ([http://www.music.mcgill.ca/~ich/classes/mumt306/StandardMIDIfileformat.html SMF0, SMF1 and SMF2]), [https://github.com/stump/libsmf libsmf], [https://github.com/markc/midicomp MIDIcomp], [https://github.com/MajicDesigns/MD_MIDIFile C++ src], [], [https://github.com/newdigate/midi-smf-reader Midi player], * SMF0 All MIDI data is stored in one track only, separated exclusively by the MIDI channel. * SMF1 The MIDI data is stored in separate tracks/channels. * SMF2 (rarely used) The MIDI data is stored in separate tracks, which are additionally wrapped in containers, so it's possible to have e.g. several tracks using the same MIDI channels. Would it be possible to enrich Bars N’Pipes with software synth and sample support along with audio recording and mastering tools like in the named MAC or PC music sequencers? On the classic AMIGA-OS this is not possible because of missing CPU-power. The hardware of the classic AMIGA is not further developed. So we must say (unfortunately) that those dreams can’t become reality BarsnPipes is best used with external MIDI-equipment. This can be a keyboard or synthesizer with MIDI-connectors. <pre> MIDI can control 16 channels There are USB-MIDI-Interfaces on the market with 16 independent MIDI-lines (multi-port), which can handle 16 MIDI devices independently – 16×16 = 256 independent MIDI-channels or instruments handle up to 16 different USB-MIDI-Interfaces (multi-device). That is: 16X16X16 = 4096 independent MIDI-channels – theoretically </pre> <pre> Librarian MIDI SYStem EXplorer (sysex) - PatchEditor and used to be supplied as a separate program like PatchMeister but currently not at present It should support MIDI.library (PD), BlueRibbon.library (B&P), TriplePlayPlus, and CAMD.library (DeluxeMusic) and MIDI information from a device's user manual and configure a custom interface to access parameters for all MIDI products connected to the system Supports ALL MIDI events and the Patch/Librarian data is stored in MIDI standard format Annette M.Crowling, Missing Link Software, Inc. </pre> Composers <pre> [https://x.com/hirasawa/status/1403686519899054086 Susumu Hirasawa] </pre> <pre> 1988 Todor Fay and his wife Melissa Jordan Gray, who founded the Blue Ribbon Inc 1992 Bars&Pipes Pro published November 2000, Todor Fay announcement to release the sourcecode of Bars&Pipes Pro 2.5c beta end of May 2001, the source of the main program and the sources of some tools and accessories were in a complete and compileable state end of October 2009 stop further development of BarsnPipes New for now on all supported systems and made freeware 2013 Alfred Faust diagnosed with incureable illness, called „Myastenia gravis“ (weak muscles) </pre> Protrekkr How to use Midi In/Out in Protrekkr ? First of all, midi in & out capabilities of this program are rather limited. # Go to Misc. Setup section and select a midi in or out device to use (ptk only supports one device at a time). # Go to instrument section, and select a MIDI PRG (the default is N/A, which means no midi program selected). # Go to track section and here you can assign a midi channel to each track of ptk. # Play notes :]. Note off works. F'x' note cut command also works too, and note-volume command (speed) is supported. Also, you can change midicontrollers in the tracker, using '90' in the panning row: <pre> C-3 02 .. .. 0000.... --- .. .. 90 xxyy.... << This will set the value --- .. .. .. 0000.... of the controller n.'xx' to 'yy' (both in hex) --- .. .. .. 0000.... </pre> So "--- .. .. 90 2040...." will set the controller number $20(32) to $40(64). You will need the midi implementation table of your gear to know what you can change with midi controller messages. N.B. Not all MIDI devices are created equal! Although the MIDI specification defines a large range of MIDI messages of various kinds, not every MIDI device is required to work in exactly the same way and respond to all the available messages and ways of working. For example, we don't expect a wind synthesiser to work in the same way as a home keyboard. Some devices, the older ones perhaps, are only able to respond to a single channel. With some of those devices that channel can be altered from the default of 1 (probably) to another channel of the 16 possible. Other devices, for instance monophonic synthesisers, are capable of producing just one note at a time, on one MIDI channel. Others can produce many notes spread across many channels. Further devices can respond to, and transmit, "breath controller" data (MIDI controller number 2 (CC#2)) others may respond to the reception of CC#2 but not be able to create and to send it. A controller keyboard may be capable of sending "expression pedal" data, but another device may not be capable of responding to that message. Some devices just have the basic GM sound set. The "voice" or "instrument" is selected using a "Program Change" message on its own. Other devices have a greater selection of voices, usually arranged in "banks", and the choice of instrument is made by responding to "Bank Select MSB" (MIDI controller 0 (CC#0)), others use "Bank Select LSB" (MIDI controller number 32 (CC#32)), yet others use both MSB and LSB sent one after the other, all followed by the Program Change message. The detailed information about all the different voices will usually be available in a published MIDI Data List. MIDI Implementation Chart But in the User Manual there is sometimes a summary of how the device works, in terms of MIDI, in the chart at the back of the manual, the MIDI Implementation Chart. If you require two devices to work together you can compare the two implementation charts to see if they are "compatible". In order to do this we will need to interpret that chart. The chart is divided into four columns headed "Function", "Transmitted" (or "Tx"), "Received" (or "Rx"), or more correctly "Recognised", and finally, "Remarks". <pre> The left hand column defines which MIDI functions are being described. The 2nd column defines what the device in question is capable of transmitting to another device. The 3rd column defines what the device is capable of responding to. The 4th column is for explanations of the values contained within these previous two columns. </pre> There should then be twelve sections, with possibly a thirteenth containing extra "Notes". Finally there should be an explanation of the four MIDI "modes" and what the "X" and the "O" mean. <pre> Mode 1: Omni On, Poly; Mode 2: Omni On, Mono; Mode 3: Omni Off, Poly; Mode 4: Omni Off, Mono. </pre> O means "yes" (implemented), X means "no" (not implemented). Sometimes you will find a row of asterisks "**************", these seem to indicate that the data is not applicable in this case. Seen in the transmitted field only (unless you've seen otherwise). Lastly you may find against some entries an asterisk followed by a number e.g. *1, these will refer you to further information, often on a following page, giving more detail. Basic Channel But the very first set of boxes will tell us the "Basic Channel(s)" that the device sends or receives on. "Default" is what happens when the device is first turned on, "changed" is what a switch of some kind may allow the device to be set to. For many devices e.g. a GM sound module or a home keyboard, this would be 1-16 for both. That is it can handle sending and receiving on all MIDI channels. On other devices, for example a synthesiser, it may by default only work on channel 1. But the keyboard could be "split" with the lower notes e.g. on channel 2. If the synth has an arppegiator, this may be able to be set to transmit and or receive on yet another channel. So we might see the default as "1" but the changed as "1-16". Modes. We need to understand Omni On and Off, and Mono and Poly, then we can decipher the four modes. But first we need to understand that any of these four Mode messages can be sent to any MIDI channel. They don't necessarily apply to the whole device. If we send an "Omni On" message (CC#125) to a MIDI channel of a device, we are, in effect, asking it to respond to e.g. a Note On / Off message pair, received on any of the sixteen channels. Sound strange? Read it again. Still strange? It certainly is. We normally want a MIDI channel to respond only to Note On / Off messages sent on that channel, not any other. In other words, "Omni Off". So "Omni Off" (CC#124) tells a channel of our MIDI device to respond only to messages sent on that MIDI channel. "Poly" (CC#127) is for e.g. a channel of a polyphonic sound module, or a home keyboard, to be able to respond to many simultaneous Note On / Off message pairs at once and produce musical chords. "Mono" (CC#126) allows us to set a channel to respond as if it were e.g. a flute or a trumpet, playing just one note at a time. If the device is capable of it, then the overlapping of notes will produce legato playing, that is the attack portion of the second note of two overlapping notes will be removed resulting in a "smoother" transition. So a channel with a piano voice assigned to it will have Omni Off, Poly On (Mode 3), a channel with a saxophone voice assigned could be Omni Off, Mono On (Mode 4). We call these combinations the four modes, 1 to 4, as defined above. Most modern devices will have their channels set to Mode 3 (Omni Off, Poly) but be switchable, on a per channel basis, to Mode 4 (Omni Off, Mono). This second section of data will include first its default value i.e. upon device switch on. Then what Mode messages are acceptable, or X if none. Finally, in the "Altered" field, how a Mode message that can't be implemented will be interpreted. Usually there will just be a row of asterisks effectively meaning nothing will be done if you try to switch to an unimplemented mode. Note Number <pre> The next row will tell us which MIDI notes the device can send or receive, normally 0-127. The second line, "True Voice" has the following in the MIDI specification: "Range of received note numbers falling within the range of true notes produced by the instrument." My interpretation is that, for instance, a MIDI piano may be capable of sending all MIDI notes (0 to 127) by transposition, but only responding to the 88 notes (21 to 108) of a real piano. </pre> Velocity This will tell us whether the device we're looking at will handle note velocity, and what range from 1-127, or maybe just 64, it transmits or will recognise. So usually "O" plus a range or "X" for not implemented. After touch This may have one or two lines two it. If a one liner the either "O" or "X", yes or no. If a two liner then it may include "Keys" or "Poly" and "Channel". This will show whether the device will respond to Polyphonic after touch or channel after touch or neither. Pitch Bend Again "O" for implemented, "X" for not implemented. (Many stage pianos will have no pitch bend capability.) It may also, in the notes section, state whether it will respond to the full 14 bits, or not, as usually encoded by the pitch bend wheel. Control Change This is likely to be the largest section of the chart. It will list all those controllers, starting from CC#0, Bank Select MSB, which the device is capable of sending, and those that it will respond to using "O" or "X" respectively. You will, almost certainly, get some further explanation of functionality in the remarks column, or in more detail elsewhere in the documentation. Of course you will need to know what all the various controller numbers do. Lots of the official technical specifications can be found at the [www.midi.org/techspecs/ MMA], with the table of messages and control change [www.midi.org/techspecs/midimessages.php message numbers] Program Change Again "O" or "X" in the Transmitted or Recognised column to indicate whether or not the feature is implemented. In addition a range of numbers is shown, typically 0-127, to show what is available. True # (number): "The range of the program change numbers which correspond to the actual number of patches selected." System Exclusive Used to indicate whether or not the device can send or recognise System Exclusive messages. A short description is often given in the Remarks field followed by a detailed explanation elsewhere in the documentation. System Common - These include the following: <pre> MIDI Time Code Quarter Frame messages (device synchronisation). Song Position Pointer Song Select Tune Request </pre> The section will indicate whether or not the device can send or respond to any of these messages. System Real Time These include the following: <pre> Timing Clock - often just written as "Clock" Start Stop Continue </pre> These three are usually just referred to as "Commands" and listed. Again the section will indicate which, if any, of these messages the device can send or respond to. <pre> Aux. Messages Again "O" or "X" for implemented or not. Aux. = Auxiliary. Active Sense = Active Sensing. </pre> Often with an explanation of the action of the device. Notes The "Notes" section can contain any additional comments to clarify the particular implementation. Some of the explanations have been drawn directly from the MMA MIDI 1.0 Detailed Specification. And the detailed explanation of some of the functions will be found there, or in the General MIDI System Level 1 or General MIDI System Level 2 documents also published by the MMA. OFFICIAL MIDI SPECIFICATIONS SUMMARY OF MIDI MESSAGES Table 1 - Summary of MIDI Messages The following table lists the major MIDI messages in numerical (binary) order (adapted from "MIDI by the Numbers" by D. Valenti, Electronic Musician 2/88, and updated by the MIDI Manufacturers Association.). This table is intended as an overview of MIDI, and is by no means complete. WARNING! Details about implementing these messages can dramatically impact compatibility with other products. We strongly recommend consulting the official MIDI Specifications for additional information. MIDI 1.0 Specification Message Summary Channel Voice Messages [nnnn = 0-15 (MIDI Channel Number 1-16)] {| class="wikitable sortable" width="90%" ! width="10%" |Status D7----D0 ! width="10%" |Data Byte(s) D7----D0 ! width="20%" |Description |- |<!--Status-->1000nnnn || <!--Data-->0kkkkkkk 0vvvvvvv || <!--Description-->Note Off event. This message is sent when a note is released (ended). (kkkkkkk) is the key (note) number. (vvvvvvv) is the velocity. |- |<!--Status-->1001nnnn || <!--Data-->0kkkkkkk 0vvvvvvv || <!--Description-->Note On event. This message is sent when a note is depressed (start). (kkkkkkk) is the key (note) number. (vvvvvvv) is the velocity. |- |<!--Status-->1010nnnn || <!--Data-->0kkkkkkk 0vvvvvvv || <!--Description-->Polyphonic Key Pressure (Aftertouch). This message is most often sent by pressing down on the key after it "bottoms out". (kkkkkkk) is the key (note) number. (vvvvvvv) is the pressure value. |- |<!--Status-->1011nnnn || <!--Data-->0ccccccc 0vvvvvvv || <!--Description-->Control Change. This message is sent when a controller value changes. Controllers include devices such as pedals and levers. Controller numbers 120-127 are reserved as "Channel Mode Messages" (below). (ccccccc) is the controller number (0-119). (vvvvvvv) is the controller value (0-127). |- |<!--Status-->1100nnnn || <!--Data-->0ppppppp || <!--Description-->Program Change. This message sent when the patch number changes. (ppppppp) is the new program number. |- |<!--Status-->1101nnnn || <!--Data-->0vvvvvvv || <!--Description-->Channel Pressure (After-touch). This message is most often sent by pressing down on the key after it "bottoms out". This message is different from polyphonic after-touch. Use this message to send the single greatest pressure value (of all the current depressed keys). (vvvvvvv) is the pressure value. |- |<!--Status-->1110nnnn || <!--Data-->0lllllll 0mmmmmmm || <!--Description-->Pitch Bend Change. This message is sent to indicate a change in the pitch bender (wheel or lever, typically). The pitch bender is measured by a fourteen bit value. Center (no pitch change) is 2000H. Sensitivity is a function of the receiver, but may be set using RPN 0. (lllllll) are the least significant 7 bits. (mmmmmmm) are the most significant 7 bits. |} Channel Mode Messages (See also Control Change, above) {| class="wikitable sortable" width="90%" ! width="10%" |Status D7----D0 ! width="10%" |Data Byte(s) D7----D0 ! width="20%" |Description |- |<!--Status-->1011nnnn || <!--Data-->0ccccccc 0vvvvvvv || <!--Description-->Channel Mode Messages. This the same code as the Control Change (above), but implements Mode control and special message by using reserved controller numbers 120-127. The commands are: *All Sound Off. When All Sound Off is received all oscillators will turn off, and their volume envelopes are set to zero as soon as possible c = 120, v = 0: All Sound Off *Reset All Controllers. When Reset All Controllers is received, all controller values are reset to their default values. (See specific Recommended Practices for defaults) c = 121, v = x: Value must only be zero unless otherwise allowed in a specific Recommended Practice. *Local Control. When Local Control is Off, all devices on a given channel will respond only to data received over MIDI. Played data, etc. will be ignored. Local Control On restores the functions of the normal controllers. c = 122, v = 0: Local Control Off c = 122, v = 127: Local Control On * All Notes Off. When an All Notes Off is received, all oscillators will turn off. c = 123, v = 0: All Notes Off (See text for description of actual mode commands.) c = 124, v = 0: Omni Mode Off c = 125, v = 0: Omni Mode On c = 126, v = M: Mono Mode On (Poly Off) where M is the number of channels (Omni Off) or 0 (Omni On) c = 127, v = 0: Poly Mode On (Mono Off) (Note: These four messages also cause All Notes Off) |} System Common Messages System Messages (0xF0) The final status nybble is a “catch all” for data that doesn’t fit the other statuses. They all use the most significant nybble (4bits) of 0xF, with the least significant nybble indicating the specific category. The messages are denoted when the MSB of the second nybble is 1. When that bit is a 0, the messages fall into two other subcategories. System Common If the MSB of the second second nybble (4 bits) is not set, this indicates a System Common message. Most of these are messages that include some additional data bytes. System Common Messages Type Status Byte Number of Data Bytes Usage <pre> Time Code Quarter Frame 0xF1 1 Indicates timing using absolute time code, primarily for synthronization with video playback systems. A single location requires eight messages to send the location in an encoded hours:minutes:seconds:frames format*. Song Position 0xF2 2 Instructs a sequencer to jump to a new position in the song. The data bytes form a 14-bit value that expresses the location as the number of sixteenth notes from the start of the song. Song Select 0xF3 1 Instructs a sequencer to select a new song. The data byte indicates the song. Undefined 0xF4 0 Undefined 0xF5 0 Tune Request 0xF6 0 Requests that the receiver retunes itself**. </pre> *MIDI Time Code (MTC) is significantly complex. Please see the MIDI Specification **While modern digital instruments are good at staying in tune, older analog synthesizers were prone to tuning drift. Some analog synthesizers had an automatic tuning operation that could be initiated with this command. System Exclusive If you’ve been keeping track, you’ll notice there are two status bytes not yet defined: 0xf0 and 0xf7. These are used by the System Exclusive message, often abbreviated at SysEx. SysEx provides a path to send arbitrary data over a MIDI connection. There is a group of predefined messages for complex data, like fine grained control of MIDI Time code machinery. SysEx is also used to send manufacturer defined data, such as patches, or even firmware updates. System Exclusive messages are longer than other MIDI messages, and can be any length. The messages are of the following format: 0xF0, 0xID, 0xdd, ...... 0xF7 The message is bookended with distinct bytes. It opens with the Start Of Exclusive (SOX) data byte, 0xF0. The next one to three bytes after the start are an identifier. Values from 0x01 to 0x7C are one-byte vendor IDs, assigned to manufacturers who were involved with MIDI at the beginning. If the ID is 0x00, it’s a three-byte vendor ID - the next two bytes of the message are the value. <pre> ID 0x7D is a placeholder for non-commercial entities. ID 0x7E indicates a predefined Non-realtime SysEx message. ID 0x7F indicates a predefined Realtime SysEx message. </pre> After the ID is the data payload, sent as a stream of bytes. The transfer concludes with the End of Exclusive (EOX) byte, 0xF7. The payload data must follow the guidelines for MIDI data bytes – the MSB must not be set, so only 7 bits per byte are actually usable. If the MSB is set, it falls into three possible scenarios. An End of Exclusive byte marks the ordinary termination of the SysEx transfer. System Real Time messages may occur within the transfer without interrupting it. The recipient should handle them independently of the SysEx transfer. Other status bytes implicitly terminate the SysEx transfer and signal the start of new messages. Some inexpensive USB-to-MIDI interfaces aren’t capable of handling messages longer than four bytes. {| class="wikitable sortable" width="90%" ! width="10%" |Status D7----D0 ! width="10%" |Data Byte(s) D7----D0 ! width="20%" |Description |- |<!--Status-->11110000 || <!--Data-->0iiiiiii [0iiiiiii 0iiiiiii] 0ddddddd --- --- 0ddddddd 11110111 || <!--Description-->System Exclusive. This message type allows manufacturers to create their own messages (such as bulk dumps, patch parameters, and other non-spec data) and provides a mechanism for creating additional MIDI Specification messages. The Manufacturer's ID code (assigned by MMA or AMEI) is either 1 byte (0iiiiiii) or 3 bytes (0iiiiiii 0iiiiiii 0iiiiiii). Two of the 1 Byte IDs are reserved for extensions called Universal Exclusive Messages, which are not manufacturer-specific. If a device recognizes the ID code as its own (or as a supported Universal message) it will listen to the rest of the message (0ddddddd). Otherwise, the message will be ignored. (Note: Only Real-Time messages may be interleaved with a System Exclusive.) |- |<!--Status-->11110001 || <!--Data-->0nnndddd || <!--Description-->MIDI Time Code Quarter Frame. nnn = Message Type dddd = Values |- |<!--Status-->11110010 || <!--Data-->0lllllll 0mmmmmmm || <!--Description-->Song Position Pointer. This is an internal 14 bit register that holds the number of MIDI beats (1 beat= six MIDI clocks) since the start of the song. l is the LSB, m the MSB. |- |<!--Status-->11110011 || <!--Data-->0sssssss || <!--Description-->Song Select. The Song Select specifies which sequence or song is to be played. |- |<!--Status-->11110100 || <!--Data--> || <!--Description-->Undefined. (Reserved) |- |<!--Status-->11110101 || <!--Data--> || <!--Description-->Undefined. (Reserved) |- |<!--Status-->11110110 || <!--Data--> || <!--Description-->Tune Request. Upon receiving a Tune Request, all analog synthesizers should tune their oscillators. |- |<!--Status-->11110111 || <!--Data--> || <!--Description-->End of Exclusive. Used to terminate a System Exclusive dump. |} System Real-Time Messages {| class="wikitable sortable" width="90%" ! width="10%" |Status D7----D0 ! width="10%" |Data Byte(s) D7----D0 ! width="20%" |Description |- |<!--Status-->11111000 || <!--Data--> || <!--Description-->Timing Clock. Sent 24 times per quarter note when synchronization is required. |- |<!--Status-->11111001 || <!--Data--> || <!--Description-->Undefined. (Reserved) |- |<!--Status-->11111010 || <!--Data--> || <!--Description-->Start. Start the current sequence playing. (This message will be followed with Timing Clocks). |- |<!--Status-->11111011 || <!--Data--> || <!--Description-->Continue. Continue at the point the sequence was Stopped. |- |<!--Status-->11111100 || <!--Data--> || <!--Description-->Stop. Stop the current sequence. |- |<!--Status-->11111101 || <!--Data--> || <!--Description-->Undefined. (Reserved) |- |<!--Status-->11111110 || <!--Data--> || <!--Description-->Active Sensing. This message is intended to be sent repeatedly to tell the receiver that a connection is alive. Use of this message is optional. When initially received, the receiver will expect to receive another Active Sensing message each 300ms (max), and if it does not then it will assume that the connection has been terminated. At termination, the receiver will turn off all voices and return to normal (non- active sensing) operation. |- |<!--Status-->11111111 || <!--Data--> || <!--Description-->Reset. Reset all receivers in the system to power-up status. This should be used sparingly, preferably under manual control. In particular, it should not be sent on power-up. |} Advanced Messages Polyphonic Pressure (0xA0) and Channel Pressure (0xD0) Some MIDI controllers include a feature known as Aftertouch. While a key is being held down, the player can press harder on the key. The controller measures this, and converts it into MIDI messages. Aftertouch comes in two flavors, with two different status messages. The first flavor is polyphonic aftertouch, where every key on the controller is capable of sending its own independent pressure information. The messages are of the following format: <pre> 0xnc, 0xkk, 0xpp n is the status (0xA) c is the channel nybble kk is the key number (0 to 127) pp is the pressure value (0 to 127) </pre> Polyphonic aftertouch is an uncommon feature, usually found on premium quality instruments, because every key requires a separate pressure sensor, plus the circuitry to read them all. Much more commonly found is channel aftertouch. Instead of needing a discrete sensor per key, it uses a single, larger sensor to measure pressure on all of the keys as a group. The messages omit the key number, leaving a two-byte format <pre> 0xnc, 0xpp n is the status (0xD) c is the channel number pp is the pressure value (0 to 127) </pre> Pitch Bend (0xE0) Many keyboards have a wheel or lever towards the left of the keys for pitch bend control. This control is usually spring-loaded, so it snaps back to the center of its range when released. This allows for both upward and downward bends. Pitch Bend Wheel The wheel sends pitch bend messages, of the format <pre> 0xnc, 0xLL, 0xMM n is the status (0xE) c is the channel number LL is the 7 least-significant bits of the value MM is the 7 most-significant bits of the value </pre> You’ll notice that the bender data is actually 14 bits long, transmitted as two 7-bit data bytes. This means that the recipient needs to reassemble those bytes using binary manipulation. 14 bits results in an overall range of 214, or 0 to 16,383. Because it defaults to the center of the range, the default value for the bender is halfway through that range, at 8192 (0x2000). Control Change (0xB0) In addition to pitch bend, MIDI has provisions for a wider range of expressive controls, sometimes known as continuous controllers, often abbreviated CC. These are transmitted by the remaining knobs and sliders on the keyboard controller shown below. Continuous Controllers These controls send the following message format: <pre> 0xnc, 0xcc, 0xvv n is the status (0xB) c is the MIDI channel cc is the controller number (0-127) vv is the controller value (0-127) </pre> Typically, the wheel next to the bender sends controller number one, assigned to modulation (or vibrato) depth. It is implemented by most instruments. The remaining controller number assignments are another point of confusion. The MIDI specification was revised in version 2.0 to assign uses for many of the controllers. However, this implementation is not universal, and there are ranges of unassigned controllers. On many modern MIDI devices, the controllers are assignable. On the controller keyboard shown in the photos, the various controls can be configured to transmit different controller numbers. Controller numbers can be mapped to particular parameters. Virtual synthesizers frequently allow the user to assign CCs to the on-screen controls. This is very flexible, but it might require configuration on both ends of the link and completely bypasses the assignments in the standard. Program Change (0xC0) Most synthesizers have patch storage memory, and can be told to change patches using the following command: <pre> 0xnc, 0xpp n is the status (0xc) c is the channel pp is the patch number (0-127) </pre> This allows for 128 sounds to be selected, but modern instruments contain many more than 128 patches. Controller #0 is used as an additional layer of addressing, interpreted as a “bank select” command. Selecting a sound on such an instrument might involve two messages: a bank select controller message, then a program change. Audio & Midi are not synchronized, what I can do ? Buy a commercial software package but there is a nasty trick to synchronize both. It's a bit hardcore but works for me: Simply put one line down to all midi notes on your pattern (use Insert key) and go to 'Misc. Setup', adjust the latency and just search a value that will make sound sync both audio/midi. The stock Sin/Saw/Pulse and Rnd waveforms are too simple/common, is there a way to use something more complex/rich ? You have to ability to redirect the waveforms of the instruments through the synth pipe by selecting the "wav" option for the oscillator you're using for this synth instrument, samples can be used as wavetables to replace the stock signals. Sound banks like soundfont (sf2) or Kontakt2 are not supported at the moment ====DAW Audio Evolution 4==== Audio Evolution 4 gives you unsurpassed power for digital audio recording and editing on the Amiga. The latest release focusses on time-saving non-linear and non-destructive editing, as seen on other platforms. Besides editing, Audio Evolution 4 offers a wide range of realtime effects, including compression, noise gate, delays, reverb, chorus and 3-band EQ. Whether you put them as inserts on a channel or use them as auxillaries, the effect parameters are realtime adjustable and can be fully automated. Together with all other mixing parameters, they can even be controlled remotely, using more ergonomic MIDI hardware. Non-linear editing on the time line, including cut, copy, paste, move, split, trim and crossfade actions The number of tracks per project(s) is unlimited .... AHI limits you to recording only two at a time. i.e. not on 8 track sound cards like the Juli@ or Phase 88. sample file import is limited to 16bit AIFF (not AIFC, important distinction as some files from other sources can be AIFC with aiff file extention). and 16bit WAV (pcm only) Most apps use the Music Unit only but a few apps also use Unit (0-3) instead or as well. * Set up AHI prefs so that microphone is available. (Input option near the bottom) stereo++ allows the audio piece to be placed anywhere and the left-right adjusted to sound positionally right hifi best for music playback if driver supports this option Load 16bit .aif .aiff only sample(s) to use not AIFC which can have the same ending. AIFF stands for Audio Interchange File Format sox recital.wav recital.aiff sox recital.wav −b 16 recital.aiff channels 1 rate 16k fade 3 norm sox input.wav output.aiff bass −b 16 rate 48k performs the same format translation, but also applies four effects (down-mix to one channel, sample rate change, fade-in, nomalize), and stores the result at a bit-depth of 16. rec −c 2 radio.aiff trim 0 30:00 records half an hour of stereo audio play existing-file.wav 24bit PCM WAV or AIFF do not work *No stream format handling. So no way to pass on an AC3 encoded stream unmodified to the digital outputs through AHI. *No master volume handling. Each application has to set its own volume. So each driver implements its own custom driver-mixer interface for handling master volumes, mute and preamps. *Only one output stream. So all input gets mixed into one output. *No automatic handling of output direction based on connected cables. *No monitor input selection. Only monitor volume control. select the correct input (Don't mistake enabled sound for the correct input.) The monitor will feedback audio to the lineout and hp out no matter if you have selected the correct input to the ADC. The monitor will provide sound for any valid input. This will result in free mixing when recording from the monitor input instead of mic/line because the monitor itself will provide the hardware mixing for you. Be aware that MIC inputs will give two channel mono. Only Linein will give real stereo. Now for the not working part. Attempt to record from linein in the AE4 record window, the right channel is noise and the left channel is distorted. Even with the recommended HIFI 16bit Stereo++ mode at 48kHz. Channels Monitor Gain Inout Output Advanced settings - Debugging via serial port * Options -> Soundcard In/Out * Options -> SampleRate * Options -> Preferences F6 for Sample File List Setting a grid is easy as is measuring the BPM by marking a section of the sample. Is your kick drum track "not in time" ? If so, you're stumped in AE4 as it has no fancy variable time signatures and definitely no 'track this dodgy rhythm' function like software of the nature of Logic has. So if your drum beat is freeform you will need to work in freeform mode. (Real music is free form anyway). If the drum *is* accurate and you are just having trouble measuring the time, I usually measure over a range of bars and set the number of beats in range to say 16 as this is more accurate, Then you will need to shift the drum track to match your grid *before* applying the grid. (probably an iterative process as when the grid is active samples snap to it, and when inactive you cannot see it). AE4 does have ARexx but the functions are more for adding samples at set offsets and starting playback / recording. These are the usual features found in DAWs... * Recording digital audio, midi sequencer and mixer * virtual VST instruments and plug-ins * automation, group channels, MIDI channels, FX sends and returns, audio and MIDI editors and music notation editor * different track views * mixer and track layout (but not the same as below) * traditional two windows (track and mixer) Mixing - mixdown Could not figure out how to select what part I wanted to send to the aux, set it to echo and return. Pretty much the whole echo effect. Or any effect. Take look at page17 of the manual. When you open the EQ / Aux send popup window you will see 4 sends. Now from the menu choose the windows menu. Menus->Windows-> Aux Returns Window or press F5 You will see a small window with 4 volume controls and an effects button for each. Click a button and add an effects to that aux channel, then set it up as desired (note the reverb effect has a special AUX setting that improves its use with the aux channel, not compulsory but highly useful). You set the amount of 'return' on the main mix in the Aux Return window, and the amount sent from each main mixer channel in the popup for that channel. Again the aux sends are "prefade" so the volume faders on each channel do not affect them. Tracking Effects - fade in To add some echoes to some vocals, tried to add an effect on a track but did not come out. This is made more complicated as I wanted to mute a vocal but then make it echo at the muting point. Want to have one word of a vocal heard and then echoed off. But when the track is mute the echo is cancelled out. To correctly understand what is happening here you need to study the figure at the bottom of page 15 on the manual. You will see from that that the effects are applied 'prefade' So the automation you applied will naturally mute the entire signal. There would be a number of ways to achieve the goal, You have three real time effects slots, one for smoothing like so Sample -> Amplify -> Delay Then automate the gain of the amplify block so that it effectively mutes the sample just before the delay at the appropriate moment, the echo effect should then be heard. Getting the effects in the right order will require experimentation as they can only be added top down and it's not obvious which order they are applied to the signal, but there only two possibilities, so it wont take long to find out. Using MUTE can cause clicks to the Amplify can be used to mute more smoothly so that's a secondary advantage. Signal Processing - Overdub [[#top|...to the top]] ===Office=== ====Spreadsheet Leu==== Support for some xlsx, and ods functions ====Spreadsheet Ignition==== ; Needs ABIv1 to be completed before more can be done File formats supported * ascii #?.txt and #?.csv (single sheets with data only). * igs and TurboCalc(WIP) #?.tc for all sheets with data, formats and formulas. There is '''no''' support for xls, xlsx, ods or uos ([http://en.wikipedia.org/wiki/Uniform_Office_Format Uniform Unified Office Format]) at the moment. * Always use Esc key after editing Spreadsheet cells. * copy/paste seems to copy the first instance only so go to Edit -> Clipboard to manage the list of remembered actions. * Right mouse click on row (1 or 2 or 3) or column header (a or b or c) to access optimal height or width of the row or column respectively * Edit -> Insert -> Row seems to clear the spreadsheet or clears the rows after the inserted row until undo restores as it should be... Change Sheet name by Object -> Sheet -> Properties Click in the cell which will contain the result, and click '''down arrow button''' to the right of the formula box at the bottom of the spreadsheet and choose the function required from the list provided. Then click on the start cell and click on the bottom right corner, a '''very''' small blob, which allows stretching a bounding box (thick grey outlines) across many cells This grey bounding box can be used to '''copy a formula''' to other cells. Object -> Cell -> Properties to change cell format - Currency only covers DM and not $, Euro, Renminbi, Yen or Pound etc. Shift key and arrow keys selects a range of cells, so that '''formatting can be done to all highlighted cells'''. View -> Overview then select ALL with one click (in empty cell in the top left hand corner of the sheet). Default mode is relative cell referencing e.g. a1+a2 but absolute e.g. $a$1+$a$2 can be entered. * #sheet-name to '''absolute''' reference another sheet-name cell unless reference() function used. ;Graphs use shift key and arrow keys to select a bunch of cells to be graph'ed making sure that x axes represents and y axes represents * value() - 0 value, 1 percent, 2 date, 3 time, 4 unit ... ;Dates * Excel starts a running count from the 1st Jan 1900 and Ignition starts from 1st Jan 1AD '''(maybe this needs to change)''' Set formatting Object -> Cell -> Properties and put date in days ;Time Set formatting Object -> Cell -> Properties and put time in seconds taken ;Database (to be done by someone else) type - standard, reference (bezug), search criterion (suchkriterium), * select a bunch of cells and Object -> Database -> Define to set Datenbank (database) and Felder (fields not sure how?) * Neu (new) or loschen (delete) to add/remove database headings e.g. Personal, Start Date, Finish Date (one per row?) * Object -> Database -> Index to add fields (felder) like Surname, First Name, Employee ID, etc. to ? Filtering done with dbfilter(), dbproduct() and dbposition(). Activities with dbsum(), dbaverage(), dbmin() and dbmax(). Table sorting - ;Scripts (Arexx) ;Excel(TM) to Ignition - commas ''',''' replaced by semi-colons ''';''' to separate values within functions *SUM(), *AVERAGE(), MAX(), MIN(), INT(), PRODUCT(), MEDIAN(), VAR() becomes Variance(), Percentile(), *IF(), AND, OR, NOT *LEFT(), RIGHT(), MID() becomes MIDDLE(), LEN() becomes LENGTH(), *LOWER() becomes LOWERCASE(), UPPER() becomes UPPERCASE(), * DATE(yyyy,mm,dd) becomes COMPUTEDATE(dd;mm;yyyy), *TODAY(), DAY(),WEEK(), MONTH(),=YEAR(TODAY()), *EOMONTH() becomes MONTHLENGTH(), *NOW() should be date and time becomes time only, SECOND(), MINUTE(), HOUR(), *DBSUM() becomes DSUM(), ;Missing and possibly useful features/functions needed for ignition to have better support of Excel files There is no Merge and Join Text over many cells, no protect and/or freeze row or columns or books but can LOCK sheets, no define bunch of cells as a name, Macros (Arexx?), conditional formatting, no Solver, no Goal Seek, no Format Painter, no AutoFill, no AutoSum function button, no pivot tables, (30 argument limit applies to Excel) *HLOOKUP(), VLOOKUP(), [http://production-scheduling.com/excel-index-function-most-useful/ INDEX(), MATCH()], CHOOSE(), TEXT(), *TRIM(), FIND(), SUBSTITUTE(), CONCATENATE() or &, PROPER(), REPT(), *[https://acingexcel.com/excel-sumproduct-function/ SUMPRODUCT()], ROUND(), ROUNDUP(), *ROUNDDOWN(), COUNT(), COUNTA(), SUMIF(), COUNTIF(), COUNTBLANK(), TRUNC(), *PMT(), PV(), FV(), POWER(), SQRT(), MODE(), TRUE, FALSE, *MODE(), LARGE(), SMALL(), RANK(), STDEV(), *DCOUNT(), DCOUNTA(), WEEKDAY(), ;Excel Keyboard [http://dmcritchie.mvps.org/excel/shortx2k.htm shortcuts needed to aid usability in Ignition] <pre> Ctrl Z - Undo Ctrl D - Fill Down Ctrl R - Fill right Ctrl F - Find Ctrl H - Replace Ctrl 1 - Formatting of Cells CTRL SHIFT ~ Apply General Formatting ie a number Ctrl ; - Todays Date F2 - Edit cell F4 - toggle cell absolute / relative cell references </pre> ====Document Scanning - Scandal==== Scanner usually needs to be connected via a USB port and not via a hub or extension lead. Check in Trident Prefs -> Devices that the USB Scanner is not bound to anything (e.g. Bindings None) If not found then reboot the computer and recheck. Start Scandal, choose Settings from Menu strip at top of screen and in Scanner Driver choose the ?#.device of the scanner (e.g. epson2.device). The next two boxes - leave empty as they are for morphos SCSI use only or put ata.device (use the selection option in bigger box below) and Unit as 0 this is needed for gt68xx * gt68xx - no editing needed in s/gt68xx.conf but needs a firmware file that corresponds to the scanner [http://www.meier-geinitz.de/sane/gt68xx-backend/ gt68xx firmwares] in sys:s/gt68xx. * epson2 - Need to edit the file epson2.conf in sys/s that corresponds to the scanner being used '''Save''' the settings but do not press the Use button (aros freezes) Back to the Picture Scan window and the right-hand sections. Click on the '''Information''' tab and press Connect button and the scanner should now be detected. Go next to the '''Scanner''' tab next to Information Tab should have Color, Black and White, etc. and dpi settings now. Selecting an option Color, B/W etc. can cause dpi settings corruption (especially if the settings are in one line) so set '''dpi first'''. Make sure if Preview is set or not. In the '''Scan''' Tab, press Scan and the scanner will do its duty. Be aware that nothing is saved to disk yet. In the Save tab, change format JPEG, PNG or IFF DEEP. Tick incremental and base filename if necessary and then click the Save button. The image will now be saved to permanent storage. The driver ignores a device if it is already bond to another USB class, rejects it from being usable. However, open Trident prefs, select your device and use the right mouse button to open. Select "NONE" to prevent poseidon from touching the device. Now save settings. It should always work now. [[#top|...to the top]] ===Emulators=== ==== Amiberry ==== ==== Amiga Emu - Janus UAE ==== With Amibridge, AROS attempts to make the UAE emulator seem embedded within but it still is acting as an app There is no dynarec m68k for each hardware that Aros supports or direct patching of motorola calls to AROS hardware accelerated ones unless the emulator has that included Try starting Janus with a priority of -1 like this little script: <pre> cd sys:system/AmiBridge/emulator changetaskpri -1 run janus-uae -f my_uaerc.config >nil: cd sys:prefs endcli </pre> This stops Janus hogging all the CPU time. ===Miscellaneous=== ====Screensaver Blanker==== Most blankers on the amiga (i.e. aros) run as commodities (they are in the tools/commodities drawer). Double click on blanker. Control is with an app called Exchange, which you need to run first (double click on app) or run QUIET sys:tools/commodities/Exchange >NIL: but subsequently can use (Cntrl Alt h). Icon tool types (may be broken) or command line options <pre> seconds=number </pre> Once the timing is right then add the following to s:icaros-sequence or s:user-startup e.g. for 5 minutes run QUIET sys:tools/commodities/Blanker seconds=300 >NIL: *[http://archives.aros-exec.org/index.php?function=showfile&file=graphics/screenblanker/gblanker.i386-aros.zip Garshneblanker] can make Aros unstable or slow. Certain blankers crashes in Icaros 2.0.x like Dragon, Executor. *[ Acuario AROS version], the aquarium screen saver. Startup: extras:acuariofv-aros/acuario Kill: c:break name=extras:acuariofv-aros/acuario Managed to start Acuario by the Executor blanker. <pre> cx_priority= cx_popkey= ie CX_POPKEY="Shift F1" cx_popup=Yes or No </pre> <pre> Qualifier String Input Event Class ---------------- ----------------- "lshift" IEQUALIFIER_LSHIFT "rshift" IEQUALIFIER_RSHIFT "capslock" IEQUALIFIER_CAPSLOCK "control" IEQUALIFIER_CONTROL "lalt" IEQUALIFIER_LALT "ralt" IEQUALIFIER_RALT "lcommand" IEQUALIFIER_LCOMMAND "rcommand" IEQUALIFIER_RCOMMAND "numericpad" IEQUALIFIER_NUMERICPAD "repeat" IEQUALIFIER_REPEAT "midbutton" IEQUALIFIER_MIDBUTTON "rbutton" IEQUALIFIER_RBUTTON "leftbutton" IEQUALIFIER_LEFTBUTTON "relativemouse" IEQUALIFIER_RELATIVEMOUSE </pre> <pre> Synonym Synonym String Identifier ------- ---------- "shift" IXSYM_SHIFT /* look for either shift key */ "caps" IXSYM_CAPS /* look for either shift key or capslock */ "alt" IXSYM_ALT /* look for either alt key */ Highmap is one of the following strings: "space", "backspace", "tab", "enter", "return", "esc", "del", "up", "down", "right", "left", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "f10", "help". </pre> [[#top|...to the top]] ==== World Construction Set WCS (Version 2.031) ==== WCS is a fractal landscape software such as Scenery Animator, Vista Pro and Panorama. Open sourced February 2022, World Construction Set [https://3dnature.com/downloads/legacy-software/ legally and for free] and [https://github.com/AlphaPixel/3DNature c source]. Announced August 1994 this version dates from April 1996 developed by Gary R. Huber and Chris "Xenon" Hanson" from Questar <pre> Assign "WCSProjects:" "Volume:Dir/Dir/WCSProjects" Assign "WCSFrames:" "Volume:Dir/Dir/WCSFrames" </pre> <pre> Load projects .proj by accessing pull down menu Project -> Open then click on CanyonSunset.proj OK to changing .par file and enlarge Status Log window to show what is happening Render by pull down menu Modules -> Render with End equal 1 not 300 then click bottom middle button Render </pre> [https://www.youtube.com/watch?v=CxQDmf1ZWG0 Youtube walkthrough of above], [], [], Also try working with the already built file ColoDemo - Then open with the drop-down menu: Project/Open, then WCSProject:ColoDemo.proj Which allows you to use altimetric DEM files already included and Loading scene parameters from ColoDemo.par Once this is done, save everything with a new name to start working exclusively on your project. Then drop-down menu and select Save As ("NewName".proj name), then drop-down menu to open parameter and select Save All ( .par name) After launching the software, there is a the Module Control Panel composed of five icons. It is a dock type shortcut of the first few functions of the drop-down menu *Database - Load (#?.proj), Append, Create, Edit, Save, Dir List (of WCSProject drawer), *Data Ops - Extract / Convert Interp DEM, Import DLG, DXF, WDB and export LW map 3d formats *Map View - Database file Loader leading to Map View Control with option to the Database Editor *Parameters - Editor for Motion, Color, Ecosystem, Clouds, Waves, management of altimeter files DEM, sclock settings etc *Render - rendering terrain These are more in the pull down menu but not in the dock *Motion Editor *Color Editor *Ecosys Editor Simple minimal workflow *Load database (1st icon - 1st) *Set parameters and save .par file (4th icon) *Render scene (5th icon) [https://www.youtube.com/watch?v=ZbTwwR2qcc4 Youtube], [], <pre> .proj new project name which creates a drawer of additional files .binary array, ascii array .xyz , z buffer, DTED .dt0, vista 1990s dem, iff conversion .Obj with .elev, .frd with .hdr maps, - digital elevation model (DEM) is a 3D representation of elevation data in various formats USGS 7.5MinDEM, .par </pre> Since for the time being no project is loaded, a query window indicates a procedural error when clicking on the rendering icon (right end of the bar). The menu is quite traditional; it varies according to the activity of the windows. To display any altimetric file in the "Mapview" (third icon of the panel), There are three possibilities: * Loading of a demonstration project. * The import of a DEM file, followed by texturing and packaging from the "Database-Editor" and the "Color-Editor". * The creation of an altimetric file in WCS format, then texturing. The altimeter file editing (display in the menu) is only made possible if the "Mapview" window is active. The software is made up of many windows and won't be able to describe them all. Know that "Color-Editor" and the "Data-Editor" comprise sufficient functions for obtaining an almost real rendering quality. You have the possibility of inserting vector objects in the "Data-Editor" (creation of roads, railways, etc.) The Map View (MapView) window *Database - Objects and Topos *View - Align, Center, Zoom, Pan, Move *Draw - Maps and distance *Object - Find, highlight, add points, conform topo, duplicate *Motion - Camera, Focus, path, elevation *Windows - DEM designer, Cloud (.cld) and wave (.wve) editor, You will notice that by selecting this window and simply moving the pointer to various points on the map you will see latitude and longitude values ​​change, along with the height. Drop-down menu and Modules, then select MapView and change the width of the window with the map to arrange it in the best way on the screen. With the Auto button the center. Window that then displays the contents of my DEM file, in this case the Grand Canyon. MapView allows you to observe the shape of the landscape from above ZOOM button Press the Zoom button and then with the pointer position on a point on the map, press the left mouse button and then move to the opposite corner to circumscribe the chosen area and press the left mouse button again, then we will see the enlarged area selected on the map. Would add that there is a box next to the Zoom button that allows the direct insertion of a value which, the larger it is, the smaller the magnification and the smaller the value, the stronger the magnification. At each numerical change you will need to press the DRAW button to update the view. PAN button Under Zoom you will find the PAN button which allows you to move the map at will in all directions by the amount you want. This is done by drawing a line in one direction, then press PAN and point to an area on the map with the pointer and press the left mouse button. At this point, leave it and move the pointer in one direction by drawing a line and press the left mouse button again to trigger the movement of the map on the screen (origin and end points). Do some experiments and then use the Auto button immediately below to recenter everything. There are parameters such as TOPO, VEC to be left checked and immediately below one that allows different views of the map with the Style command (Single, Multi, Surface, Emboss, Slope, Contour), each with its own particularities to highlight different details. Now you have the first basics to manage your project visually on the map. Close the MapView window and go further... Let's start working on ECOSYSTEMS If we select Emboss from the MapView Style command we will have a clear idea of ​​how the landscape appears, realizing that it is a predominantly desert region of our planet. Therefore we will begin to act on any vegetation present and the appearance of the landscape. With WCS we will begin to break down the elements of the landscape by assigning defined characteristics. It will be necessary to determine the classes of the ecosystem (Class) with parameters of Elevation Line (maximum altitude), Relative Elevation (arrangement on basins or convexities with respectively positive or negative parameters), Min Slope and Max Slope (slope). WCS offers the possibility of making ecosystems coexist on the same terrain with the UnderEco function, by setting a Density value. Ecosys Ecosystem Editor Let's open it from Modules, then Ecosys Editor. In the left pane you will find the list of ecosystems referring to the files present in our project. It will be necessary to clean up that box to leave only the Water and Snow landscapes and a few other predefined ones. We can do this by selecting the items and pressing the Remove button (be careful not for all elements the button is activated, therefore they cannot all be eliminated). Once this is done we can start adding new ecosystems. Scroll through the various Unused and as soon as the Name item at the top is activated allowing you to write, type the name of your ecosystem, adding the necessary parameters. <pre> Ecosystem1: Name: RockBase Class: Rock Density: 80 MinSlope: 15 UnderEco: Terrain Ecosystem2: Name: RockIncl Clss: Rock Density: 80 MinSlope: 30 UnderEco: Terrain Ecosystem3: Name: Grass Class Low Veg Density: 50 Height: 1 Elev Line : 1500 Rel El Eff: 5 Max Slope: 10 – Min Slope: 0 UnderEco: Terrain Ecosistema4: Name: Shrubs Class: Low Veg Density: 40 Height: 8 Elev Line: 3000 Rel El Eff: -2 Max Slope: 20 Min Slope : 5 UnderEco: Terrain Ecosistema5: Name: Terrain Class: Ground Density: 100 UnderEco: Terrain </pre> Now we need to identify an intermediate ecosystem that guarantees a smooth transition between all, therefore we select as Understory Ecosystem the one called Terrain in all ecosystems, except Snow and Water . Now we need to 'emerge' the Colorado River in the Canyon and we can do this by raising the sea level to 900 (Sea Level) in the Ecosystem called Water. Please note that the order of the ecosystem list gives priority to those that come after. So our list must have the following order: Water, Snow, Shrubs, RockIncl, RockBase, Terrain. It is possible to carry out all movements with the Swap button at the bottom. To put order you can also press Short List. Press Keep to confirm all the work done so far with Ecosystem Editor. Remember every now and then to save both the Project 'Modules/Save' and 'Parameter/Save All' EcoModels are made up of .etp .fgp .iff8 for each model Color Editor Now it's time to define the colors of our scene and we can do this by going to Modules and then Color Editor. In the list we focus on our ecosystems, created first. Let's go to the bottom of the list and select the first white space, assigning the name 'empty1', with a color we like and then we will find this element again in other environments... It could serve as an example for other situations! So we move to 'grass' which already exists and assign the following colors: R 60 G 70 B50 <pre> 'shrubs': R 60 G 80 B 30 'RockIncl' R 110 G 65 B 60 'RockBase' R 110 G 80 B 80 ' Terrain' R 150 G 30 B 30 <pre> Now we can work on pre-existing colors <pre> 'SunLight' R 150 G 130 B 130 'Haze and Fog' R 190 G 170 B 170 'Horizon' R 209 G 185 B 190 'Zenith' R 140 G 150 B 200 'Water' R 90 G 125 B 170 </pre> Ambient R 0 G 0 B 0 So don't forget to close Color Editor by pressing Keep. Go once again to Ecosystem Editor and assign the corresponding color to each environment by selecting it using the Ecosystem Color button. Press it several times until the correct one appears. Then save the project and parameters again, as done previously. Motion Editor Now it's time to take care of the framing, so let's go to Modules and then to Motion Editor. An extremely feature-rich window will open. Following is the list of parameters regarding the Camera, position and other characteristics: <pre> -Camera Altitude: 7.0 -Camera Latitude: 36.075 -Camera Longitude: 112.133 -Focus Attitude: -2.0 -Focus Latitude: 36.275 -Focus Longitude: 112.386 -Camera : 512 → rendering window -Camera Y: 384 → rendering window -View Arc: 80 → View width in degrees -Sun Longitude: 172 -Sun Latitude: -0.9 -Haze Start: 3.8 -Haze Range: 78, 5 </pre> As soon as the values ​​shown in the relevant sliders have been modified, we will be ready to open the CamView window to observe the wireframe preview. Let's not consider all the controls that will appear. Well from the Motion Editor if you have selected Camera Altitude and open the CamView panel, you can change the height of the camera by holding down the right mouse button and moving the mouse up and down. To update the view, press the Terrain button in the adjacent window. As soon as you are convinced of the position, confirm again with Keep. You can carry out the same work with the other functions of the camera, such as Focus Altitude... Let's now see the next positioning step on the Camera map, but let's leave the CamView preview window open while we go to Modules to open the window at the same time MapView. We will thus be able to take advantage of the view from the other together with a subjective one. From the MapView window, select with the left mouse button and while it is pressed, move the Camera as desired. To update the subjective preview, always click on Terrain. While with the same procedure you can intervene on the direction of the camera lens, by selecting the cross and with the left button pressed you can choose the desired view. So with the pressure of Terrain I update the Preview. Possibly can enlarge or reduce the Map View using the Zoom button, for greater precision. Also write that the circle around the cameras indicates the beginning of the haze, there are two types (haze and fog) linked to the altitude. Would also add that the camera height is editable through the Motion Editor panel. The sun Let's see that changing the position of the sun from the Motion Editor. Press the SUN button at the bottom right and set the time and the date. Longitude and latitude are automatically obtained by the program. Always open the View Arc command from the Motion Editor panel, an item present in the Parameter List box. Once again confirm everything with Keep and then save again. Animation The animation part is not left-back and also occupies a window. The settings possibilities are enormous. A time line with dragging functions ("slide", "drag"...) comparable to that of LightWave completes this window. A small window is available for positioning the stars as a function of a date, in order to vary the seasons and their various events (and yes...). At the bottom of the "Motion-Editor", a "cam-view" function will give you access to a control panel. Different preview modes are possible. The rendering is also accessible through a window. No less than nine pages compose it. At this level, you will be able to determine the backup name of your images ("path"), the type of texture to be calculated, the resolution of the images, activate or deactivate functions such as the depth buffer ("zbuffer"), the blur, the background image, etc. Once all these parameters have been set, all you have to do is click on the "Render" button. For rendering go to Modules and then Render. Select the resolution, then under IMA select the name of the image. Move to FRA and indicate the level of fractal detail which of 4 is quite good. Then Keep to confirm and then reopen the window, pressing Render you will see the result. The image will be opened with any viewing program. Strengths: * Multi-window. * Quality of rendering. * Accuracy. * Opening, preview and rendering on CyberGraphX screen. * Extract / Convert Interp DEM, Import DLG, DXF, WDB and export LW map 3d formats * The "zbuffer" function. Weaknesses: * No OpenGL management * Calculation time. * No network computing tool. ====Writing CD / DVD - Frying Pan==== Can be backup DVDs (4GB ISO size limit due to use of FileInfoBlock), create audio cds from mp3's, and put .iso files on discs If using for the first time - click Drive button and Device set to ata.device and unit to 0 (zero) Click Tracks Button - Drive 1 - Create New Disc or Import Existing Disc Image (iso bin/cue etc.) - Session File open cue file If you're making a data cd, with files and drawers from your hard drive, you should be using the ISO Builder.. which is the MUI page on the left. ("Data/Audio Tracks" is on the right). You should use the "Data/Audio tracks" page if you want to create music cds with AIFF/WAV/MP3 files, or if you download an .iso file, and you want to put it on a cd. Click WRITE Button - set write speed - click on long Write button Examples Easiest way would be to burn a DATA CD, simply go to "Tracks" page "ISO Builder" and "ADD" everything you need to burn. On the "Write" page i have "Masterize Disc (DAO)", "Close Disc" and "Eject after Write" set. One must not "Blank disc before write" if one uses a CDR AUDIO CD from MP3's are as easy but tricky to deal with. FP only understands one MP3 format, Layer II, everything else will just create empty tracks Burning bootable CD's works only with .iso files. Go to "Tracks" page and "Data/Audio Tracks" and add the .iso ====odf==== Every ODF file is a collection of several subdocuments within a package (ZIP file), each of which stores part of the complete document. * content.xml – Document content and automatic styles used in the content. * styles.xml – Styles used in the document content and automatic styles used in the styles themselves. * meta.xml – Document meta information, such as the author or the time of the last save action. * settings.xml – Application-specific settings, such as the window size or printer information. To read document follow these steps: * Extracting .ods file. * Getting content.xml file (which contains sheets data). * Creating XmlDocument object from content.xml file. * Creating DataSet (that represent Spreadsheet file). * With XmlDocument select “table:table” elements, and then create adequate DataTables. * Parse child’s of “table:table” element and fill DataTables with those data. * At the end, return DataSet and show it in application’s interface. To write document follow these steps: * Extracting template.ods file (.ods file that we use as template). * Getting content.xml file. * Creating XmlDocument object from content.xml file. * Erasing all “table:table” elements from the content.xml file. * Reading data from our DataSet and composing adequate “table:table” elements. * Adding “table:table” elements to content.xml file. * Zipping that file as new .ods file. XLS file format The XLS file format contains streams, substreams, and records. These sheet substreams include worksheets, macro sheets, chart sheets, dialog sheets, and VBA module sheets. All the records in an XLS document start with a 2-byte unsigned integer to specify Record Type (rt), and another for Count of Bytes (cb). A record cannot exceed 8224 bytes. If larger than the rest is stored in one or more continue records. * Workbook stream **Globals substream ***BoundSheet8 record - info for Worksheet substream i.e. name, location, type, and visibility. (4bytes the lbPlyPos FilePointer, specifies the position in the Workbook stream where the sheet substream starts) **Worksheet substream (sheet) - Cell Table - Row record - Cells (2byte=row 2byte=column 2byte=XF format) ***Blank cell record ***RK cell record 32-bit number. ***BoolErr cell record (2-byte Bes structure that may be either a Boolean value or an error code) ***Number cell record (64-bit floating-point number) ***LabelSst cell record (4-byte integer that specifies a string in the Shared Strings Table (SST). Specifically, the integer corresponds to the array index in the RGB field of the SST) ***Formula cell record (FormulaValue structure in the 8 bytes that follow the cell structure. The next 6 bytes can be ignored, and the rest of the record is a CellParsedFormula structure that contains the formula itself) ***MulBlank record (first 2 bytes give the row, and the next 2 bytes give the column that the series of blanks starts at. Next, a variable length array of cell structures follows to store formatting information, and the last 2 bytes show what column the series of blanks ends on) ***MulRK record ***Shared String Table (SST) contains all of the string values in the workbook. ACCRINT(), ACCRINTM(), AMORDEGRC(), AMORLINC(), COUPDAYBS(), COUPDAYS(), COUPDAYSNC(), COUPNCD(), COUPNUM(), COUPPCD(), CUMIPMT(), CUMPRINC(), DB(), DDB(), DISC(), DOLLARDE(), DOLLARFR(), DURATION(), EFFECT(), FV(), FVSCHEDULE(), INTRATE(), IPMT(), IRR(), ISPMT(), MDURATION(), MIRR(), NOMINAL(), NPER(), NPV(), ODDFPRICE(), ODDFYIELD(), ODDLPRICE(), ODDLYIELD(), PMT(), PPMT(), PRICE(), PRICEDISC(), PRICEMAT(), PV(), RATE(), RECEIVED(), SLN(), SYD(), TBILLEQ(), TBILLPRICE(), TBILLYIELD(), VDB(), XIRR(), XNPV(), YIELD(), YIELDDISC(), YIELDMAT(), <pre> </pre> <pre> </pre> <pre> </pre> {{BookCat}} 4fauo6af6z3gzinenmcvl3uebrq0sxa Aros/Platforms/Arm Raspberry Pi support 0 286123 4655990 4655989 2026-08-01T12:16:50Z Jeff1138 301139 4655990 wikitext text/x-wiki {{ArosNav}} [[#Native]] [[#Hosted]] ==Introduction== The Raspberry Pi Foundation is a charity founded in May 2009 to promote the study of basic computer science in schools, and is responsible for developing a single-board computer called the Raspberry Pi. The Foundation is supported by the University of Cambridge Computer Laboratory and Broadcom. Its aim is to "promote the study of computer science and related topics, especially at school level, and to put the fun back into learning computing." The original Raspberry Pi 1 Model B computer went on sale in February 2012 and set a new standard shattering the dominance of the PC in the home and education markets. Millions in the various formats, A, B, A+, B+ and Compute have since been shipped worldwide. The original concept of the Raspberry Pi was for a computer board providing Internet access with up to 1080p HD graphics at very low cost. The boards provide a platform for children and adults from any background to acquire computer science knowledge and help develop the future World-Wide-Web and all things internet (IOT hub and bridges out to home network to cloud of sensors). Hobbyists and tech dabblers/tinkerers are the main purchases of the Pis (around half). The rest of the sales are split between education/industrial. While the Raspberry Pi boards were designed primarily for education, they have become very popular with manufacturers of embedded systems. The Raspberry Pi Foundation has ensured backwards compatibility with each new revision. The bare-bones Compute module is aimed specifically at the OEM manufacturer. * Pi 5 - Quad A76 and RP1 "southbridge" with VideoCore 7 4Gb 8Gb LPDDR4X * Pi 4 - Quad A72 64bit VideoCore 6 * Pi 3 - Quad A53 [https://www.raspberrypi.com/documentation/computers/processors.html 64 bit] - VideoCore 4 * Pi 2 - Quad 32bit but more power consumed * Model B+ - lower power usage but same speed as the original Pis * Model A and B - * Compute 1, 3, 4 and 5 - industrial use <pre> 2008 Trustees collected for Foundation 2009 Charity status gained 2010 2011 First Raspberry prototypes 2012 First boards go on sale at CPC and RS. The Model A and B 700 MHz Arm11 - February 29th BCM 2835 2012 First million sold - more than the 10,000 original planned and anticipated 2013 First Alpha Experimental builds of AROS Native for the Pi 2013 Pi Trading launched making grants available, providing in house educational resources and Pi Academy for teacher training 2013 Over two million sold 2014 Over three million sold and updated Model B+ introduced that moved composite video to audio jack and same half gig of memory 2014 Pi Model A+ v1.1 - BCM2711 no ethernet and 1 usb - a little smaller - 2015 Pi 2 Model B - BCM2836 900/600 MHz ARM Cortex-A7 Armv7 quad 32bit core and 32bit VideoCore IV 3d GPU with 1Gb RAM 2015 Over four million first gen pis sold 2015 Over a million pi2s sold 2015 Pi Zero BCM2835 released 2015 Raspberry Pi 2 Model B version 1.2 has armv8 BCM2837 2016 Passed Sinclair total number of computer lines sold - around 7 million 2016 Pi 3 Model B - Broadcom BCM2837 SOC four 64bit ARMv8 Cortex-A53 1.2GHz - 1Gb - bluetooth 4.1, Cypress CYW43438 wireless 802.11n and a dual 32bit VideoCore IV GPU - 4 x USB2.0 ports 2016 Total PIs over 10 million worldwide 2016 Compute 3 launched BCM2837 armv8 Quad 64-bit Core 1Gb LPDDR2 RAM 4Gb Emmc storage 2017 12 million pis sold in total 2017 Pi Zero W 1GHz, single-core CPU A53 released with Cypress CYW43438 wireless 2018 Pi 3 Model B+ - 4c A53 BCM2837B0 - 1Gb, wireless 802.11ac, gigabit ethernet (300Mbit/s) and bluetooth 4.2 - power over ethernet - 4 x USB2.0 ports 2019 Over 15 million sold 2019 Pi 3 Model A with BCM2837b0 with 512Mb, 2019 Raspberry Pi Compute Module 3+ CM3+ LITE Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC 1Gb DDR2 and emmc 2019 Pi 4 Model B - BCM2711 quad 64bit A72 1.5GHz, VideoCore VI, AC wifi, Bluetooth 5.0, GbE, 2 micro hdmi decode up to 4K, USB-C power, 2xVLI USB 3, 2xUSB 2.0, 1/2/4 GB ram 2019 Pi 4 Model 2B - BCM2712 4 usb 2020 Raspberry Pi SC0919 Pico RP2040 2020 Silent Pi 4 upgrade with more USB-c psu support and PI400 1.8GHz inside keyboard 2020 Raspberry Pi Compute Module 4 2021 Pi zero 2 w 64bit quad 1GHz Cortex-A53 BCM2710A1 512mB SDRam 2023 Pi 5 BCM2712 Quad A76 w VideoCore VII - no audio socket - dual 4k displays from mini hdmi - fan connector - 5V 5A psu 2024 Raspberry Pi Pico 2 2024 Pi 5 2GB version uses BCM2712D0 2024 Pi-500 2024 Raspberry Pi Compute Module 5 2025 Pi-500+ 2026 April and May Aros 64bit fixed, added AHI audio, VC4 gfx started, usb functions added to rom 2026 June and July Aros 64bit usb2otg started, dma.resource, sdio.resource, bwfm.device wifi added 2026 Late July daily 64bit Pi3 builds start 2026 August .... 2027 2028 Pi 6 </pre> ===Good sites to visit=== *[https://github.com/raspberrypi/firmware/tree/master/ Raspberry Pi Firmware build] *[https://github.com/raspberrypi/linux Raspberry Pi Linux Build] *[https://www.patreon.com/michal_schulz/posts Big endian on Pi] with [https://github.com/michalsc/Emu68 ARM based realtime JIT 68k] *[https://www.riscosopen.org/wiki/documentation/show/Welcome%20to%20RISC%20OS%20Pi RiscOS on Pi3 and Pi4] *[https://github.com/brianwiddas/pi-baremetal Bare Metal Access on Pi 32bit] ===Native=== * 2013-03 Kalamatee starts work * 2013-05 Work put on hiatus * 2015-04 Work continues slowly with mschulz on the kernel and Kalamatee (NicJA) on gpio and usb * 2018 [https://www.patreon.com/posts/i-owe-you-some-20956961 mschulz resume with adding BE big endian support as well] * 2026 [https://github.com/aros-development-team/AROS/commits?author=bsek latest commits for pi 3 64bit] * 2026 [https://github.com/aros-development-team/AROS/commits?author=jonx latest commits for pi 4] 64bit ArmV8 builds are The status of AROS 32bit native for RasPi was OK. System booting, USB working (although with some issues but plan to fix them). Got stuck on modifying the ABI (application binary interface) and adjusting binutils/gcc to support it wanted to have real executable files but got stuck a little. This change for the type of relocations embedded in ARM files and not sure if this very type is well supported, on the other hand without this change ARM version of AROS wouldn't work well. By reverting the change to ABI we could have a (somehow) working AROS on RasPi, but unfortunately still unstable. Old native [http://www.aros.org/nightly1.html ARMv6 32bit nightlys] and ===Hosted=== [http://www.aros.org/snapshots1.html old linux and android hosted 32bit] ==Build== ===64bit=== ===32bit=== # download/checkout the source someplace, e.g. /build/AROS-Src/ # make a directory to store external sources AROS downloads, e.g. /build/Ports # make a build directory, e.g. /build/aros-raspi-armhf # cd into the build dir, configure, and then run make -: <pre> >cd /build/aros-raspi-armhf >/build/AROS-Src/configure --target=raspberrypi-armhf --with-serial-debug --enable-ccache --with-portssources=/build/Ports >make >make arosboot-raspi </pre> then copy the files from /build/aros-raspi-armhf/bin/raspi-armhf/AROS/ onto an sdcard, and download/copy the Raspi firmware files onto it. You should then be able to boot the sdcard on your RasPi. The current W.I.P tree to svn. it can be built as follows .. <pre> ./configure --target=raspi-armhf make arosboot-raspi </pre> That will generate arosraspi.img, arosraspi.rom and config.txt in bin/raspi-arm/AROS - so either copy just those files to a fat formatted SD card (with the firmware files on), or copy the whole contents of the AROS folder. NB - if you have a Linux/other install, backup the existing config.txt first arosraspi.img contains the bootstrap (which has very basic mailbox code, framebuffer/gpio init, and console "emulation" via code pinched from our libbootconsole), kernel.resource, and exec.library arosraspi.rom contains all the other components needed to boot AROS. The config.txt file will tell the RasPI bootstrap to load our arosraspi kernel and ramdisk (rom). the bootstrap has minimal mailbox code, planning on adding either a resource or library that driver/app code will use to access it (likewise for GPIO) ==== Hosted ==== Ubuntu VM approach to compiling [http://lallafa.de/blog/2013/06/building-aros-hosted-for-raspbian/ Linux hosted AROS June 04, 2013] ../AROS/configure --target=linux-armhf --enable-includes=/usr/arm-linux-gnueabihf/include --x-includes=/usr/arm-linux-gnueabihf/include --x-libraries=/usr/arm-linux-gnueabihf/lib arm-elf- is symbol-linked to arm-linux-gnueabi- (arm-linux-gnueabi- is more correct in this case, because it's going to be compiling the ARM AROSBootstrap for ARM Linux) *armel - many of the "android" machines require since the entire OS is made for soft float VFP. *armfp - Efika MX target, Raspberry PI, EfikaMX, Pandora and virtually everything (VFP) Keep in mind it's possible to start hardfp AROS hosted on softfp system, though, as long as no calls between AROS and host require floating point parameters. NOTE: hardfloat objects *cannot* be linked with softfloat objects - they have a different ABI. Just keep in mind the arm nightly build machine is quite complex beast. It needs the x86_64 host compiler to compile AROS tools. The arm version is built every night using gcc-4.6.2 crosscompiler (built together with AROS) and successfully builds armel and armhf linux hosted targets. *needs an AROS code compiler for ARM target *as well as unix compiler for ARM linux host (would be best to have both softfp and armhf, we have softfp only now) with full set of libraries and includes. with—disable-crosstools $AROS_CC is always a wrapper around $KERNEL_CC ? If so, this is wrong for some ports. This can break Darwin, Windows and Android port. Yes, Android port will build. And even work. But it's not good because the port will not be ABI-compatible with other ARM ports. Android's ABI is different from GNUEABI. For example: <pre> enum test {foo, bar}; enum test testvar; </pre> siseof(testvar) will be equal to sizeof(int) in GNUEABI (Linux and AROS) and sizeof(short) on Android. This affects linking objects from static linklibs, for example. Previously everything worked because $AROS_CC was a wrapper on top of $HOST_CC. And a real crosscompiler was used on non-ELF hosts. Android is the same. $KERNEL_CC is incompatible with AROS. compiler=kernel is appropriate _ONLY FOR CODE WHICH RUNS ON HOST OS_ (or barebone hardware, if we talk about native). This includes bootstraps, their linklibs, and host-side dynamic libraries (Windows makes extensive use of them because of architectural considerations. No single AROS object should be compiled with this setting. $KERNEL_CC is really compatible with AROS *ONLY IN LINUX-HOSTED* and no more. On other systems (Darwin, Windows, Android) this is not true any more, and compiler=kernel is never going to work. If you want to compile your AROS module against host OS includes, append the following to USER_INCLUDES (or USER_CFLAGS, this is effectively the same): -isystem $(GENINCDIR) $(KERNEL_INCLUDES) $(KERNEL_INCLUDES) expands to: -isystem <your_os_includes> -isystem <host_OS_gcc_private_includes> -nostdinc This makes AROS compiler adhering to host OS APIs. If you want some preprocessor symbols based on what your host OS actually is, add something like -DHOST_OS_$(AROS_HOST_ARCH). Why is there $(GENINCDIR) at all? Because host OS has its own libc includes, which would conflict with AROS ones. And the host OS libc is not binary-compatible with AROS one. Why doesn't Windows-hosted port use $(KERNEL_INCLUDES) ? Because WinAPI includes conflict with AROS ones in fundamental typedefs, like WORD, BYTE and BOOL. It's almost impossible to deal with this in any other way than rewriting WinAPI definitions using AROS types. Building under centos 6.3 (i386) currently, and AROS creates the toolchain itself. haven't yet committed the necessary changes but "./configure --target=raspi-armhf" is enough to start, then "make arosboot-raspi" will generate arosraspi.img (containing the bootstrap, kernel.resource, and exec.library) as well as arosraspi.rom (containing all the other essentials components such as dos, graphics etc). It will also copy over a config.txt file to make the raspi bootstrap code load the correct kernel, and a cmdline.txt that enables exec debug output. *armel = typically Debian 6, Ubuntu Maverick, Android, *armhf = typically Debian 7, Debian 8, Ubuntu Precise, Cross-compiling Ubuntu ARM softfp <pre> sudo sh echo 'foreign-architecture armel' >>/etc/dpkg/dpkg.cfg.d/multiarch echo 'deb [arch=armel] http://ports.ubuntu.com/ precise main universe' >/etc/apt/sources.list.d/armel.list apt-get update apt-get install gcc-arm-linux-gnueabi libx11-dev:armel libsdl-dev:armel </pre> <pre> ./configure --target=linux-arm --x-includes=/usr/include \ --enable-includes=/usr/arm-linux-gnueabi/include </pre> Cross-compiling Ubuntu ARM hard-float <pre> sudo sh echo 'foreign-architecture armhf' >>/etc/dpkg/dpkg.cfg.d/multiarch echo 'deb [arch=armhf] http://ports.ubuntu.com/ precise main universe' >/etc/apt/sources.list.d/armhf.list apt-get update apt-get install gcc-arm-linux-gnueabihf libx11-dev:armhf libsdl-dev:armhf </pre> <pre> ./configure --target=linux-armhf --x-includes=/usr/include \ --enable-includes=/usr/arm-linux-gnueabihf/include </pre> Now, the AROS build is configured properly and all you need to do is: make [https://github.com/aros-development-team/AROS/commit/d84b9a337f9aa059154d9af69275935125166bdd some Apple Silicon support] == Hardware == ===64bit=== ====BCM2712==== BCM2837 * Broadcom BCM43438 chip provides 2.4&nbsp;GHz 802.11n wireless LAN, Bluetooth Low Energy, and Bluetooth 4.1 Classic radio support, 3B+ [https://github.com/aros-development-team/AROS/commit/afa5bc0bb17d5dd06bcfdbac00853a3799ca8d76 LAN7515] ====BCM2711==== ===32bit=== === Core Kernel === ====BCM2708(family)==== which includes the [http://elinux.org/RPi_Hardware BCM2835] (ARM1176JZF-S 700&nbsp;MHz CPU + VideoCore IV GPU + up to 1GB RAM) *Framebuffer (fb) using mailbox *IRQ scheduler, etc *Arasan based SD Card controller *Synopsis DesignWare USB 2.0 OTG controller [http://networkdirection.net/index.php?option=com_content&view=article&id=106:rasperry-pi-usb-controller&catid=45:raspberry-pi&Itemid=54 Unofficial DOCS pdf], [dwc_otg.c FreeBSD], [], [https://www.riscosopen.org/viewer/view/mixed/RiscOS/Sources/HWSupport/USB/Controllers/DWCDriver/ RiscOS USB Driver], [https://www.riscosopen.org/forum/forums/5/topics/878 RiscOS USB Discussion], [https://www.riscosopen.org/forum/forums/11/topics/1893 Other USB RiscOS], [http://plan9.bell-labs.com/plan9/index.html Plan9 Miller's usb] http://plan9.bell-labs.com/sources/contrib/miller/, [https://github.com/Chadderz121/csud CSUD driver], *[http://www.smsc.com/media/Downloads_Public/Data_Sheets/9512.pdf SMSC 9512] USB LAN/Hub chip *CMOS RAM *VCHIQ port which sends messages to the GPU e.g. for mouse, keyboard, audio on HDMI, etc *Audio Driver *Serial Peripheral Interface Bus (SPI) *[http://www.susa.net/wordpress/2012/06/raspberry-pi-pcf8563-real-time-clock-rtc/ I2C registers] *I2S *Universal Asynchronous Receiver Transmitter (UART) *[http://elinux.org/RPi_BCM2835_GPIOs GPIOs] and [http://www.adafruit.com/blog/2012/08/17/broadcom-bcm2835-peripheral-memory-map-and-gpio-alternate-use-chart-piday-raspberrypi-raspberry_pi/ Alternative view of GPIO] BCM2836 * For Pi B+, PI 2 and Pi 3 SMSC LAN9514 chip adding 10/100 Ethernet connectivity and four USB channels to the board The overclock ability has diminished with each chip version as the energy usage has very slowly risen. BCM2837 is one of the warmest yet and might benefit from active cooling (ie fan) if all four cpu cores are in use for a short while. Video playback is not affected due to the custom support in the GPU. 5 V / 2.4 or 2.5 amp power supply recommended if all four cpu cores are running, else throttling (cpu slowdown) might occur. *[http://www.andrewscheller.co.uk/rpi_pcb_modules.html PCB], [http://elinux.org/RPi_Low-level_peripherals Low level features], Implemented so far... # Modify the configure system so that it correctly builds for the arm hardware float raspi target. # Implemented the bootstrap to load the aros modules and prepare the arm to jump into them. Reworked the x86 console support so that parts can be stolen for raspi to use since t has no basic functionality to output to the display. # Implemented a kernel.resource to prepare the raspi for running aros and provide the low level api calls to expose available resources and allow exec, etc function. # Implemented serial debug support # Implemented the exec (and kernel) functionality required to make multitasking work (and interrupts, exceptions, syscalls, etc) # Implemented a timer.device to utilise the hardware timers. # Implemented a very basic gfx driver to expose the hardware's framebuffer. # Implemented an SD-Card driver for AROS which presently only supports the raspi's chipset but can easily be modified to support all sd-card hardware and media. # Fixed the fat filesystem support in AROS so that it can boot on RasPi's normal SD-Card setup. The "rom" image files needed use a different filename than the default linux, etc images so can be easily installed without harming the existing files - you only need to change the loaded images in the config file to get aros to boot. # Updated the build scripts to automatically download the necessary raspi firmware files and wrap it all up so that you can simply extract the archive to a fat formatted sdcard and boot it on the raspi without having to get anything else. # fix everything in contrib and ports to build for raspi (needs proper testing/fixes but allows every component to actually compile at least, including owb) + numerous other fixes to get things working on arm/raspi .. Improvements... # Implement a USB chipset driver "OR" finish the existing one [https://github.com/aros-development-team/AROS/commit/c07d13c724f944674be5db54fc6a71ee72a01809 usb otg] - the current code is mostly a skeleton that should initialise the chipset and then needs relevant code to support the different transfer types. It also has the "virtual" hub code in place to represent the raspi's USB port (from poseidons p.o.v) # Implement a driver for the USB NIC (a few weeks - depends on USB above) # Write an [https://github.com/aros-development-team/AROS/commit/d55d0f74d20b769bbb8c8d386e5c1d7a9154f05a audio driver] (a few weeks - independent of USB) and [https://github.com/aros-development-team/AROS/commit/e93a4c245f27a87c9c4c1d39206694b39059998a HDMI] # fix syscall bug in the current raspi kernel code # Graphics depend on having a decent "bcmdma.resource" implemented as to use the cpu's dma engine. The sd card driver needs to use it for transfers to/from the controller - and the gfx system needs to use it for "blitting". # [https://github.com/aros-development-team/AROS/commit/4019d84e4975d4dad987a12d57fe108f5ac048e6 Improve the gfx driver], [ vc4gfx HIDD] add [http://dri.freedesktop.org/wiki/VC4/ Gallium3D support] # [https://github.com/aros-development-team/AROS/commit/b13905b3e8e45b089f520b44692c81affddd066f Improve] the [https://github.com/aros-development-team/AROS/commit/3a876755c070f5c73c4f53c7f4d35b4f923088b9 sdcard] device driver - which is also pretty basic but should work with most cards, rework it to also support pci, etc. sd card interfaces on x86 # The current code using very rudimentary access to the gpio interface - so that should be implemented as some resource for other components to access, as-well as the i2c interface exposed over the gpio interface. that should have a hidd class implemented which uses the gpio resource to communicate. Boot up On power-up, the rpi [http://www.open.com.au/mikem/bcm2835/ BCM 2835] [https://github.com/hermanhermitage/videocoreiv VideoCore4] GPU, not the ARM CPU, is in control, and the SD card slot is the only peripheral device with power. The firmware burned into the BCM2835's VideoCoreIV GPU PROM requires a DOS-style partition table; a FAT-formatted first partition; and the freely redistributable but closed sourced Broadcom files “bootcode.bin” and “start.elf” in that partition. The boot sequence carries out several pre-boot tasks *On powering of the rpi, the GPU reads and executes bootcode.bin, which then loads start.elf *The GPU loads the “start.elf” file, eventually, into the L2 cache and then executes it *configures the memory split for the CPU and GPU *reads and parses “config.txt” from the same partition on the SD card and applies the settings (like a PC’s BIOS settings) *loads the “kernel.img” file, again from the same partition *activates the CPU to begin executing the loaded kernel image The CPU/GPU memory split is hard-coded into start.elf, so Broadcom provides three start.elf images, to give 32M, 64M, or 128M to the GPU for multimedia performance, and the remainder to the CPU. RPi uses [https://github.com/raspberrypi/firmware some closed source loaders] and at some point it loads a binary blob named "kernel.img" at 0x8000, at that point there would be a rudimentary Aros alive. If one wants to use the SD-card then there would have to be a driver for the interface and a fat filesystem handler (SD-card has to be formatted to fat filesystem) Boot code and kernel are now linked together and made into that binary blob, just for starters. Raspberry Pi uses [http://kernelnomicon.org/?p=133 u-boot] and [http://kernelnomicon.org/?p=138 UBoot] as bootloader, there's already some code in the Efika MX port for that. UBoot is a native bootloader and not just for the raspberry pi, it loads after start.elf. You can find Efika MX port from arch implementations, some hacking is needed for the mmakefile.src'es as iit dates back to before the Aros crosstool era or else you get some weird errors while building. You also need to code the bootstrap and serial handling. At the moment it seems that a fastest route for the native build would be to make one binary blob without using the package system. Raspberry's memory layout is pretty simple and if the implemented u-boot doesn't support loading other modules <pre> ? - alias for 'help' mtest - simple RAM test autoscr - run script from memory base - print or set address offset bbm - BBM sub-system bdinfo - print Board Info structure boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' bootm - boot application image from memory bootp - boot image via network using BootP/TFTP protocol cmp - memory compare coninfo - print console devices and information cp - memory copy crc32 - checksum calculation echo - echo args to console fatinfo - print information about filesystem fatload - load binary file from a dos filesystem fatls - list files in a directory (default /) go - start application at address 'addr' help - print online help iminfo - print header information for application image itest - return true/false on integer compare jade - loadb - load binary file over serial line (kermit mode) loads - load S-Record file over serial line loady - load binary file over serial line (ymodem mode) loop - infinite loop on address range md - memory display mm - memory modify (auto-incrementing) mtest - simple RAM test mw - memory write (fill) nfs - boot image via network using NFS protocol nm - memory modify (constant address) pci - list and access PCI Configuration Space ping - send ICMP ECHO_REQUEST to network host printenv - print environment variables rarpboot - boot image via network using RARP/TFTP protocol reset - Perform RESET of the CPU run - run commands in an environment variable saveenv - save environment variables to persistent storage saves - save S-Record file over serial line setenv - set environment variables sleep - delay execution for some time tftpboot - boot image via network using TFTP protocol USB - USB sub-system usbboot - boot from USB device version - print monitor version </pre> Most used [http://www.compulab.co.il/workspace/mediawiki/index.php5/U-Boot_quick_reference uboot options] are fatls usb 0:1, the reason behind INTB_KERNEL is to allow use of the standard Exec function AddIntServer() to add interrupt handlers for hardware drivers etc. AmigaOS never used it for abstract hardware drivers. AmigaOS routed only raw hardware IRQs there. Their assignment was hardcoded. As well as number of them. Actually on AmigaOS every bus has its own interrupt subsystem. For example PCI bus. PCI interrupts on Amiga are routed to a single exec interrupt. 1:1 relationship between CPU and hardware interrupts is present only on PC. IMHO we miss things like AddInterrupt/RemInterrupt methods on our PCI subsystem's device class. PCI bus class should map these methods to whatever is appropriate. This is how it is done on AmigaOS and friends. When these are implemented, raw kernel.resource API will be needed only for several PC-specific drivers with hardwired resources. Exec IRQs are real IRQs only on Amiga hardware. On other machines they can be emulated where appropriate (VBlank is a good example). kernel.resource is meant to be different, its IRQs are hardware-agnostic, they are plain "Hardware IRQ number X, whatever this means". They are low-level actually, and meaningful only in the context of a particular system. Was that not the transition from irq.hidd to kernel.resource? No. A long time ago there was another hacky bit named INTB_TIMERTICK. It was "abstract timer interrupt", used by timer.device. It was the same as VBlank, but with larger frequency. I removed it, because kernel.resource API was a cleaner way to access this interrupt. Furthermore, there can be more than one timer in the system. I am even thinking about bringing back timer HIDD definitions again. hpet.resource is a bad idea. Can someone please enlighten me a little on how the scheduler is meant to work? Poseidon.library creates its "Poseidon Event Task" during RTF_COLDSTART -> then calls Wait(), and ends up in limbo because wait disables interrupts (used for the scheduler heartbeat), and basically waits forever because the sigbit is never set, since krnSwitch doesn't switch the task unless TF_SWITCH is set, and no codepath run during this seems to set it?? TF_SWITCH does not disable/enable switching. This flag just enables to run user-supplied hook when the task is being switched away. It is completely safe to call Wait() in Disable()d state. Doing this actually temporarily breaks this state. IDNestCnt gets remembered in struct Task, then next task is selected, and its IDNestCnt is restored in sysbase (see kernel_scheduler.c). If there are no other tasks, then your cpu_Dispatch() should enable interrupts on the CPU and enter idle mode. See x86 implementation for good example. You miss what happens next... 1. KrnSwitch() saves context of your task, saves IDNestCnt (core_Switch() and cpu_Switch()), then drops into cpu_Dispatch(). 2. cpu_Dispatch() calls core_Dispatch. Then two cases are possible: 2a. There is a READY task. It is picked up, its IDNestCnt is restored in SysBase, then cpu_Dispatch() needs to restore registers and exit. The next task is run. 2b. There are no READY tasks. core_Dispatch() returns NULL. In this case your cpu_Dispatch() should enter idle loop. It should just enable interrupts on the CPU and put it on halt. This allows it to process hardware interrupts. Eventually some of your interrupt handlers wakes up your task and puts it into READY list. My heartbeat interrupt has been slowed atm to help debugging - but it never actually gets a chance to fire because of the Wait() disabling interrupts. Perhaps you have forgotten to enable interrupts in your idle loop. There is a change in the format of AROS executables. Until now we were using Elf RELocable files which are usually used as intermediate object files. We had them for various reasons, one of them was how AROS files were built in the past. That days we had no real aros cross compiler and the option to embed relocation data in unix executables (or in executable files in general) was rather new and not every linux/unix system had it. Therefore we have decided to use intermediate files. Although it was somehow working (and it is still working :-)), it has some drawbacks. Therefore decided to introduce real Elf EXEC types, in first turn implemented on ARM target with option to expand in future to all other AROS architectures. The first patch was pretty easy and appeared to work somehow. It generated nice executables with embedded relocation info. Not only that, it also removed all global symbols adjusting relocation data to be relative to the beginning of the sections. That move reduced number of symbols in each executable significantly (depending on the file between 20 and 80% of all symbols could be removed). The only symbols that stayed in the file are local ones - due to the nature of the patch wasn't able to remove them since we have not seen them in the symbol hash table. The patch didn't worked though. The files were relocated, AROS kernel loaded, but it crashed very early. What happened? Well, the nature of ARM relocations happened :) Most of the relocation data on all machines is rather simple. Relocation can be absolute or pc-relative, sometimes the offset has to be bit shifted. On ARM v7 there is another one. There, when one wants to load an address of function/variable into register a combination of two instructions can be used: movw and movt. The first one loads immediate into lower 16 bits of a register while clearing upper 16 bits. The second one loads immediate into upper 16 bits without touching lower halfword. Loading of a pointer into a register looks like this: movw r0, #:lower16:label movt r0, #:upper16:label In this case there are two relocations - one for lower halfword and another for upper. If an overflow of lower 16 bits occurs during relocation process, the upper one should be updated as well. Unfortunately with current patch and with typical ARM executables there is not enough information to perform the calculations. There are two options - the first one would be to give up and go back to "fake" executables, another one would be to change from REL to RELA relocation info. The latter contains an addend, extra data which can be used to perform all the relocation calculations I need. Decided for the second option. The patch is already in the works. There is another function for the binutils' bfd backend to perform the final relocation. There can decide what to do with every reloc info, modify data and eventually strip some symbols. An advantage is - at this stage of the linking process have also full access to all local symbols so can change all relocations section relative and eventually strip all symbols from the files. === GPU === Most of start.elf runs on the GPU. Placing ALL the userland GPU code in the videocore.hidd isn't going to be a terribly big problem because the code they published is nothing more than a shim that sends data straight to the GPU to execute. The good news about this is that we only need to write our HIDD using the OpenVG API. The shim is relatively small codewise and lives in the ARM memory (the actual OpenVG code itself lives in the GPU RAM area and its loaded from start.elf). That's also the bad news. Our driver has to translate AROS video calls to OpenVG calls, for most tasks it should be easy, for some, not so much. It's still probably less difficult and less work, than controlling the GPU directly. The other good news is that anything done through OpenVG happens on the GPU, its truly accelerated. It also has some nice font functions, meaning we can lead into an accelerated text mode later. Basically, AROS resets or locks up when it tries to use AROS_ATOMIC_INC or DEC. If I comment out the byte/word operations in the header files and use non-atomic operations, the code works as expected. have read that the L1 cache needs to be enabled to use LDREX and co (which I also read is only meant to be used on multi processor systems with shared memory) - however I am certain this is correctly enabled. If you are using LREX or STREX, you should have L1 cache enabled, at least on the ARM CPU I work with at work. L1 cache is enabled by enabling the MMU *AND* setting the C and I bits in the CPU - the C bit is ignored, and the I bit only covers the 16 byte instruction pipeline if the MMU is not enabled. Can you verify that your assembly is generating LDREX/STREX? From the behavior, it almost sounds like its generating the default Semaphore locked atomics. Impossible. There are no semaphore-locked atomics. There are Disable()/Enable()-based ones instead. And there's a special #define AROS_NO_ATOMIC_OPERATIONS in this case, which tweaks Disable()/Enable() implementations not to recurse forever. I have tested this on ARMv5 which does not have ldrex/strex, it works fine. On those ARMs there's no way to have real atomics. On other OSes (like Linux) this is done by introducing things like atomic_t, which appears to be a complex structure, holding the value together with accompanying spinlock (implemented using swp). #warning "TODO: lookup optimal mmu table settings for raspi memory" /* Set up an identity-mapping for all 4GB */ for(x = 0; x < 4096; x ++) { pagetable[x] = x<<20 | (0x40002|0x80000|0x010000|0x00C00|0x04); } Shouldn't there be a second loop that sets the 'C' bit in the descriptor for the RAM pages? Currently, you have TEX=0, C=0, B=1 for all pages (Shared Device). You should have TEX=0, C=1, B=0 for RAM (Write-Through, Cached) So .. pagetable[x] = x<<20 | 2; should be enough? No, for RAM you need to change the '| 0x40' to '| 0x80' tell dosboot the correct defaults to use Please don't do this. This bootconfig.c is a deprecated legacy thing. I wanted it to go away completely with time. Instead, display drivers should auto-install themselves during own initialization phase. I. e. detect hardware=>instantiate itself. This should make things way simpler. With this approach you only need to add the driver into KS image to get the device autobooted. No hardcoded stuff. Currently VESA and VGA drivers do this, look there for examples. never rewrote ATI driver because i don't have any test system for it. they defined a smaller AROSCPUContext than the ExceptionContext - yet reference it as ExceptionContext in other places, and since it hasn't allocated enough storage for ExceptionContext, are corrupting memory/the structure (since the elements that are there don't map 1 to 1 with the exception context). AFAIK, AROS has been moving in a different direction to this in recent years. It is the job of graphics HIDDs to allocate bitmaps etc. so that they have the most suitable characteristics, including allocating them from GPU RAM where possible. The concept of chip RAM is only for legacy code, and most if not all non-68k platforms should have all system RAM marked as chip. BTW, is the video processing code you mention CPU code or GPU code? Also, IIRC we have support for "external memory allocators". Perhaps that's what we need for the allocation of GPU RAM through the mailbox. All hosted and x86 native ports should use proper context formats. trying to clarify if the vblank handler has to have run by this point to prevent this deadlock. Actually, no. Unless you have installed VBlank handler which should wake up at some point. Without VBlank there will be no quantum count. Consequently, there will be no forced preemption. But the rest will work, and multitasking will be cooperative (switch happens only when current task voluntarily gives up the CPU). Does it depend on the vblank having run before this point? and if yes what does that mean on systems where it might be able to run enough code (e.g. get to this point) before the vblank interrupt has triggered? What is it waiting for? It could wait for timer, in this case you need timer.device working. VBlank is currently needed for exec's quantum counter. In current native ports we have only a single timer, which is served by timer.device. VBlank is simulated by timer.device also. If your machine has two timers, then you can use one of them for VBlank, and another for timer.device, this will simplify things down. VBlank needs to be 50 Hz for historical reasons, many programs use it as cheap timer. I am periodically thinking about making some abstract mechanism to be able to change quantum source (and untie it from 50 Hz), but have no time to come up with something good. Additionally i started disliking timer.device hardcoded design when PC has got many timers (old 8253, APIC, HPET). Currently i think there should be some low-level entity representing tick source. timer.device should just select the most appropriate source for its units. The BCM2835 has 4 GPU based timer sources - 2 are used by the GPU, so im using Timer3 for our heartbeat and the remaining one will be free to the system. There is also the less capable ARM timer but that is dependent on the CPU frequency. Very good. You won't need any emulation. Set the heartbeat to 50 Hz and drive VBlank from it. Use other timer for MicroHZ. Can you use the 'econsole.hook' I make for debugging the Sam460 via the serial port? It provides a before-anything-else shell prompt on the serial port. You can then do 'NewCLI' to test your graphics, or use any DOS command in shellcommands.resource. You should just be able to add econsole.hook to your module list, and use 'econsole' in your bootargs. So long as you have a working Exec/RawMayGetChar and Exec/RawPutChar, it should work. Also make sure to add shell.resource and shellcommands.resource for this. That should have done it. If you set "#define DEBUG 1" in arch/all-native/econsole/econsole.c, do you get any additional serial output? have added it to the build and added econsole to the command line - and can see the bootloader picks up on the emergency bootconsole tag, but I still only get the insert bootable media display? Im assuming it exposes a fake filesystem that tricks aros into booting? The contents of which are: ECON:AROS.boot Way to handle the scheduling code? The implementations I had been following were causing problems, due to cascading interrupts which I cant handle properly in the asm stubs just now (when they break disable etc.) - since it means detecting the interrupted codes cpu mode and getting the correct sp/lr for it, and that's just too tedious for arm. To work around this ive added a system idle task which does nothing - and when the scheduling code has no task to run switches this in and lets it run, thereby allowing the interrupts etc to resume until something does need to happen. Also, by adding accounting code to cpu_Switch() and cpu_Dispatch(), it should allow the system to log idle time correctly (as well as running tasks). have thought of also adding an additional task that never runs, solely to record time spent in IRQ handlers, but I digress.. was under the impression that kernel.resource should *never* be used outside of exec.library. This is a wrong impression. Michal started designing it because portable nature of AROS does not fit well into exec's API with all its assumptions. So, he started the new, hardware-agnostic kernel API from scratch. Yes, exec sits on top of it in places. But kernel always meant to be open thing. Otherwise it would not exist. it wasn't meant to be just used willy nilly by user code - but by lower system components (e.g. exec) so that they could be implemented in a more generic fashion, and the kernel resource itself hide the systems quirks. Adding new things there perfectly keeps up with our decision to minimize AROS-specific intervention into APIs which can clash with MorphOS/OS4 extensions. We want at least source-level compatibility there. Binary compatibility on PPC would be extremely cool, but at the other hand we have no maintainer for this, as well as their ABIs are a bit weird and far from optimal, especially MorphOS one, because it aims for m68k binary compatibility. It depends on what exactly is being implemented - there's no reason we should have everything crammed into kernel.resource if it doesn't need to be (i.e. if its better suited as a separate component/subsystem in its own right) The _LE versions are for when you have endian swapping taking place. If the graphics are the same endian as the CPU, no swapping should occur. I ran into a similar terminology problem in SDL with a friend insisting that his Radeon 7000 on his PC was big-endian. It is not, it just uses the same endianness for the graphics card and the CPU so no swapping was necessary. They were both little-endian. The _LE versions are because the PixFmts refer to the bitmap data being in big endian format in memory, for which the normal version would need to do endianness conversion before applying the shifts/masks. on this platform it is in _LE in memory also so we don't need the conversion hence using the _LE version of the call). would use _LE (if it's really little endian 16 bit mode). What is the bare minimum needed to implement a framebuffer based gfx driver, with our software handling the rest? I have tried with just a gfx class that only expose new/dispose/newbitmap - and having an onscreenbitmap used only for the framebuffer itself (with all other bitmaps being chunkybm, and the framebuffer's superclass also being chunkybm), but that alone isn't enough it seems? You can use workbench/hidds/sm502/ as your example - it is as simple as I could make it. So, AROS creates the framebuffer bitmap (I have verified this) -> so surely it should be capable of then rendeing into it? I don't actually create the framebuffer "bitmap object" myself - only as a result of being asked to. I so far have -: vc_init: queries the gpus memory, and sets up a fake memory handler for it, then adds the bootmode driver and returns saying all is well vc_gfxhidd:New: sets up some fake syncmodes to test with and creates the real gfx object. vc_gfxhidd:NewBitmap: checks if its a framebuffer and uses the onbitmap class or uses the chunkybm class otherwise vc_onbitmap:New; creates a chunkybm object and then pushes the real framebuffer address into it as the buffer, So, AROS creates the framebuffer bitmap (I have verified this) -> so surely it should be capable of then rendeing into it? I don't actually create the framebuffer "bitmap object" myself - only as a result of being asked to. The code I currently have on SVN seems to create the framebuffers bitmap object fine, but then crashes in intuitions DisplayDriver callback. In particular it crashes performing the getattr on the system default pointer. don't expose MEMF_CHIP in an allocatable form so AllocSpriteData was failing (and other code later doesn't check if the values are valid == illegal memory accesses) Actually MEMF_CHIP has to present, for historical reasons. This has been never fully agreed upon, but in ports i wrote i exposed the whole memory as MEMF_CHIP. The idea behind this is that CHIP is originally the memory where graphics and sound data can be put. On non-Amiga platforms there are no restrictions on this, so the whole memory is CHIP. Yes, many old software can misbehave with CHIP memory size larger than 2MB. But this actually applies only to m68k AROS which is going to run m68k binaries. In other cases it's quite logical to fix the program when porting. As to original question: yes, it's enough to have a framebuffer bitmap (one with aoHidd_BitMap_FrameBuffer set to TRUE) and PutPixel routine. It framebuffer can be served by chunky bitmap class, then you can simply create chunky bitmap with your own buffer (see how VESA driver does this). Chunky PutPixel is already there. struggling to determine what is the correct pixfmt to use for the 24/16/15 bit gfx modes on the RasPi. AFAIK it uses RGB565, for 16bit but im unsure what shifts etc should go with it? suffice to say Im getting the wrong colors so far lol. <pre> redmask: 0x0000F800 greenmask: 0x000007E0 bluemask: 0x0000001F alphamask: 0 redshift: 16 greenshift: 21 blueshift: 27 alphashift: 0 </pre> It should likely be vHidd_StdPixFmt_RGB16_LE This stuff is a bit confusing. The "names" of the stdpixfmts are based on the layout in memory, ignoring endianess. So for example: ARGB32: will be 0xAA 0xRR 0xGG 0xBB in memory on both big endian and little endian machines. The shifts and masks OTOH are based on pixel access (ULONG in this case), so differ depending on whether you run on big endian machine or little endian machine (that's why there's stdpixfmt_le.h and stdpixfmt_be.h in rom/hidds/graphics/). With the 16 bit pixel format it's even more confusing, as for example it's impossible on little endian machine to describe RGB16 with shifts/masks alone. That's why there's vHidd_PixFmt_SwapPixelBytes_Flag. (RGB16 == RRRRRGGG GGGBBBBB in memory, and for pixel (WORD) access on little endian machine it needs to be accessed as GGGBBBBBRRRRRGGGG). The shifts btw indicate how much to shift the component to the left (!) so that it is moved to the highest bit (31). The aHidd_PixFmt_StdPixFmt you specify will be ignored most of the time, because when the pixelfmt is registered, the gfx hidd checks if there's an identical pixfmt (shifts/masks/etc., but ignoring pixfmt->stdpixfmt) already in the system, and if so, it uses the already existing one and does not create a new one. In theory it would be better if gfx drivers could simply/only specify a StdPixFmt without all the shifts/masks stuff when the gfx driver uses pixfmt which matches one of the stdpixfmts exactly. Another possibility would be for gfx drivers to use HIDD_Gfx_GetPIxFmt(stdpixfmt_gfx_driver_wants_to_use) and then peek shifts/masks from it and fill out a pixfmt tag list based on that. 15bit very blue/green: Try to pass same shifts/masks/etc. as in 16 bit pixfmt (maybe you think it's using 15 bit R5G5B5 (or swapped) but it's actually still using 16 bit R5G6B5 (or swapped). aHidd_PixFmt_StdPixFmt you pass is mostly ignored. It's the shift/masks/etc. that count. But I would still pass the correct one (_LE) == whatever rom/hidds/graphics/stdpixfmts_??.h uses in the entry where you have looked up shifts/masks/etc. Use the shifts/masks/etc. from the entry in stdpixfmt_le.h (if you are running on little endian machine) or stdpixfmt_be.h (if you are running on little endian machine) that matches the pixfmt that its meant to be. 0xAA,0xRR,0xGG,0xBB on little endian (->entry in stdpixfmt_le.h which says vHidd_StdPixFmt_ARGB32) 0xBB,0xGG,0xRR,0xAA on little endian (->entry in stdpixfmt_le.h which says vHidd_StdPixFmt_BGRA32) 0xAA,0xRR,0xGG,0xBB on big endian (->entry in stdpixfmt_be.h which says vHidd_StdPixFmt_ARGB32) 0xBB,0xGG,0xRR,0xAA on big endian (->entry in stdpixfmt_be.h which says vHidd_StdPixFmt_BGRA32) it feels like AROS trashes the alpha component, otherwise it should be 8A8R8G8B. read on the subject suggest its in 1x5r5g5b (x is ignored) to keep 16bit alignment . What I see on screen suggests to me that wrong shift/mask are being applied - however going by the 16bit versions it all looks correct to me so I am really confused as to what is happening. The output image looks to have too much green/blue, and very weak red. Why did usbromstartup become HW-specific ? In the past i have done a big job separating kickstart into several parts. I have never got any responses, so i re-describe my idea. For now it loads the hs otg chipset driver .. The idea is to minimize amount of archirecture-specific modules to make user's life easier. So, the kickstart was split into 'base' (which does not contain anything machine-specific) and 'BSP' (Board Support Package) which contains all hardware-specific stuff. This way, for example, distribution makers can save up space on CD and make CDs with multiple platform support. Different configuration would load the same base with different BSP's. Next there was some part which is entirely missing on hosted. These are filesystems. Hosted ports do not need them to boot up, so on hosted they are left out. At the other hand, they are also architecture-agnostic. So i put them into 'FS' package (standing for 'filesystem'). Poseidon is one more big part. I made it into separate package in order to allow users to omit it if they don't need it (for example, to run on retro PCs without USB). Personally i have one. Again, Poseidon is hardware-agnostic (well, there are USB drivers but HCIs are pretty standard). It's mandatory on PI since there are no other interface types - so being a separate package is irrelevant/pointless. Is Raspberry's USB controller non-HCI compliant? Actually i expect it to be compliant, then wouldn't it be better to make existing drivers discovering them? AFAIK its HCI 1.0 compliant but I'm not familiar enough with poseidons drivers, nor USB, to just hack away at the existing code. Perhaps once i'm more familiar with the workings I can merge in the changes needed to get it operating but for now I will focus on getting it running. Also our drivers have known issues so perhaps a fresh set of eyes might shed some light on what is going wrong. Another interesting question is whether Poseidon can operate on device side. Is it flexible enough? How similar is being a USB host and USB device? think it will need a bit of work on Poseidon's side. Until then I will force the driver into Host/Master mode in the init code, but leave open device etc to configure the chipset for either's use - and look at trying to add support for working in Device/Slave mode & switching modes once it's up and running. Actually USBROMStartup is some kind of kludge. Can there be any alternative? Could device drivers be self-installing, like our HIDDs? This would get rid of need to list them in USBRomStartup. And there is one more thing about modular ports. In order to actually implement this, your bootstrapping environment should provide the ability to load several files. On PC this is provided by GRUB2. on CHRP you can read filesystem via OpenFirmware, and Sam's Parthenope relies on modified u-boot. If your bootstrap allows to load only a single file, then you stuck with monolithic kickstart. By the way... u-boot allows not only to boot up a single uImage or zImage, it also allows to write client programs AFAIK. With this approach, you actually can write modular bootstrap for ARM AROS using unmodified u-boot. [http://repo.or.cz/w/AROS.git/commit/e7bdc7e7b7f12b07aa24c739abb63721a872a53a arasan eMMC sdcard controller specific header which is not USB] and [http://repo.or.cz/w/AROS.git/commit/8bd19674084526a534ac11f7d4c51932e9ffe3d2 added prelim sdcard device]. [http://repo.or.cz/w/AROS.git/commit/9ab8217f61911fb8b7fd41bee46a992b4668ced1 do not set 4bit data mode, or enable acmd12/dma int's] Framebuffer - basic display RasPi has to speak to the "operating system" which runs on the GPU itself and request/free memory - it cant directly manage it itself, and so the managed functions were used to wrap these calls. The Arm and GPU share memory space. The framebuffer is shared. The Arm can write a pixel and it will appear on the screen (through GPU hardware) without flushing/copying being required. The GPU can composite multiple FB's in real time - so you have a number of surfaces defined which are rotated etc and composited in real time to the output. Copying can map from the address space of the Arm to the flat space of the GPU which takes some code, but I don't think whole buffers are copied. The DMA hardware can also access the whole memory space and can perform 2D fills and blits (no blending). This is documented in the peripheral spec posted. The DMA is just an Arm accessible peripheral and can be set up with low latency (e.g. microseconds). must use a 0xc0000000-based bus address to access SDRAM, yet non-DMA access should go via a 0x0-based bus address. For 2D dma, set TDMODE, and the spec says "interpret the TXFR_LEN register as YLENGTH number of transfers each of XLENGTH, and add the strides to the address after each transfer." so set STRIDE to pitch of the image, the width is XLENGTH and height is YLENGTH. You would fill by not setting the SRC_INC and point source to your fill data. The DMA cannot see the ARM's L1 cache, so you would map the framebuffer with ioremap_nocache. Depending on where the source data comes from, it may need an L1 cache flush. The DMA can see the L2 cache. Use 0xC0000000 bus addresses when L2 is disabled and 0x40000000 bus addresses when L2 is enabled. (actually just call virt_to_bus and you'll get the right address out). openGLES/openVG has high latency. Writing to framebuffer then reading it back is very inefficient (e.g. milliseconds). If you can drive it a unidirectional way, just streaming commands at then that is efficient. openVG is not implemented on top of openGLES - it uses the same hardware but as a first class interface To improve the Gfx driver, we will need a DMA resource implemented so can use to perform DMA operations. The Gfx driver will need this to perform blits. USB * Model A and B limited to 150 mA per port. * Model B+ and Pi 2 introduced configurable 600 mA to 1.2 A support over all ports - anything above that requires a powered USB hub. Implementing the hardware driver that Poseidon uses to interact with the USB components. Have code in place to (try) and initialise the USB chipset, and configure host/device mode operation (though AFAICT Poseidon doesn't support device mode). Started to get the "virtual" root hub written for the single USB port so that Poseidon should at least list it correctly in the GUI - and try to interact with it to find peripherals. The BCM2835 uses a soft IP block from Synopsys’ DesignWare library (DWC), specifically the block is called dwc_usb_2_0_hs_otg_subsystem-ahb_se (“USB 2.0 Hi-Speed OTG Controller Subsystem w/AHB Interface SE”). There is no public documentation for this, and pretty much zero chance of anyone getting hold of it even with NDA. However, there's a Linux driver written by Synopsys ([https://github.com/raspberrypi/linux dwc_usb]). Specifically directories [https://github.com/raspberrypi/linux/tree/rpi-patches/drivers/usb/host dwc_common_port] and [https://github.com/raspberrypi/linux/tree/rpi-patches/drivers/usb/host dwc_otg]. The Synopsys code is actually under a fairly permissive licence – it's not GPL, it's similar to BSD (’don't sue us if it breaks’ is pretty much the only clause). So this should not be a barrier to porting the code. The code is really well written, with a nice partition between the work done by the driver (dwc_otg, which is fairly involved, given the host does more work than a conventional EHCI driver), and the interface to Linux (dwc_common_port). Probably only need provision of relevant changes to dwc_common_port. Other things to consider.... * Provision of necessary headers to get it to compile * Provision of necessary functions (main issues are wait queues, threads, work queues, tasklets, timers, spinlocks and mutexes (multithreading) ) * Interfacing between USB stack and the driver. dwc_otg/dwc_otg_hcd_linux.c looks like the place to start. the Linux bits of the headers are only required for the dwc_common_port library. dwc_common_port includes a variety of crypto functions which are not used – it appears to also be used for ultrawideband (UWB) and wireless USB (WUSB) drivers where crypto will be an issue, but it isn't going to be for plain wired USB. Every USB driver acts as an USB hub as well in order to let Poseidon control the state of USB ports. The code there was reading status of the only USB port in Raspberry's CPU but when changing the status it erroneously deleted some of the status bits, including the port enable one. It was so because those bits in the status register are of a type Read/WriteToClear. It means, if one does not want to change their value from 1 back to 0, one has to actually write the 0 value. Very practical thing e.g. in interrupt handlers, where one reads the interrupt status register to learn what was the interrupt reason, and writes it back to the same register in order to clear the interrupts. After fixing that code it turned out that the communication was still unsuccessful. Apparently the USB device was not understanding the host for some reason. That should not happen since the request sent was one of the standard ones implemented by virtually anything with an USB connector, assumed that Poseidon clears the data caches before forwarding the work to the USB drivers but that's the responsibility of the driver itself. The USB device responded and acknowledged the transmission! But why were all the request sent after address change failing with timeout? They should not. Once again, address set is supported just by anything. Tried to contact the device at address 0 once again and there it was, still responding properly. The enlightenment came. The bus address for DMA transmissions was, as it is in many bare metal USB implementations, just the pure memory address of the buffer as seen by the ARM cpu. Have "prefixed" it with the real location of uncached RAM and booted AROS once again. Trident saw this: Product : Hub: Vdr=0424/PID=9514 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 9 SubClass : 0 DevProto : 2 VendorID : 1060 ProductID : 38164 DevVers : 0200 and this: Product : Vendor: Vdr=0424/PID=EC00 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 255 SubClass : 0 DevProto : 1 VendorID : 1060 ProductID : 60416 DevVers : 0200 and even this: Product : Hub: Vdr=0424/PID=9514 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 9 SubClass : 0 DevProto : 2 VendorID : 1060 ProductID : 38164 DevVers : 0200 What are these things? The first one is USB hub built in the Raspberry. Thanks to this one the Pi machines (with exception of Pi0 and computing modules) have more than just one single USB port. The second one is the network chip in raspberry, the third one is my USB SD card reader which have just connected to see what happens. AROS tried, of course, to boot from it ;) So, the first step towards working USB is done. The control transfers are working as you can see above. Next step is to implement bulk and interrupt transfers, having the basics in place. Finally some error handling will be added and USB for Pi will be as complete as the PC version. [http://www.raspyfi.com/raspberry-pi-usb-audio-fix/ Issue with USB Audio] Audio [https://github.com/raspberrypi/linux/tree/rpi-patches/sound/arm audio] and its [https://github.com/raspberrypi/firmware/issues/2 very high speed message passing interface type of thing VCHI] The Model B+ added an additional voltage regulator for the audio output and an additional output driver to drive low-resistance loads like headphones. However it is still using pulse-width modulation (PWM), which has a major impact on sound quality the old Raspberry Pi used a linear voltage regulator to provide the 3.3V to many of the components on the board while the new one uses a switching regulator. Both can perform reasonably well. However switch mode power supplies often show higher noise figures Analogue audio Audio over HDMI rev 1.3 & 1.4 Ethernet 10/100 BaseT Ethernet RJ45 socket GPIO GPIO shouldn't be too bad but bear in mind it is already accessed in places so they would need to allocate pins etc through it (e.g. sdcard to flicker the activity light, serial debug to output data on the GPIO pins) Probably a resource rather than a device... Started an i2c driver that will need to allocate GPIO pins. Feel free to work on it if you are interested ;p GPU graphics with 2D and 3D acceleration Sadly none yet for 32bit but for 64bit... == References == ===Hosted=== ==== Linux ==== Change lxde to another sudo leafpad /etc/x11/xinit/xinitrc xorg.conf <pre> Section "Screen" Identifier "Default Screen" DefaultDepth 16 SubSection "Display" # Viewport 0 0 Depth 16 Modes "800x600" EndSubsection EndSection Section "Device" Option "Backingstore" Identifier "Card0" EndSection </pre> Will raspberrypi ARM programs run on other ARM archs and vice-versa ? If not I would like to use different cpu names for archs which are incompatible. All code compiled for at most armv6 with softfp float abi will work on all softfp ARM targets, including raspberry. Code compiled for hard-float ABI will not work on any softfp target. But then, hard-float abi uses -armhf- cpu name. keyboard or mouse not functioning or partly working lsmod kernel and modules (stored in /lib/modules/ get from https://github.com/raspberrypi/firmware and click on ZIP button) have to be updated simultaneously sudo Apt-Get Update sudo Apt-Get Install <program > <program > cksfv joystick p7zip-full stopwatch mtpaint searchmonkey zip geany renameutils fbreader unrar-free mhwaveedit xpad milkytracker grafx par2 libreoffice epiphany-browser xbmc ace-of-penguins gweled black-box petris xmahjongg thrust fceu freesci frotz xgammon tuxpuck littlewizard xsoldier micropolis xbubble eboard&xboard (freezes) bomberclone OMXPlayer not responding or working with keyboard or no sound audio through HDMI LXterminal—command "OMXPlayer -o hdmi %f " hdmi issues Setting the hdmi_force_hotplug=1 makes sure the Pi believes the monitor/TV is really there. You might also need to set config_hdmi_boost=4 or even higher (up to 9) if your display needs a stronger signal. If the display is a computer monitor or newer tv, use hdmi_group=1 (auto HDMI use) and if it is an older TV, try hdmi_group=2 (for DMT formats, i.e. for PC monitors) then you HAVE to "set hdmi_drive = 2 to enable HDMI output as this forces HDMI mode rather than DVI mode Do not set hdmi_safe=1 as that overrides many of the previous options. Using a shorter or better quality HDMI cable might help. Make sure your Pi's power supply delivers 1 A and not 500 mA. If you see a problem with the red colour - either absent, or interference - then try a boost composite video changing the RCA cable, then the composite port worked out of the box Boot it as you are doing, without HDMI. If you now plug in the HDMI, do you get the image? In other words, does the Pi think HDMI is connected even when it isn't? Rename all the files in the first partion of the card except bootcode.bin, start.elf and fixup.dat What's the result? Put back config.txt What's the result? for PAL mode sdtv_mode=2 dmi_ignore_hotplug Pretends HDMI hotplug signal is not asserted so it appears a HDMI display is not attached hdmi_ignore_hotplug=1 Use composite mode even if HDMI monitor is detected <pre> # NOOBS Auto-generated Settings: #hdmi_force_hotplug=1 #config_hdmi_boost=4 #overscan_left=24 #overscan_right=24 #overscan_top=16 #overscan_bottom=16 #disable_overscan=0 start_x=1 gpu_mem=128 </pre> tvservice -c "PAL 4:3" <pre> /opt/vc/bin/tvservice -s or tvservice -s state: HPD high|HDMI mode|HDCP off|composite off (0x12001a), 1920x1080 @ 60 Hz, progressive /opt/vc/bin/tvservice -m CEA Group CEA has 1 modes: (native) mode 16: 1920x1080 @ 60 Hz, progressive /opt/vc/bin/tvservice -m DMT Group DMT has 0 modes: </pre> sudo amixer cset numid=3 1 forces the audio to the headphone jack, even with the HDMI video output plugged in config.txt the hdmi_ignore_edid_audio=1 option sems relevant as it should tell ALSA that the only available audio is analog, no matter what the display says There are several different ways that these 4 pole (ring) composite analog cables can be wired up, so some work great in some applications and can be a waste of time in others. What is needed for the Raspberry Pi B+ and above, which like many camcorders needs the ring contact next to the base contact to be the ground. The wiring for the 4 pole are: TIP (LEFT AUDIO CHANNEL) RING 1 (RIGHT AUDIO CHANNEL) RING 2 (GROUND/EARTH) RING 3 BASE/SLEEVE (VIDEO) YELLOW Most Apple based Players and the Microsoft Zune (TM) are wired this way. Most analogue camcorders are wired this way as well, where the ground in on Ring 2 will work with the Pi although you may need to swap your Video plug with the Right Audio plug. Nearly all other MP3 players are not wired this way, the ground is on another ring ie the wrong one. External devices * Camera Module Omnivision ov5647 Sunny 5MP (NoIR version) V1.3 - NoIR at 850&nbsp;nm, peak at 880&nbsp;nm and trails off at 940&nbsp;nm wavelengths * Camera V2 Sony IMX219 V2.1 8mpixel 8MP 8megapixel - 3280 x 2464 pixels - video at 1080p30, 720p60 and 640x480p90 - wider field of view, 62 vs 54 degrees horizontally - * Branded WIFI usb BCM43143 dongle N.B. dreaded error after changing cameras (stupidly without turning off the power first) and lasted through several power cycles. It can be a bad 15-pin FFC ribbon cable, when swapped, camera(s) and the Pi itself are working OK. It can be an instance of a cold solder joint on the CSI connector on the pi board. the camera can be detected (that's done via I2C) but may still not be able to receive image data (done via CSI-2) if something is broken. CSI-2 is uni-directional. Control is generally done via I2C. The CSI-2 receiver always writes to memory, not direct to the ISP. That's the way the Broadcom architecture works as it allows multipass processing easily. GPU memory is accessible from the ARM. Processing using the QPU graphics processors may be possible. currently the only supported sensor is OV5647 and IMX219. The linux drivers are all in the firmware blob, else you'd be looking at at least a man-month of work in a fully fledged imaging lab to do a decent tuning of the camera modules' ISP parameters. Static electricity maybe an issue for the camera module and slightly less for the pi board. * Hosted under ARM Linux which needs to be already installed [http://www.aros.org/nightly1.php current ABIv1] Help building AROS hosted on Linux ARM I was looking a way to use more my Handheld ARM based called Pyra (Dragonbox Pyra) an ARM (Omap5 cpu with 4GB ram) linux based machine (Debian Buster v10 with kernel 5.6.19 adapted) and have a try to compile the latest Aros sources by Deadwood directly on this device. Compilation stops after build libpopupmenu.a and trying to build libatomic have this error: <pre> Configuring build in bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic configure: WARNING: unrecognized options: --disable-nls, --without-x checking for --enable-version-specific-runtime-libs... no checking for --enable-generated-files-in-srcdir... no checking build system type... arm-unknown-linux-gnu checking host system type... arm-unknown-aros checking target system type... arm-unknown-aros checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for arm-aros-strip... /media/farox/pyra2/arosbuilds/toolchain-core-armhf/arm-aros-strip checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking for arm-aros-gcc... /media/farox/pyra2/arosbuilds/toolchain-core-armhf/arm-aros-gcc checking whether the C compiler works... no configure: error: in /media/farox/pyra2/arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic': configure: error: C compiler cannot create executables See config.log' for more details make[2]: *** [mmakefile:4489: /media/farox/pyra2/arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic/.configured] Error 77 [MMAKE] make --no-print-directory TOP=/media/farox/pyra2/arosbuilds/toolchain-core-armhf-build SRCDIR=/media/farox/pyra2/arosbuilds/AROS CURDIR=tools/crosstools/gnu TARGET=tools-crosstools-gcc-libatomic-configure -s --file=mmakefile tools-crosstools-gcc-libatomic-configure failed: 512 [MMAKE] Error: Error while running make in tools/crosstools/gnu: No such file or directory make[1]: *** [Makefile:361: linklibs-libatomic] Error 10 make: *** [Makefile:183: crosstools] Error 2 </pre> looking at config.log on arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic i found that arosbuilds/toolchain-core-armhf/arm-aros-ld: cannot find -laeabi so i do make linklibs-aeabi-arm-quick and the missing lib was built. now the next stop is at fatal error: bits/libc-header-start.h: No such file or directory and fatal error: sys/cdefs.h: No such file or directory in many places so after checking that i have this missing include files i have noted that my include path is a bit different, standard searching path is /usr/arm-linux-gnueabihf but in my system is /usr/include/arm-linux-gnueabihf so if i add my path to some mmakefiles compilation goes on....but is a better way to add this path to avoid every mmakefiles to be changed? i fixed with adding -I/usr/include/arm-linux-gnueabihf to where is missing on mmakefiles like USER_INCLUDES := -isystem $(GENINCDIR) -I/usr/include/arm-linux-gnueabihf $(KERNEL_INCLUDES) P.s. I have changed many mmakefiles and have at least compiled (after many hours) the toolchain doing make every time in arosbuilds/toolchain-core-armhf-build (also have to disable making tests under cplusplus but don't remember the directory ...) but i ask an help to have an automated way to correctly build without modify mmakefiles. Last time I built armhf target was around 2 years ago. At that point I built is via cross-compilation from linux (ubuntu 22.04) using linux armhf crosscompiler (this can explain the path differences you are experiencing) as well as using AROS gcc cross-compiler in version 6.5.0 (build with option 21) in rebuild.sh). Since then AROS GCC has been updated to 10.5.0 and I don't believe anyone tried to build the armhf target again. My suggestion would be to downgrade GCC to 6.5.0 (via editing AROS/config/gcc_def file) and try to first build using cross-compilation from x86_64 linux. Once that works, you will have a "template" to compare to native compilation under arm linux. Thanks for your suggestion...but i think the toolchain with GCC 10.5.0 is compilable if i found a way to pass the path of my system to the script that build (option 21 on rebuild). The other only changes are (but i don't know where to modify...) is to add the build of libaeabi and disable the building of some tests under cplusplus that use exceptions and is not supported under ARM. I'll try to crosscompile with my Linux amd64 PC. For paths look into core-linux-armhf/bin/linux-armhf/gen/config/target.cfg. A number of build-wide variable is set there containing paths to local build system. These variables and the target.cfg file are generated by AROS ./configure script. Thanks compilation now go forward...i changed target.cfg under "toolchain-core-armhf-build/bin/linux-arm/gen/config" and do make on "toolchain-core-armhf-build" dir. Now i need to find where to enable build libaeabi.a so i can build the entire toolchain with option 21 of rebuild.sh I found something that looks like libeabi in AROS/arm-all/arm-aeabi/mmakefile.src. Try adding a third line there: #MM- linklibs-armhd : libklibs-aeabi-arm Though I don't remember needing this library. Possibly the 6.5.0 GCC somehow does this while 10.5.0 is missing this. I try adding this line (and the variant "linklibs-armhf" instead of hd) but it did not solve the automatic building of the missing lib. I must do "linklibs-aeabi-arm-quick". Anyway after have build the aeabi lib i succefully built the toolchain (after many hours...). Smile To test I restarted from selecting option 21 (on rebuild.sh) but after many hours i get the same error of the kernel includes not found...maybe i need to modify the configure script for my case. With the toolchain built i try to build the core-linux-armhf (DEBUG) (option 22) but after a while it stopped with "cannot find -laeabi " so i made it built manually...and now i can continue compiling...i'll let you know if all goes ok. qt9khfgpa0z6kblu9hwf8ny1xll3zqd 4655991 4655990 2026-08-01T12:20:42Z Jeff1138 301139 4655991 wikitext text/x-wiki {{ArosNav}} [[#Native]] [[#Hosted]] ==Introduction== The Raspberry Pi Foundation is a charity founded in May 2009 to promote the study of basic computer science in schools, and is responsible for developing a single-board computer called the Raspberry Pi. The Foundation is supported by the University of Cambridge Computer Laboratory and Broadcom. Its aim is to "promote the study of computer science and related topics, especially at school level, and to put the fun back into learning computing." The original Raspberry Pi 1 Model B computer went on sale in February 2012 and set a new standard shattering the dominance of the PC in the home and education markets. Millions in the various formats, A, B, A+, B+ and Compute have since been shipped worldwide. The original concept of the Raspberry Pi was for a computer board providing Internet access with up to 1080p HD graphics at very low cost. The boards provide a platform for children and adults from any background to acquire computer science knowledge and help develop the future World-Wide-Web and all things internet (IOT hub and bridges out to home network to cloud of sensors). Hobbyists and tech dabblers/tinkerers are the main purchases of the Pis (around half). The rest of the sales are split between education/industrial. While the Raspberry Pi boards were designed primarily for education, they have become very popular with manufacturers of embedded systems. The Raspberry Pi Foundation has ensured backwards compatibility with each new revision. The bare-bones Compute module is aimed specifically at the OEM manufacturer. * Pi 5 - Quad A76 and RP1 "southbridge" with VideoCore 7 4Gb 8Gb LPDDR4X * Pi 4 - Quad A72 64bit VideoCore 6 * Pi 3 - Quad A53 [https://www.raspberrypi.com/documentation/computers/processors.html 64 bit] - VideoCore 4 * Pi 2 - Quad 32bit but more power consumed * Model B+ - lower power usage but same speed as the original Pis * Model A and B - * Compute 1, 3, 4 and 5 - industrial use <pre> 2008 Trustees collected for Foundation 2009 Charity status gained 2010 2011 First Raspberry prototypes 2012 First boards go on sale at CPC and RS. The Model A and B 700 MHz Arm11 - February 29th BCM 2835 2012 First million sold - more than the 10,000 original planned and anticipated 2013 First Alpha Experimental builds of AROS Native for the Pi 2013 Pi Trading launched making grants available, providing in house educational resources and Pi Academy for teacher training 2013 Over two million sold 2014 Over three million sold and updated Model B+ introduced that moved composite video to audio jack and same half gig of memory 2014 Pi Model A+ v1.1 - BCM2711 no ethernet and 1 usb - a little smaller - 2015 Pi 2 Model B - BCM2836 900/600 MHz ARM Cortex-A7 Armv7 quad 32bit core and 32bit VideoCore IV 3d GPU with 1Gb RAM 2015 Over four million first gen pis sold 2015 Over a million pi2s sold 2015 Pi Zero BCM2835 released 2015 Raspberry Pi 2 Model B version 1.2 has armv8 BCM2837 2016 Passed Sinclair total number of computer lines sold - around 7 million 2016 Pi 3 Model B - Broadcom BCM2837 SOC four 64bit ARMv8 Cortex-A53 1.2GHz - 1Gb - bluetooth 4.1, Cypress CYW43438 wireless 802.11n and a dual 32bit VideoCore IV GPU - 4 x USB2.0 ports 2016 Total PIs over 10 million worldwide 2016 Compute 3 launched BCM2837 armv8 Quad 64-bit Core 1Gb LPDDR2 RAM 4Gb Emmc storage 2017 12 million pis sold in total 2017 Pi Zero W 1GHz, single-core CPU A53 released with Cypress CYW43438 wireless 2018 Pi 3 Model B+ - 4c A53 BCM2837B0 - 1Gb, wireless 802.11ac, gigabit ethernet (300Mbit/s) and bluetooth 4.2 - power over ethernet - 4 x USB2.0 ports 2019 Over 15 million sold 2019 Pi 3 Model A with BCM2837b0 with 512Mb, 2019 Raspberry Pi Compute Module 3+ CM3+ LITE Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC 1Gb DDR2 and emmc 2019 Pi 4 Model B - BCM2711 quad 64bit A72 1.5GHz, VideoCore VI, AC wifi, Bluetooth 5.0, GbE, 2 micro hdmi decode up to 4K, USB-C power, 2xVLI USB 3, 2xUSB 2.0, 1/2/4 GB ram 2019 Pi 4 Model 2B - BCM2712 4 usb 2020 Raspberry Pi SC0919 Pico RP2040 2020 Silent Pi 4 upgrade with more USB-c psu support and PI400 1.8GHz inside keyboard 2020 Raspberry Pi Compute Module 4 2021 Pi zero 2 w 64bit quad 1GHz Cortex-A53 BCM2710A1 512mB SDRam 2023 Pi 5 BCM2712 Quad A76 w VideoCore VII - no audio socket - dual 4k displays from mini hdmi - fan connector - 5V 5A psu 2024 Raspberry Pi Pico 2 2024 Pi 5 2GB version uses BCM2712D0 2024 Pi-500 2024 Raspberry Pi Compute Module 5 2025 Pi-500+ 2026 April and May Aros 64bit fixed, added AHI audio, VC4 gfx started, usb functions added to rom 2026 June and July Aros 64bit usb2otg started, dma.resource, sdio.resource, bwfm.device wifi added 2026 Late July daily 64bit Pi3 builds start 2026 August .... 2027 2028 Pi 6 </pre> ===Good sites to visit=== *[https://github.com/raspberrypi/firmware/tree/master/ Raspberry Pi Firmware build] *[https://github.com/raspberrypi/linux Raspberry Pi Linux Build] *[https://www.patreon.com/michal_schulz/posts Big endian on Pi] with [https://github.com/michalsc/Emu68 ARM based realtime JIT 68k] *[https://www.riscosopen.org/wiki/documentation/show/Welcome%20to%20RISC%20OS%20Pi RiscOS on Pi3 and Pi4] *[https://github.com/brianwiddas/pi-baremetal Bare Metal Access on Pi 32bit] ===Native=== * 2013-03 Kalamatee starts work * 2013-05 Work put on hiatus * 2015-04 Work continues slowly with mschulz on the kernel and Kalamatee (NicJA) on gpio and usb * 2018 [https://www.patreon.com/posts/i-owe-you-some-20956961 mschulz resume with adding BE big endian support as well] * 2026 [https://github.com/aros-development-team/AROS/commits?author=bsek latest commits for pi 3 64bit] * 2026 [https://github.com/aros-development-team/AROS/commits?author=jonx latest commits for pi 4] * For hosted ARM there is Aeros and [https://aros.sourceforge.io/nightly1.html RaspberryPi 3 raspi-aarch64-system native 64bit] 64bit ArmV8 builds are The status of AROS 32bit native for RasPi was OK. System booting, USB working (although with some issues but plan to fix them). Got stuck on modifying the ABI (application binary interface) and adjusting binutils/gcc to support it wanted to have real executable files but got stuck a little. This change for the type of relocations embedded in ARM files and not sure if this very type is well supported, on the other hand without this change ARM version of AROS wouldn't work well. By reverting the change to ABI we could have a (somehow) working AROS on RasPi, but unfortunately still unstable. Old native [http://www.aros.org/nightly1.html ARMv6 32bit nightlys] and ===Hosted=== [http://www.aros.org/snapshots1.html old linux and android hosted 32bit] ==Build== ===64bit=== ===32bit=== # download/checkout the source someplace, e.g. /build/AROS-Src/ # make a directory to store external sources AROS downloads, e.g. /build/Ports # make a build directory, e.g. /build/aros-raspi-armhf # cd into the build dir, configure, and then run make -: <pre> >cd /build/aros-raspi-armhf >/build/AROS-Src/configure --target=raspberrypi-armhf --with-serial-debug --enable-ccache --with-portssources=/build/Ports >make >make arosboot-raspi </pre> then copy the files from /build/aros-raspi-armhf/bin/raspi-armhf/AROS/ onto an sdcard, and download/copy the Raspi firmware files onto it. You should then be able to boot the sdcard on your RasPi. The current W.I.P tree to svn. it can be built as follows .. <pre> ./configure --target=raspi-armhf make arosboot-raspi </pre> That will generate arosraspi.img, arosraspi.rom and config.txt in bin/raspi-arm/AROS - so either copy just those files to a fat formatted SD card (with the firmware files on), or copy the whole contents of the AROS folder. NB - if you have a Linux/other install, backup the existing config.txt first arosraspi.img contains the bootstrap (which has very basic mailbox code, framebuffer/gpio init, and console "emulation" via code pinched from our libbootconsole), kernel.resource, and exec.library arosraspi.rom contains all the other components needed to boot AROS. The config.txt file will tell the RasPI bootstrap to load our arosraspi kernel and ramdisk (rom). the bootstrap has minimal mailbox code, planning on adding either a resource or library that driver/app code will use to access it (likewise for GPIO) ==== Hosted ==== Ubuntu VM approach to compiling [http://lallafa.de/blog/2013/06/building-aros-hosted-for-raspbian/ Linux hosted AROS June 04, 2013] ../AROS/configure --target=linux-armhf --enable-includes=/usr/arm-linux-gnueabihf/include --x-includes=/usr/arm-linux-gnueabihf/include --x-libraries=/usr/arm-linux-gnueabihf/lib arm-elf- is symbol-linked to arm-linux-gnueabi- (arm-linux-gnueabi- is more correct in this case, because it's going to be compiling the ARM AROSBootstrap for ARM Linux) *armel - many of the "android" machines require since the entire OS is made for soft float VFP. *armfp - Efika MX target, Raspberry PI, EfikaMX, Pandora and virtually everything (VFP) Keep in mind it's possible to start hardfp AROS hosted on softfp system, though, as long as no calls between AROS and host require floating point parameters. NOTE: hardfloat objects *cannot* be linked with softfloat objects - they have a different ABI. Just keep in mind the arm nightly build machine is quite complex beast. It needs the x86_64 host compiler to compile AROS tools. The arm version is built every night using gcc-4.6.2 crosscompiler (built together with AROS) and successfully builds armel and armhf linux hosted targets. *needs an AROS code compiler for ARM target *as well as unix compiler for ARM linux host (would be best to have both softfp and armhf, we have softfp only now) with full set of libraries and includes. with—disable-crosstools $AROS_CC is always a wrapper around $KERNEL_CC ? If so, this is wrong for some ports. This can break Darwin, Windows and Android port. Yes, Android port will build. And even work. But it's not good because the port will not be ABI-compatible with other ARM ports. Android's ABI is different from GNUEABI. For example: <pre> enum test {foo, bar}; enum test testvar; </pre> siseof(testvar) will be equal to sizeof(int) in GNUEABI (Linux and AROS) and sizeof(short) on Android. This affects linking objects from static linklibs, for example. Previously everything worked because $AROS_CC was a wrapper on top of $HOST_CC. And a real crosscompiler was used on non-ELF hosts. Android is the same. $KERNEL_CC is incompatible with AROS. compiler=kernel is appropriate _ONLY FOR CODE WHICH RUNS ON HOST OS_ (or barebone hardware, if we talk about native). This includes bootstraps, their linklibs, and host-side dynamic libraries (Windows makes extensive use of them because of architectural considerations. No single AROS object should be compiled with this setting. $KERNEL_CC is really compatible with AROS *ONLY IN LINUX-HOSTED* and no more. On other systems (Darwin, Windows, Android) this is not true any more, and compiler=kernel is never going to work. If you want to compile your AROS module against host OS includes, append the following to USER_INCLUDES (or USER_CFLAGS, this is effectively the same): -isystem $(GENINCDIR) $(KERNEL_INCLUDES) $(KERNEL_INCLUDES) expands to: -isystem <your_os_includes> -isystem <host_OS_gcc_private_includes> -nostdinc This makes AROS compiler adhering to host OS APIs. If you want some preprocessor symbols based on what your host OS actually is, add something like -DHOST_OS_$(AROS_HOST_ARCH). Why is there $(GENINCDIR) at all? Because host OS has its own libc includes, which would conflict with AROS ones. And the host OS libc is not binary-compatible with AROS one. Why doesn't Windows-hosted port use $(KERNEL_INCLUDES) ? Because WinAPI includes conflict with AROS ones in fundamental typedefs, like WORD, BYTE and BOOL. It's almost impossible to deal with this in any other way than rewriting WinAPI definitions using AROS types. Building under centos 6.3 (i386) currently, and AROS creates the toolchain itself. haven't yet committed the necessary changes but "./configure --target=raspi-armhf" is enough to start, then "make arosboot-raspi" will generate arosraspi.img (containing the bootstrap, kernel.resource, and exec.library) as well as arosraspi.rom (containing all the other essentials components such as dos, graphics etc). It will also copy over a config.txt file to make the raspi bootstrap code load the correct kernel, and a cmdline.txt that enables exec debug output. *armel = typically Debian 6, Ubuntu Maverick, Android, *armhf = typically Debian 7, Debian 8, Ubuntu Precise, Cross-compiling Ubuntu ARM softfp <pre> sudo sh echo 'foreign-architecture armel' >>/etc/dpkg/dpkg.cfg.d/multiarch echo 'deb [arch=armel] http://ports.ubuntu.com/ precise main universe' >/etc/apt/sources.list.d/armel.list apt-get update apt-get install gcc-arm-linux-gnueabi libx11-dev:armel libsdl-dev:armel </pre> <pre> ./configure --target=linux-arm --x-includes=/usr/include \ --enable-includes=/usr/arm-linux-gnueabi/include </pre> Cross-compiling Ubuntu ARM hard-float <pre> sudo sh echo 'foreign-architecture armhf' >>/etc/dpkg/dpkg.cfg.d/multiarch echo 'deb [arch=armhf] http://ports.ubuntu.com/ precise main universe' >/etc/apt/sources.list.d/armhf.list apt-get update apt-get install gcc-arm-linux-gnueabihf libx11-dev:armhf libsdl-dev:armhf </pre> <pre> ./configure --target=linux-armhf --x-includes=/usr/include \ --enable-includes=/usr/arm-linux-gnueabihf/include </pre> Now, the AROS build is configured properly and all you need to do is: make [https://github.com/aros-development-team/AROS/commit/d84b9a337f9aa059154d9af69275935125166bdd some Apple Silicon support] == Hardware == ===64bit=== ====BCM2712==== BCM2837 * Broadcom BCM43438 chip provides 2.4&nbsp;GHz 802.11n wireless LAN, Bluetooth Low Energy, and Bluetooth 4.1 Classic radio support, 3B+ [https://github.com/aros-development-team/AROS/commit/afa5bc0bb17d5dd06bcfdbac00853a3799ca8d76 LAN7515] ====BCM2711==== ===32bit=== === Core Kernel === ====BCM2708(family)==== which includes the [http://elinux.org/RPi_Hardware BCM2835] (ARM1176JZF-S 700&nbsp;MHz CPU + VideoCore IV GPU + up to 1GB RAM) *Framebuffer (fb) using mailbox *IRQ scheduler, etc *Arasan based SD Card controller *Synopsis DesignWare USB 2.0 OTG controller [http://networkdirection.net/index.php?option=com_content&view=article&id=106:rasperry-pi-usb-controller&catid=45:raspberry-pi&Itemid=54 Unofficial DOCS pdf], [dwc_otg.c FreeBSD], [], [https://www.riscosopen.org/viewer/view/mixed/RiscOS/Sources/HWSupport/USB/Controllers/DWCDriver/ RiscOS USB Driver], [https://www.riscosopen.org/forum/forums/5/topics/878 RiscOS USB Discussion], [https://www.riscosopen.org/forum/forums/11/topics/1893 Other USB RiscOS], [http://plan9.bell-labs.com/plan9/index.html Plan9 Miller's usb] http://plan9.bell-labs.com/sources/contrib/miller/, [https://github.com/Chadderz121/csud CSUD driver], *[http://www.smsc.com/media/Downloads_Public/Data_Sheets/9512.pdf SMSC 9512] USB LAN/Hub chip *CMOS RAM *VCHIQ port which sends messages to the GPU e.g. for mouse, keyboard, audio on HDMI, etc *Audio Driver *Serial Peripheral Interface Bus (SPI) *[http://www.susa.net/wordpress/2012/06/raspberry-pi-pcf8563-real-time-clock-rtc/ I2C registers] *I2S *Universal Asynchronous Receiver Transmitter (UART) *[http://elinux.org/RPi_BCM2835_GPIOs GPIOs] and [http://www.adafruit.com/blog/2012/08/17/broadcom-bcm2835-peripheral-memory-map-and-gpio-alternate-use-chart-piday-raspberrypi-raspberry_pi/ Alternative view of GPIO] BCM2836 * For Pi B+, PI 2 and Pi 3 SMSC LAN9514 chip adding 10/100 Ethernet connectivity and four USB channels to the board The overclock ability has diminished with each chip version as the energy usage has very slowly risen. BCM2837 is one of the warmest yet and might benefit from active cooling (ie fan) if all four cpu cores are in use for a short while. Video playback is not affected due to the custom support in the GPU. 5 V / 2.4 or 2.5 amp power supply recommended if all four cpu cores are running, else throttling (cpu slowdown) might occur. *[http://www.andrewscheller.co.uk/rpi_pcb_modules.html PCB], [http://elinux.org/RPi_Low-level_peripherals Low level features], Implemented so far... # Modify the configure system so that it correctly builds for the arm hardware float raspi target. # Implemented the bootstrap to load the aros modules and prepare the arm to jump into them. Reworked the x86 console support so that parts can be stolen for raspi to use since t has no basic functionality to output to the display. # Implemented a kernel.resource to prepare the raspi for running aros and provide the low level api calls to expose available resources and allow exec, etc function. # Implemented serial debug support # Implemented the exec (and kernel) functionality required to make multitasking work (and interrupts, exceptions, syscalls, etc) # Implemented a timer.device to utilise the hardware timers. # Implemented a very basic gfx driver to expose the hardware's framebuffer. # Implemented an SD-Card driver for AROS which presently only supports the raspi's chipset but can easily be modified to support all sd-card hardware and media. # Fixed the fat filesystem support in AROS so that it can boot on RasPi's normal SD-Card setup. The "rom" image files needed use a different filename than the default linux, etc images so can be easily installed without harming the existing files - you only need to change the loaded images in the config file to get aros to boot. # Updated the build scripts to automatically download the necessary raspi firmware files and wrap it all up so that you can simply extract the archive to a fat formatted sdcard and boot it on the raspi without having to get anything else. # fix everything in contrib and ports to build for raspi (needs proper testing/fixes but allows every component to actually compile at least, including owb) + numerous other fixes to get things working on arm/raspi .. Improvements... # Implement a USB chipset driver "OR" finish the existing one [https://github.com/aros-development-team/AROS/commit/c07d13c724f944674be5db54fc6a71ee72a01809 usb otg] - the current code is mostly a skeleton that should initialise the chipset and then needs relevant code to support the different transfer types. It also has the "virtual" hub code in place to represent the raspi's USB port (from poseidons p.o.v) # Implement a driver for the USB NIC (a few weeks - depends on USB above) # Write an [https://github.com/aros-development-team/AROS/commit/d55d0f74d20b769bbb8c8d386e5c1d7a9154f05a audio driver] (a few weeks - independent of USB) and [https://github.com/aros-development-team/AROS/commit/e93a4c245f27a87c9c4c1d39206694b39059998a HDMI] # fix syscall bug in the current raspi kernel code # Graphics depend on having a decent "bcmdma.resource" implemented as to use the cpu's dma engine. The sd card driver needs to use it for transfers to/from the controller - and the gfx system needs to use it for "blitting". # [https://github.com/aros-development-team/AROS/commit/4019d84e4975d4dad987a12d57fe108f5ac048e6 Improve the gfx driver], [ vc4gfx HIDD] add [http://dri.freedesktop.org/wiki/VC4/ Gallium3D support] # [https://github.com/aros-development-team/AROS/commit/b13905b3e8e45b089f520b44692c81affddd066f Improve] the [https://github.com/aros-development-team/AROS/commit/3a876755c070f5c73c4f53c7f4d35b4f923088b9 sdcard] device driver - which is also pretty basic but should work with most cards, rework it to also support pci, etc. sd card interfaces on x86 # The current code using very rudimentary access to the gpio interface - so that should be implemented as some resource for other components to access, as-well as the i2c interface exposed over the gpio interface. that should have a hidd class implemented which uses the gpio resource to communicate. Boot up On power-up, the rpi [http://www.open.com.au/mikem/bcm2835/ BCM 2835] [https://github.com/hermanhermitage/videocoreiv VideoCore4] GPU, not the ARM CPU, is in control, and the SD card slot is the only peripheral device with power. The firmware burned into the BCM2835's VideoCoreIV GPU PROM requires a DOS-style partition table; a FAT-formatted first partition; and the freely redistributable but closed sourced Broadcom files “bootcode.bin” and “start.elf” in that partition. The boot sequence carries out several pre-boot tasks *On powering of the rpi, the GPU reads and executes bootcode.bin, which then loads start.elf *The GPU loads the “start.elf” file, eventually, into the L2 cache and then executes it *configures the memory split for the CPU and GPU *reads and parses “config.txt” from the same partition on the SD card and applies the settings (like a PC’s BIOS settings) *loads the “kernel.img” file, again from the same partition *activates the CPU to begin executing the loaded kernel image The CPU/GPU memory split is hard-coded into start.elf, so Broadcom provides three start.elf images, to give 32M, 64M, or 128M to the GPU for multimedia performance, and the remainder to the CPU. RPi uses [https://github.com/raspberrypi/firmware some closed source loaders] and at some point it loads a binary blob named "kernel.img" at 0x8000, at that point there would be a rudimentary Aros alive. If one wants to use the SD-card then there would have to be a driver for the interface and a fat filesystem handler (SD-card has to be formatted to fat filesystem) Boot code and kernel are now linked together and made into that binary blob, just for starters. Raspberry Pi uses [http://kernelnomicon.org/?p=133 u-boot] and [http://kernelnomicon.org/?p=138 UBoot] as bootloader, there's already some code in the Efika MX port for that. UBoot is a native bootloader and not just for the raspberry pi, it loads after start.elf. You can find Efika MX port from arch implementations, some hacking is needed for the mmakefile.src'es as iit dates back to before the Aros crosstool era or else you get some weird errors while building. You also need to code the bootstrap and serial handling. At the moment it seems that a fastest route for the native build would be to make one binary blob without using the package system. Raspberry's memory layout is pretty simple and if the implemented u-boot doesn't support loading other modules <pre> ? - alias for 'help' mtest - simple RAM test autoscr - run script from memory base - print or set address offset bbm - BBM sub-system bdinfo - print Board Info structure boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' bootm - boot application image from memory bootp - boot image via network using BootP/TFTP protocol cmp - memory compare coninfo - print console devices and information cp - memory copy crc32 - checksum calculation echo - echo args to console fatinfo - print information about filesystem fatload - load binary file from a dos filesystem fatls - list files in a directory (default /) go - start application at address 'addr' help - print online help iminfo - print header information for application image itest - return true/false on integer compare jade - loadb - load binary file over serial line (kermit mode) loads - load S-Record file over serial line loady - load binary file over serial line (ymodem mode) loop - infinite loop on address range md - memory display mm - memory modify (auto-incrementing) mtest - simple RAM test mw - memory write (fill) nfs - boot image via network using NFS protocol nm - memory modify (constant address) pci - list and access PCI Configuration Space ping - send ICMP ECHO_REQUEST to network host printenv - print environment variables rarpboot - boot image via network using RARP/TFTP protocol reset - Perform RESET of the CPU run - run commands in an environment variable saveenv - save environment variables to persistent storage saves - save S-Record file over serial line setenv - set environment variables sleep - delay execution for some time tftpboot - boot image via network using TFTP protocol USB - USB sub-system usbboot - boot from USB device version - print monitor version </pre> Most used [http://www.compulab.co.il/workspace/mediawiki/index.php5/U-Boot_quick_reference uboot options] are fatls usb 0:1, the reason behind INTB_KERNEL is to allow use of the standard Exec function AddIntServer() to add interrupt handlers for hardware drivers etc. AmigaOS never used it for abstract hardware drivers. AmigaOS routed only raw hardware IRQs there. Their assignment was hardcoded. As well as number of them. Actually on AmigaOS every bus has its own interrupt subsystem. For example PCI bus. PCI interrupts on Amiga are routed to a single exec interrupt. 1:1 relationship between CPU and hardware interrupts is present only on PC. IMHO we miss things like AddInterrupt/RemInterrupt methods on our PCI subsystem's device class. PCI bus class should map these methods to whatever is appropriate. This is how it is done on AmigaOS and friends. When these are implemented, raw kernel.resource API will be needed only for several PC-specific drivers with hardwired resources. Exec IRQs are real IRQs only on Amiga hardware. On other machines they can be emulated where appropriate (VBlank is a good example). kernel.resource is meant to be different, its IRQs are hardware-agnostic, they are plain "Hardware IRQ number X, whatever this means". They are low-level actually, and meaningful only in the context of a particular system. Was that not the transition from irq.hidd to kernel.resource? No. A long time ago there was another hacky bit named INTB_TIMERTICK. It was "abstract timer interrupt", used by timer.device. It was the same as VBlank, but with larger frequency. I removed it, because kernel.resource API was a cleaner way to access this interrupt. Furthermore, there can be more than one timer in the system. I am even thinking about bringing back timer HIDD definitions again. hpet.resource is a bad idea. Can someone please enlighten me a little on how the scheduler is meant to work? Poseidon.library creates its "Poseidon Event Task" during RTF_COLDSTART -> then calls Wait(), and ends up in limbo because wait disables interrupts (used for the scheduler heartbeat), and basically waits forever because the sigbit is never set, since krnSwitch doesn't switch the task unless TF_SWITCH is set, and no codepath run during this seems to set it?? TF_SWITCH does not disable/enable switching. This flag just enables to run user-supplied hook when the task is being switched away. It is completely safe to call Wait() in Disable()d state. Doing this actually temporarily breaks this state. IDNestCnt gets remembered in struct Task, then next task is selected, and its IDNestCnt is restored in sysbase (see kernel_scheduler.c). If there are no other tasks, then your cpu_Dispatch() should enable interrupts on the CPU and enter idle mode. See x86 implementation for good example. You miss what happens next... 1. KrnSwitch() saves context of your task, saves IDNestCnt (core_Switch() and cpu_Switch()), then drops into cpu_Dispatch(). 2. cpu_Dispatch() calls core_Dispatch. Then two cases are possible: 2a. There is a READY task. It is picked up, its IDNestCnt is restored in SysBase, then cpu_Dispatch() needs to restore registers and exit. The next task is run. 2b. There are no READY tasks. core_Dispatch() returns NULL. In this case your cpu_Dispatch() should enter idle loop. It should just enable interrupts on the CPU and put it on halt. This allows it to process hardware interrupts. Eventually some of your interrupt handlers wakes up your task and puts it into READY list. My heartbeat interrupt has been slowed atm to help debugging - but it never actually gets a chance to fire because of the Wait() disabling interrupts. Perhaps you have forgotten to enable interrupts in your idle loop. There is a change in the format of AROS executables. Until now we were using Elf RELocable files which are usually used as intermediate object files. We had them for various reasons, one of them was how AROS files were built in the past. That days we had no real aros cross compiler and the option to embed relocation data in unix executables (or in executable files in general) was rather new and not every linux/unix system had it. Therefore we have decided to use intermediate files. Although it was somehow working (and it is still working :-)), it has some drawbacks. Therefore decided to introduce real Elf EXEC types, in first turn implemented on ARM target with option to expand in future to all other AROS architectures. The first patch was pretty easy and appeared to work somehow. It generated nice executables with embedded relocation info. Not only that, it also removed all global symbols adjusting relocation data to be relative to the beginning of the sections. That move reduced number of symbols in each executable significantly (depending on the file between 20 and 80% of all symbols could be removed). The only symbols that stayed in the file are local ones - due to the nature of the patch wasn't able to remove them since we have not seen them in the symbol hash table. The patch didn't worked though. The files were relocated, AROS kernel loaded, but it crashed very early. What happened? Well, the nature of ARM relocations happened :) Most of the relocation data on all machines is rather simple. Relocation can be absolute or pc-relative, sometimes the offset has to be bit shifted. On ARM v7 there is another one. There, when one wants to load an address of function/variable into register a combination of two instructions can be used: movw and movt. The first one loads immediate into lower 16 bits of a register while clearing upper 16 bits. The second one loads immediate into upper 16 bits without touching lower halfword. Loading of a pointer into a register looks like this: movw r0, #:lower16:label movt r0, #:upper16:label In this case there are two relocations - one for lower halfword and another for upper. If an overflow of lower 16 bits occurs during relocation process, the upper one should be updated as well. Unfortunately with current patch and with typical ARM executables there is not enough information to perform the calculations. There are two options - the first one would be to give up and go back to "fake" executables, another one would be to change from REL to RELA relocation info. The latter contains an addend, extra data which can be used to perform all the relocation calculations I need. Decided for the second option. The patch is already in the works. There is another function for the binutils' bfd backend to perform the final relocation. There can decide what to do with every reloc info, modify data and eventually strip some symbols. An advantage is - at this stage of the linking process have also full access to all local symbols so can change all relocations section relative and eventually strip all symbols from the files. === GPU === Most of start.elf runs on the GPU. Placing ALL the userland GPU code in the videocore.hidd isn't going to be a terribly big problem because the code they published is nothing more than a shim that sends data straight to the GPU to execute. The good news about this is that we only need to write our HIDD using the OpenVG API. The shim is relatively small codewise and lives in the ARM memory (the actual OpenVG code itself lives in the GPU RAM area and its loaded from start.elf). That's also the bad news. Our driver has to translate AROS video calls to OpenVG calls, for most tasks it should be easy, for some, not so much. It's still probably less difficult and less work, than controlling the GPU directly. The other good news is that anything done through OpenVG happens on the GPU, its truly accelerated. It also has some nice font functions, meaning we can lead into an accelerated text mode later. Basically, AROS resets or locks up when it tries to use AROS_ATOMIC_INC or DEC. If I comment out the byte/word operations in the header files and use non-atomic operations, the code works as expected. have read that the L1 cache needs to be enabled to use LDREX and co (which I also read is only meant to be used on multi processor systems with shared memory) - however I am certain this is correctly enabled. If you are using LREX or STREX, you should have L1 cache enabled, at least on the ARM CPU I work with at work. L1 cache is enabled by enabling the MMU *AND* setting the C and I bits in the CPU - the C bit is ignored, and the I bit only covers the 16 byte instruction pipeline if the MMU is not enabled. Can you verify that your assembly is generating LDREX/STREX? From the behavior, it almost sounds like its generating the default Semaphore locked atomics. Impossible. There are no semaphore-locked atomics. There are Disable()/Enable()-based ones instead. And there's a special #define AROS_NO_ATOMIC_OPERATIONS in this case, which tweaks Disable()/Enable() implementations not to recurse forever. I have tested this on ARMv5 which does not have ldrex/strex, it works fine. On those ARMs there's no way to have real atomics. On other OSes (like Linux) this is done by introducing things like atomic_t, which appears to be a complex structure, holding the value together with accompanying spinlock (implemented using swp). #warning "TODO: lookup optimal mmu table settings for raspi memory" /* Set up an identity-mapping for all 4GB */ for(x = 0; x < 4096; x ++) { pagetable[x] = x<<20 | (0x40002|0x80000|0x010000|0x00C00|0x04); } Shouldn't there be a second loop that sets the 'C' bit in the descriptor for the RAM pages? Currently, you have TEX=0, C=0, B=1 for all pages (Shared Device). You should have TEX=0, C=1, B=0 for RAM (Write-Through, Cached) So .. pagetable[x] = x<<20 | 2; should be enough? No, for RAM you need to change the '| 0x40' to '| 0x80' tell dosboot the correct defaults to use Please don't do this. This bootconfig.c is a deprecated legacy thing. I wanted it to go away completely with time. Instead, display drivers should auto-install themselves during own initialization phase. I. e. detect hardware=>instantiate itself. This should make things way simpler. With this approach you only need to add the driver into KS image to get the device autobooted. No hardcoded stuff. Currently VESA and VGA drivers do this, look there for examples. never rewrote ATI driver because i don't have any test system for it. they defined a smaller AROSCPUContext than the ExceptionContext - yet reference it as ExceptionContext in other places, and since it hasn't allocated enough storage for ExceptionContext, are corrupting memory/the structure (since the elements that are there don't map 1 to 1 with the exception context). AFAIK, AROS has been moving in a different direction to this in recent years. It is the job of graphics HIDDs to allocate bitmaps etc. so that they have the most suitable characteristics, including allocating them from GPU RAM where possible. The concept of chip RAM is only for legacy code, and most if not all non-68k platforms should have all system RAM marked as chip. BTW, is the video processing code you mention CPU code or GPU code? Also, IIRC we have support for "external memory allocators". Perhaps that's what we need for the allocation of GPU RAM through the mailbox. All hosted and x86 native ports should use proper context formats. trying to clarify if the vblank handler has to have run by this point to prevent this deadlock. Actually, no. Unless you have installed VBlank handler which should wake up at some point. Without VBlank there will be no quantum count. Consequently, there will be no forced preemption. But the rest will work, and multitasking will be cooperative (switch happens only when current task voluntarily gives up the CPU). Does it depend on the vblank having run before this point? and if yes what does that mean on systems where it might be able to run enough code (e.g. get to this point) before the vblank interrupt has triggered? What is it waiting for? It could wait for timer, in this case you need timer.device working. VBlank is currently needed for exec's quantum counter. In current native ports we have only a single timer, which is served by timer.device. VBlank is simulated by timer.device also. If your machine has two timers, then you can use one of them for VBlank, and another for timer.device, this will simplify things down. VBlank needs to be 50 Hz for historical reasons, many programs use it as cheap timer. I am periodically thinking about making some abstract mechanism to be able to change quantum source (and untie it from 50 Hz), but have no time to come up with something good. Additionally i started disliking timer.device hardcoded design when PC has got many timers (old 8253, APIC, HPET). Currently i think there should be some low-level entity representing tick source. timer.device should just select the most appropriate source for its units. The BCM2835 has 4 GPU based timer sources - 2 are used by the GPU, so im using Timer3 for our heartbeat and the remaining one will be free to the system. There is also the less capable ARM timer but that is dependent on the CPU frequency. Very good. You won't need any emulation. Set the heartbeat to 50 Hz and drive VBlank from it. Use other timer for MicroHZ. Can you use the 'econsole.hook' I make for debugging the Sam460 via the serial port? It provides a before-anything-else shell prompt on the serial port. You can then do 'NewCLI' to test your graphics, or use any DOS command in shellcommands.resource. You should just be able to add econsole.hook to your module list, and use 'econsole' in your bootargs. So long as you have a working Exec/RawMayGetChar and Exec/RawPutChar, it should work. Also make sure to add shell.resource and shellcommands.resource for this. That should have done it. If you set "#define DEBUG 1" in arch/all-native/econsole/econsole.c, do you get any additional serial output? have added it to the build and added econsole to the command line - and can see the bootloader picks up on the emergency bootconsole tag, but I still only get the insert bootable media display? Im assuming it exposes a fake filesystem that tricks aros into booting? The contents of which are: ECON:AROS.boot Way to handle the scheduling code? The implementations I had been following were causing problems, due to cascading interrupts which I cant handle properly in the asm stubs just now (when they break disable etc.) - since it means detecting the interrupted codes cpu mode and getting the correct sp/lr for it, and that's just too tedious for arm. To work around this ive added a system idle task which does nothing - and when the scheduling code has no task to run switches this in and lets it run, thereby allowing the interrupts etc to resume until something does need to happen. Also, by adding accounting code to cpu_Switch() and cpu_Dispatch(), it should allow the system to log idle time correctly (as well as running tasks). have thought of also adding an additional task that never runs, solely to record time spent in IRQ handlers, but I digress.. was under the impression that kernel.resource should *never* be used outside of exec.library. This is a wrong impression. Michal started designing it because portable nature of AROS does not fit well into exec's API with all its assumptions. So, he started the new, hardware-agnostic kernel API from scratch. Yes, exec sits on top of it in places. But kernel always meant to be open thing. Otherwise it would not exist. it wasn't meant to be just used willy nilly by user code - but by lower system components (e.g. exec) so that they could be implemented in a more generic fashion, and the kernel resource itself hide the systems quirks. Adding new things there perfectly keeps up with our decision to minimize AROS-specific intervention into APIs which can clash with MorphOS/OS4 extensions. We want at least source-level compatibility there. Binary compatibility on PPC would be extremely cool, but at the other hand we have no maintainer for this, as well as their ABIs are a bit weird and far from optimal, especially MorphOS one, because it aims for m68k binary compatibility. It depends on what exactly is being implemented - there's no reason we should have everything crammed into kernel.resource if it doesn't need to be (i.e. if its better suited as a separate component/subsystem in its own right) The _LE versions are for when you have endian swapping taking place. If the graphics are the same endian as the CPU, no swapping should occur. I ran into a similar terminology problem in SDL with a friend insisting that his Radeon 7000 on his PC was big-endian. It is not, it just uses the same endianness for the graphics card and the CPU so no swapping was necessary. They were both little-endian. The _LE versions are because the PixFmts refer to the bitmap data being in big endian format in memory, for which the normal version would need to do endianness conversion before applying the shifts/masks. on this platform it is in _LE in memory also so we don't need the conversion hence using the _LE version of the call). would use _LE (if it's really little endian 16 bit mode). What is the bare minimum needed to implement a framebuffer based gfx driver, with our software handling the rest? I have tried with just a gfx class that only expose new/dispose/newbitmap - and having an onscreenbitmap used only for the framebuffer itself (with all other bitmaps being chunkybm, and the framebuffer's superclass also being chunkybm), but that alone isn't enough it seems? You can use workbench/hidds/sm502/ as your example - it is as simple as I could make it. So, AROS creates the framebuffer bitmap (I have verified this) -> so surely it should be capable of then rendeing into it? I don't actually create the framebuffer "bitmap object" myself - only as a result of being asked to. I so far have -: vc_init: queries the gpus memory, and sets up a fake memory handler for it, then adds the bootmode driver and returns saying all is well vc_gfxhidd:New: sets up some fake syncmodes to test with and creates the real gfx object. vc_gfxhidd:NewBitmap: checks if its a framebuffer and uses the onbitmap class or uses the chunkybm class otherwise vc_onbitmap:New; creates a chunkybm object and then pushes the real framebuffer address into it as the buffer, So, AROS creates the framebuffer bitmap (I have verified this) -> so surely it should be capable of then rendeing into it? I don't actually create the framebuffer "bitmap object" myself - only as a result of being asked to. The code I currently have on SVN seems to create the framebuffers bitmap object fine, but then crashes in intuitions DisplayDriver callback. In particular it crashes performing the getattr on the system default pointer. don't expose MEMF_CHIP in an allocatable form so AllocSpriteData was failing (and other code later doesn't check if the values are valid == illegal memory accesses) Actually MEMF_CHIP has to present, for historical reasons. This has been never fully agreed upon, but in ports i wrote i exposed the whole memory as MEMF_CHIP. The idea behind this is that CHIP is originally the memory where graphics and sound data can be put. On non-Amiga platforms there are no restrictions on this, so the whole memory is CHIP. Yes, many old software can misbehave with CHIP memory size larger than 2MB. But this actually applies only to m68k AROS which is going to run m68k binaries. In other cases it's quite logical to fix the program when porting. As to original question: yes, it's enough to have a framebuffer bitmap (one with aoHidd_BitMap_FrameBuffer set to TRUE) and PutPixel routine. It framebuffer can be served by chunky bitmap class, then you can simply create chunky bitmap with your own buffer (see how VESA driver does this). Chunky PutPixel is already there. struggling to determine what is the correct pixfmt to use for the 24/16/15 bit gfx modes on the RasPi. AFAIK it uses RGB565, for 16bit but im unsure what shifts etc should go with it? suffice to say Im getting the wrong colors so far lol. <pre> redmask: 0x0000F800 greenmask: 0x000007E0 bluemask: 0x0000001F alphamask: 0 redshift: 16 greenshift: 21 blueshift: 27 alphashift: 0 </pre> It should likely be vHidd_StdPixFmt_RGB16_LE This stuff is a bit confusing. The "names" of the stdpixfmts are based on the layout in memory, ignoring endianess. So for example: ARGB32: will be 0xAA 0xRR 0xGG 0xBB in memory on both big endian and little endian machines. The shifts and masks OTOH are based on pixel access (ULONG in this case), so differ depending on whether you run on big endian machine or little endian machine (that's why there's stdpixfmt_le.h and stdpixfmt_be.h in rom/hidds/graphics/). With the 16 bit pixel format it's even more confusing, as for example it's impossible on little endian machine to describe RGB16 with shifts/masks alone. That's why there's vHidd_PixFmt_SwapPixelBytes_Flag. (RGB16 == RRRRRGGG GGGBBBBB in memory, and for pixel (WORD) access on little endian machine it needs to be accessed as GGGBBBBBRRRRRGGGG). The shifts btw indicate how much to shift the component to the left (!) so that it is moved to the highest bit (31). The aHidd_PixFmt_StdPixFmt you specify will be ignored most of the time, because when the pixelfmt is registered, the gfx hidd checks if there's an identical pixfmt (shifts/masks/etc., but ignoring pixfmt->stdpixfmt) already in the system, and if so, it uses the already existing one and does not create a new one. In theory it would be better if gfx drivers could simply/only specify a StdPixFmt without all the shifts/masks stuff when the gfx driver uses pixfmt which matches one of the stdpixfmts exactly. Another possibility would be for gfx drivers to use HIDD_Gfx_GetPIxFmt(stdpixfmt_gfx_driver_wants_to_use) and then peek shifts/masks from it and fill out a pixfmt tag list based on that. 15bit very blue/green: Try to pass same shifts/masks/etc. as in 16 bit pixfmt (maybe you think it's using 15 bit R5G5B5 (or swapped) but it's actually still using 16 bit R5G6B5 (or swapped). aHidd_PixFmt_StdPixFmt you pass is mostly ignored. It's the shift/masks/etc. that count. But I would still pass the correct one (_LE) == whatever rom/hidds/graphics/stdpixfmts_??.h uses in the entry where you have looked up shifts/masks/etc. Use the shifts/masks/etc. from the entry in stdpixfmt_le.h (if you are running on little endian machine) or stdpixfmt_be.h (if you are running on little endian machine) that matches the pixfmt that its meant to be. 0xAA,0xRR,0xGG,0xBB on little endian (->entry in stdpixfmt_le.h which says vHidd_StdPixFmt_ARGB32) 0xBB,0xGG,0xRR,0xAA on little endian (->entry in stdpixfmt_le.h which says vHidd_StdPixFmt_BGRA32) 0xAA,0xRR,0xGG,0xBB on big endian (->entry in stdpixfmt_be.h which says vHidd_StdPixFmt_ARGB32) 0xBB,0xGG,0xRR,0xAA on big endian (->entry in stdpixfmt_be.h which says vHidd_StdPixFmt_BGRA32) it feels like AROS trashes the alpha component, otherwise it should be 8A8R8G8B. read on the subject suggest its in 1x5r5g5b (x is ignored) to keep 16bit alignment . What I see on screen suggests to me that wrong shift/mask are being applied - however going by the 16bit versions it all looks correct to me so I am really confused as to what is happening. The output image looks to have too much green/blue, and very weak red. Why did usbromstartup become HW-specific ? In the past i have done a big job separating kickstart into several parts. I have never got any responses, so i re-describe my idea. For now it loads the hs otg chipset driver .. The idea is to minimize amount of archirecture-specific modules to make user's life easier. So, the kickstart was split into 'base' (which does not contain anything machine-specific) and 'BSP' (Board Support Package) which contains all hardware-specific stuff. This way, for example, distribution makers can save up space on CD and make CDs with multiple platform support. Different configuration would load the same base with different BSP's. Next there was some part which is entirely missing on hosted. These are filesystems. Hosted ports do not need them to boot up, so on hosted they are left out. At the other hand, they are also architecture-agnostic. So i put them into 'FS' package (standing for 'filesystem'). Poseidon is one more big part. I made it into separate package in order to allow users to omit it if they don't need it (for example, to run on retro PCs without USB). Personally i have one. Again, Poseidon is hardware-agnostic (well, there are USB drivers but HCIs are pretty standard). It's mandatory on PI since there are no other interface types - so being a separate package is irrelevant/pointless. Is Raspberry's USB controller non-HCI compliant? Actually i expect it to be compliant, then wouldn't it be better to make existing drivers discovering them? AFAIK its HCI 1.0 compliant but I'm not familiar enough with poseidons drivers, nor USB, to just hack away at the existing code. Perhaps once i'm more familiar with the workings I can merge in the changes needed to get it operating but for now I will focus on getting it running. Also our drivers have known issues so perhaps a fresh set of eyes might shed some light on what is going wrong. Another interesting question is whether Poseidon can operate on device side. Is it flexible enough? How similar is being a USB host and USB device? think it will need a bit of work on Poseidon's side. Until then I will force the driver into Host/Master mode in the init code, but leave open device etc to configure the chipset for either's use - and look at trying to add support for working in Device/Slave mode & switching modes once it's up and running. Actually USBROMStartup is some kind of kludge. Can there be any alternative? Could device drivers be self-installing, like our HIDDs? This would get rid of need to list them in USBRomStartup. And there is one more thing about modular ports. In order to actually implement this, your bootstrapping environment should provide the ability to load several files. On PC this is provided by GRUB2. on CHRP you can read filesystem via OpenFirmware, and Sam's Parthenope relies on modified u-boot. If your bootstrap allows to load only a single file, then you stuck with monolithic kickstart. By the way... u-boot allows not only to boot up a single uImage or zImage, it also allows to write client programs AFAIK. With this approach, you actually can write modular bootstrap for ARM AROS using unmodified u-boot. [http://repo.or.cz/w/AROS.git/commit/e7bdc7e7b7f12b07aa24c739abb63721a872a53a arasan eMMC sdcard controller specific header which is not USB] and [http://repo.or.cz/w/AROS.git/commit/8bd19674084526a534ac11f7d4c51932e9ffe3d2 added prelim sdcard device]. [http://repo.or.cz/w/AROS.git/commit/9ab8217f61911fb8b7fd41bee46a992b4668ced1 do not set 4bit data mode, or enable acmd12/dma int's] Framebuffer - basic display RasPi has to speak to the "operating system" which runs on the GPU itself and request/free memory - it cant directly manage it itself, and so the managed functions were used to wrap these calls. The Arm and GPU share memory space. The framebuffer is shared. The Arm can write a pixel and it will appear on the screen (through GPU hardware) without flushing/copying being required. The GPU can composite multiple FB's in real time - so you have a number of surfaces defined which are rotated etc and composited in real time to the output. Copying can map from the address space of the Arm to the flat space of the GPU which takes some code, but I don't think whole buffers are copied. The DMA hardware can also access the whole memory space and can perform 2D fills and blits (no blending). This is documented in the peripheral spec posted. The DMA is just an Arm accessible peripheral and can be set up with low latency (e.g. microseconds). must use a 0xc0000000-based bus address to access SDRAM, yet non-DMA access should go via a 0x0-based bus address. For 2D dma, set TDMODE, and the spec says "interpret the TXFR_LEN register as YLENGTH number of transfers each of XLENGTH, and add the strides to the address after each transfer." so set STRIDE to pitch of the image, the width is XLENGTH and height is YLENGTH. You would fill by not setting the SRC_INC and point source to your fill data. The DMA cannot see the ARM's L1 cache, so you would map the framebuffer with ioremap_nocache. Depending on where the source data comes from, it may need an L1 cache flush. The DMA can see the L2 cache. Use 0xC0000000 bus addresses when L2 is disabled and 0x40000000 bus addresses when L2 is enabled. (actually just call virt_to_bus and you'll get the right address out). openGLES/openVG has high latency. Writing to framebuffer then reading it back is very inefficient (e.g. milliseconds). If you can drive it a unidirectional way, just streaming commands at then that is efficient. openVG is not implemented on top of openGLES - it uses the same hardware but as a first class interface To improve the Gfx driver, we will need a DMA resource implemented so can use to perform DMA operations. The Gfx driver will need this to perform blits. USB * Model A and B limited to 150 mA per port. * Model B+ and Pi 2 introduced configurable 600 mA to 1.2 A support over all ports - anything above that requires a powered USB hub. Implementing the hardware driver that Poseidon uses to interact with the USB components. Have code in place to (try) and initialise the USB chipset, and configure host/device mode operation (though AFAICT Poseidon doesn't support device mode). Started to get the "virtual" root hub written for the single USB port so that Poseidon should at least list it correctly in the GUI - and try to interact with it to find peripherals. The BCM2835 uses a soft IP block from Synopsys’ DesignWare library (DWC), specifically the block is called dwc_usb_2_0_hs_otg_subsystem-ahb_se (“USB 2.0 Hi-Speed OTG Controller Subsystem w/AHB Interface SE”). There is no public documentation for this, and pretty much zero chance of anyone getting hold of it even with NDA. However, there's a Linux driver written by Synopsys ([https://github.com/raspberrypi/linux dwc_usb]). Specifically directories [https://github.com/raspberrypi/linux/tree/rpi-patches/drivers/usb/host dwc_common_port] and [https://github.com/raspberrypi/linux/tree/rpi-patches/drivers/usb/host dwc_otg]. The Synopsys code is actually under a fairly permissive licence – it's not GPL, it's similar to BSD (’don't sue us if it breaks’ is pretty much the only clause). So this should not be a barrier to porting the code. The code is really well written, with a nice partition between the work done by the driver (dwc_otg, which is fairly involved, given the host does more work than a conventional EHCI driver), and the interface to Linux (dwc_common_port). Probably only need provision of relevant changes to dwc_common_port. Other things to consider.... * Provision of necessary headers to get it to compile * Provision of necessary functions (main issues are wait queues, threads, work queues, tasklets, timers, spinlocks and mutexes (multithreading) ) * Interfacing between USB stack and the driver. dwc_otg/dwc_otg_hcd_linux.c looks like the place to start. the Linux bits of the headers are only required for the dwc_common_port library. dwc_common_port includes a variety of crypto functions which are not used – it appears to also be used for ultrawideband (UWB) and wireless USB (WUSB) drivers where crypto will be an issue, but it isn't going to be for plain wired USB. Every USB driver acts as an USB hub as well in order to let Poseidon control the state of USB ports. The code there was reading status of the only USB port in Raspberry's CPU but when changing the status it erroneously deleted some of the status bits, including the port enable one. It was so because those bits in the status register are of a type Read/WriteToClear. It means, if one does not want to change their value from 1 back to 0, one has to actually write the 0 value. Very practical thing e.g. in interrupt handlers, where one reads the interrupt status register to learn what was the interrupt reason, and writes it back to the same register in order to clear the interrupts. After fixing that code it turned out that the communication was still unsuccessful. Apparently the USB device was not understanding the host for some reason. That should not happen since the request sent was one of the standard ones implemented by virtually anything with an USB connector, assumed that Poseidon clears the data caches before forwarding the work to the USB drivers but that's the responsibility of the driver itself. The USB device responded and acknowledged the transmission! But why were all the request sent after address change failing with timeout? They should not. Once again, address set is supported just by anything. Tried to contact the device at address 0 once again and there it was, still responding properly. The enlightenment came. The bus address for DMA transmissions was, as it is in many bare metal USB implementations, just the pure memory address of the buffer as seen by the ARM cpu. Have "prefixed" it with the real location of uncached RAM and booted AROS once again. Trident saw this: Product : Hub: Vdr=0424/PID=9514 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 9 SubClass : 0 DevProto : 2 VendorID : 1060 ProductID : 38164 DevVers : 0200 and this: Product : Vendor: Vdr=0424/PID=EC00 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 255 SubClass : 0 DevProto : 1 VendorID : 1060 ProductID : 60416 DevVers : 0200 and even this: Product : Hub: Vdr=0424/PID=9514 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 9 SubClass : 0 DevProto : 2 VendorID : 1060 ProductID : 38164 DevVers : 0200 What are these things? The first one is USB hub built in the Raspberry. Thanks to this one the Pi machines (with exception of Pi0 and computing modules) have more than just one single USB port. The second one is the network chip in raspberry, the third one is my USB SD card reader which have just connected to see what happens. AROS tried, of course, to boot from it ;) So, the first step towards working USB is done. The control transfers are working as you can see above. Next step is to implement bulk and interrupt transfers, having the basics in place. Finally some error handling will be added and USB for Pi will be as complete as the PC version. [http://www.raspyfi.com/raspberry-pi-usb-audio-fix/ Issue with USB Audio] Audio [https://github.com/raspberrypi/linux/tree/rpi-patches/sound/arm audio] and its [https://github.com/raspberrypi/firmware/issues/2 very high speed message passing interface type of thing VCHI] The Model B+ added an additional voltage regulator for the audio output and an additional output driver to drive low-resistance loads like headphones. However it is still using pulse-width modulation (PWM), which has a major impact on sound quality the old Raspberry Pi used a linear voltage regulator to provide the 3.3V to many of the components on the board while the new one uses a switching regulator. Both can perform reasonably well. However switch mode power supplies often show higher noise figures Analogue audio Audio over HDMI rev 1.3 & 1.4 Ethernet 10/100 BaseT Ethernet RJ45 socket GPIO GPIO shouldn't be too bad but bear in mind it is already accessed in places so they would need to allocate pins etc through it (e.g. sdcard to flicker the activity light, serial debug to output data on the GPIO pins) Probably a resource rather than a device... Started an i2c driver that will need to allocate GPIO pins. Feel free to work on it if you are interested ;p GPU graphics with 2D and 3D acceleration Sadly none yet for 32bit but for 64bit... == References == ===Hosted=== ==== Linux ==== Change lxde to another sudo leafpad /etc/x11/xinit/xinitrc xorg.conf <pre> Section "Screen" Identifier "Default Screen" DefaultDepth 16 SubSection "Display" # Viewport 0 0 Depth 16 Modes "800x600" EndSubsection EndSection Section "Device" Option "Backingstore" Identifier "Card0" EndSection </pre> Will raspberrypi ARM programs run on other ARM archs and vice-versa ? If not I would like to use different cpu names for archs which are incompatible. All code compiled for at most armv6 with softfp float abi will work on all softfp ARM targets, including raspberry. Code compiled for hard-float ABI will not work on any softfp target. But then, hard-float abi uses -armhf- cpu name. keyboard or mouse not functioning or partly working lsmod kernel and modules (stored in /lib/modules/ get from https://github.com/raspberrypi/firmware and click on ZIP button) have to be updated simultaneously sudo Apt-Get Update sudo Apt-Get Install <program > <program > cksfv joystick p7zip-full stopwatch mtpaint searchmonkey zip geany renameutils fbreader unrar-free mhwaveedit xpad milkytracker grafx par2 libreoffice epiphany-browser xbmc ace-of-penguins gweled black-box petris xmahjongg thrust fceu freesci frotz xgammon tuxpuck littlewizard xsoldier micropolis xbubble eboard&xboard (freezes) bomberclone OMXPlayer not responding or working with keyboard or no sound audio through HDMI LXterminal—command "OMXPlayer -o hdmi %f " hdmi issues Setting the hdmi_force_hotplug=1 makes sure the Pi believes the monitor/TV is really there. You might also need to set config_hdmi_boost=4 or even higher (up to 9) if your display needs a stronger signal. If the display is a computer monitor or newer tv, use hdmi_group=1 (auto HDMI use) and if it is an older TV, try hdmi_group=2 (for DMT formats, i.e. for PC monitors) then you HAVE to "set hdmi_drive = 2 to enable HDMI output as this forces HDMI mode rather than DVI mode Do not set hdmi_safe=1 as that overrides many of the previous options. Using a shorter or better quality HDMI cable might help. Make sure your Pi's power supply delivers 1 A and not 500 mA. If you see a problem with the red colour - either absent, or interference - then try a boost composite video changing the RCA cable, then the composite port worked out of the box Boot it as you are doing, without HDMI. If you now plug in the HDMI, do you get the image? In other words, does the Pi think HDMI is connected even when it isn't? Rename all the files in the first partion of the card except bootcode.bin, start.elf and fixup.dat What's the result? Put back config.txt What's the result? for PAL mode sdtv_mode=2 dmi_ignore_hotplug Pretends HDMI hotplug signal is not asserted so it appears a HDMI display is not attached hdmi_ignore_hotplug=1 Use composite mode even if HDMI monitor is detected <pre> # NOOBS Auto-generated Settings: #hdmi_force_hotplug=1 #config_hdmi_boost=4 #overscan_left=24 #overscan_right=24 #overscan_top=16 #overscan_bottom=16 #disable_overscan=0 start_x=1 gpu_mem=128 </pre> tvservice -c "PAL 4:3" <pre> /opt/vc/bin/tvservice -s or tvservice -s state: HPD high|HDMI mode|HDCP off|composite off (0x12001a), 1920x1080 @ 60 Hz, progressive /opt/vc/bin/tvservice -m CEA Group CEA has 1 modes: (native) mode 16: 1920x1080 @ 60 Hz, progressive /opt/vc/bin/tvservice -m DMT Group DMT has 0 modes: </pre> sudo amixer cset numid=3 1 forces the audio to the headphone jack, even with the HDMI video output plugged in config.txt the hdmi_ignore_edid_audio=1 option sems relevant as it should tell ALSA that the only available audio is analog, no matter what the display says There are several different ways that these 4 pole (ring) composite analog cables can be wired up, so some work great in some applications and can be a waste of time in others. What is needed for the Raspberry Pi B+ and above, which like many camcorders needs the ring contact next to the base contact to be the ground. The wiring for the 4 pole are: TIP (LEFT AUDIO CHANNEL) RING 1 (RIGHT AUDIO CHANNEL) RING 2 (GROUND/EARTH) RING 3 BASE/SLEEVE (VIDEO) YELLOW Most Apple based Players and the Microsoft Zune (TM) are wired this way. Most analogue camcorders are wired this way as well, where the ground in on Ring 2 will work with the Pi although you may need to swap your Video plug with the Right Audio plug. Nearly all other MP3 players are not wired this way, the ground is on another ring ie the wrong one. External devices * Camera Module Omnivision ov5647 Sunny 5MP (NoIR version) V1.3 - NoIR at 850&nbsp;nm, peak at 880&nbsp;nm and trails off at 940&nbsp;nm wavelengths * Camera V2 Sony IMX219 V2.1 8mpixel 8MP 8megapixel - 3280 x 2464 pixels - video at 1080p30, 720p60 and 640x480p90 - wider field of view, 62 vs 54 degrees horizontally - * Branded WIFI usb BCM43143 dongle N.B. dreaded error after changing cameras (stupidly without turning off the power first) and lasted through several power cycles. It can be a bad 15-pin FFC ribbon cable, when swapped, camera(s) and the Pi itself are working OK. It can be an instance of a cold solder joint on the CSI connector on the pi board. the camera can be detected (that's done via I2C) but may still not be able to receive image data (done via CSI-2) if something is broken. CSI-2 is uni-directional. Control is generally done via I2C. The CSI-2 receiver always writes to memory, not direct to the ISP. That's the way the Broadcom architecture works as it allows multipass processing easily. GPU memory is accessible from the ARM. Processing using the QPU graphics processors may be possible. currently the only supported sensor is OV5647 and IMX219. The linux drivers are all in the firmware blob, else you'd be looking at at least a man-month of work in a fully fledged imaging lab to do a decent tuning of the camera modules' ISP parameters. Static electricity maybe an issue for the camera module and slightly less for the pi board. * Hosted under ARM Linux which needs to be already installed [http://www.aros.org/nightly1.php current ABIv1] Help building AROS hosted on Linux ARM I was looking a way to use more my Handheld ARM based called Pyra (Dragonbox Pyra) an ARM (Omap5 cpu with 4GB ram) linux based machine (Debian Buster v10 with kernel 5.6.19 adapted) and have a try to compile the latest Aros sources by Deadwood directly on this device. Compilation stops after build libpopupmenu.a and trying to build libatomic have this error: <pre> Configuring build in bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic configure: WARNING: unrecognized options: --disable-nls, --without-x checking for --enable-version-specific-runtime-libs... no checking for --enable-generated-files-in-srcdir... no checking build system type... arm-unknown-linux-gnu checking host system type... arm-unknown-aros checking target system type... arm-unknown-aros checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for arm-aros-strip... /media/farox/pyra2/arosbuilds/toolchain-core-armhf/arm-aros-strip checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking for arm-aros-gcc... /media/farox/pyra2/arosbuilds/toolchain-core-armhf/arm-aros-gcc checking whether the C compiler works... no configure: error: in /media/farox/pyra2/arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic': configure: error: C compiler cannot create executables See config.log' for more details make[2]: *** [mmakefile:4489: /media/farox/pyra2/arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic/.configured] Error 77 [MMAKE] make --no-print-directory TOP=/media/farox/pyra2/arosbuilds/toolchain-core-armhf-build SRCDIR=/media/farox/pyra2/arosbuilds/AROS CURDIR=tools/crosstools/gnu TARGET=tools-crosstools-gcc-libatomic-configure -s --file=mmakefile tools-crosstools-gcc-libatomic-configure failed: 512 [MMAKE] Error: Error while running make in tools/crosstools/gnu: No such file or directory make[1]: *** [Makefile:361: linklibs-libatomic] Error 10 make: *** [Makefile:183: crosstools] Error 2 </pre> looking at config.log on arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic i found that arosbuilds/toolchain-core-armhf/arm-aros-ld: cannot find -laeabi so i do make linklibs-aeabi-arm-quick and the missing lib was built. now the next stop is at fatal error: bits/libc-header-start.h: No such file or directory and fatal error: sys/cdefs.h: No such file or directory in many places so after checking that i have this missing include files i have noted that my include path is a bit different, standard searching path is /usr/arm-linux-gnueabihf but in my system is /usr/include/arm-linux-gnueabihf so if i add my path to some mmakefiles compilation goes on....but is a better way to add this path to avoid every mmakefiles to be changed? i fixed with adding -I/usr/include/arm-linux-gnueabihf to where is missing on mmakefiles like USER_INCLUDES := -isystem $(GENINCDIR) -I/usr/include/arm-linux-gnueabihf $(KERNEL_INCLUDES) P.s. I have changed many mmakefiles and have at least compiled (after many hours) the toolchain doing make every time in arosbuilds/toolchain-core-armhf-build (also have to disable making tests under cplusplus but don't remember the directory ...) but i ask an help to have an automated way to correctly build without modify mmakefiles. Last time I built armhf target was around 2 years ago. At that point I built is via cross-compilation from linux (ubuntu 22.04) using linux armhf crosscompiler (this can explain the path differences you are experiencing) as well as using AROS gcc cross-compiler in version 6.5.0 (build with option 21) in rebuild.sh). Since then AROS GCC has been updated to 10.5.0 and I don't believe anyone tried to build the armhf target again. My suggestion would be to downgrade GCC to 6.5.0 (via editing AROS/config/gcc_def file) and try to first build using cross-compilation from x86_64 linux. Once that works, you will have a "template" to compare to native compilation under arm linux. Thanks for your suggestion...but i think the toolchain with GCC 10.5.0 is compilable if i found a way to pass the path of my system to the script that build (option 21 on rebuild). The other only changes are (but i don't know where to modify...) is to add the build of libaeabi and disable the building of some tests under cplusplus that use exceptions and is not supported under ARM. I'll try to crosscompile with my Linux amd64 PC. For paths look into core-linux-armhf/bin/linux-armhf/gen/config/target.cfg. A number of build-wide variable is set there containing paths to local build system. These variables and the target.cfg file are generated by AROS ./configure script. Thanks compilation now go forward...i changed target.cfg under "toolchain-core-armhf-build/bin/linux-arm/gen/config" and do make on "toolchain-core-armhf-build" dir. Now i need to find where to enable build libaeabi.a so i can build the entire toolchain with option 21 of rebuild.sh I found something that looks like libeabi in AROS/arm-all/arm-aeabi/mmakefile.src. Try adding a third line there: #MM- linklibs-armhd : libklibs-aeabi-arm Though I don't remember needing this library. Possibly the 6.5.0 GCC somehow does this while 10.5.0 is missing this. I try adding this line (and the variant "linklibs-armhf" instead of hd) but it did not solve the automatic building of the missing lib. I must do "linklibs-aeabi-arm-quick". Anyway after have build the aeabi lib i succefully built the toolchain (after many hours...). Smile To test I restarted from selecting option 21 (on rebuild.sh) but after many hours i get the same error of the kernel includes not found...maybe i need to modify the configure script for my case. With the toolchain built i try to build the core-linux-armhf (DEBUG) (option 22) but after a while it stopped with "cannot find -laeabi " so i made it built manually...and now i can continue compiling...i'll let you know if all goes ok. 16wtnbnt9ye5qq8s9ehpxfnc11br0tx 4655992 4655991 2026-08-01T12:24:25Z Jeff1138 301139 4655992 wikitext text/x-wiki {{ArosNav}} [[#Native]] [[#Hosted]] ==Introduction== The Raspberry Pi Foundation is a charity founded in May 2009 to promote the study of basic computer science in schools, and is responsible for developing a single-board computer called the Raspberry Pi. The Foundation is supported by the University of Cambridge Computer Laboratory and Broadcom. Its aim is to "promote the study of computer science and related topics, especially at school level, and to put the fun back into learning computing." The original Raspberry Pi 1 Model B computer went on sale in February 2012 and set a new standard shattering the dominance of the PC in the home and education markets. Millions in the various formats, A, B, A+, B+ and Compute have since been shipped worldwide. The original concept of the Raspberry Pi was for a computer board providing Internet access with up to 1080p HD graphics at very low cost. The boards provide a platform for children and adults from any background to acquire computer science knowledge and help develop the future World-Wide-Web and all things internet (IOT hub and bridges out to home network to cloud of sensors). Hobbyists and tech dabblers/tinkerers are the main purchases of the Pis (around half). The rest of the sales are split between education/industrial. While the Raspberry Pi boards were designed primarily for education, they have become very popular with manufacturers of embedded systems. The Raspberry Pi Foundation has ensured backwards compatibility with each new revision. The bare-bones Compute module is aimed specifically at the OEM manufacturer. * Pi 5 - Quad A76 and RP1 "southbridge" with VideoCore 7 4Gb 8Gb LPDDR4X * Pi 4 - Quad A72 64bit VideoCore 6 * Pi 3 - Quad A53 [https://www.raspberrypi.com/documentation/computers/processors.html 64 bit] - VideoCore 4 * Pi 2 - Quad 32bit but more power consumed * Model B+ - lower power usage but same speed as the original Pis * Model A and B - * Compute 1, 3, 4 and 5 - industrial use <pre> 2008 Trustees collected for Foundation 2009 Charity status gained 2010 2011 First Raspberry prototypes 2012 First boards go on sale at CPC and RS. The Model A and B 700 MHz Arm11 - February 29th BCM 2835 2012 First million sold - more than the 10,000 original planned and anticipated 2013 First Alpha Experimental builds of AROS Native for the Pi 2013 Pi Trading launched making grants available, providing in house educational resources and Pi Academy for teacher training 2013 Over two million sold 2014 Over three million sold and updated Model B+ introduced that moved composite video to audio jack and same half gig of memory 2014 Pi Model A+ v1.1 - BCM2711 no ethernet and 1 usb - a little smaller - 2015 Pi 2 Model B - BCM2836 900/600 MHz ARM Cortex-A7 Armv7 quad 32bit core and 32bit VideoCore IV 3d GPU with 1Gb RAM 2015 Over four million first gen pis sold 2015 Over a million pi2s sold 2015 Pi Zero BCM2835 released 2015 Raspberry Pi 2 Model B version 1.2 has armv8 BCM2837 2016 Passed Sinclair total number of computer lines sold - around 7 million 2016 Pi 3 Model B - Broadcom BCM2837 SOC four 64bit ARMv8 Cortex-A53 1.2GHz - 1Gb - bluetooth 4.1, Cypress CYW43438 wireless 802.11n and a dual 32bit VideoCore IV GPU - 4 x USB2.0 ports 2016 Total PIs over 10 million worldwide 2016 Compute 3 launched BCM2837 armv8 Quad 64-bit Core 1Gb LPDDR2 RAM 4Gb Emmc storage 2017 12 million pis sold in total 2017 Pi Zero W 1GHz, single-core CPU A53 released with Cypress CYW43438 wireless 2018 Pi 3 Model B+ - 4c A53 BCM2837B0 - 1Gb, wireless 802.11ac, gigabit ethernet (300Mbit/s) and bluetooth 4.2 - power over ethernet - 4 x USB2.0 ports 2019 Over 15 million sold 2019 Pi 3 Model A with BCM2837b0 with 512Mb, 2019 Raspberry Pi Compute Module 3+ CM3+ LITE Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC 1Gb DDR2 and emmc 2019 Pi 4 Model B - BCM2711 quad 64bit A72 1.5GHz, VideoCore VI, AC wifi, Bluetooth 5.0, GbE, 2 micro hdmi decode up to 4K, USB-C power, 2xVLI USB 3, 2xUSB 2.0, 1/2/4 GB ram 2019 Pi 4 Model 2B - BCM2712 4 usb 2020 Raspberry Pi SC0919 Pico RP2040 2020 Silent Pi 4 upgrade with more USB-c psu support and PI400 1.8GHz inside keyboard 2020 Raspberry Pi Compute Module 4 2021 Pi zero 2 w 64bit quad 1GHz Cortex-A53 BCM2710A1 512mB SDRam 2023 Pi 5 BCM2712 Quad A76 w VideoCore VII - no audio socket - dual 4k displays from mini hdmi - fan connector - 5V 5A psu 2024 Raspberry Pi Pico 2 2024 Pi 5 2GB version uses BCM2712D0 2024 Pi-500 2024 Raspberry Pi Compute Module 5 2025 Pi-500+ 2026 April and May Aros 64bit fixed, added AHI audio, VC4 gfx started, usb functions added to rom 2026 June and July Aros 64bit usb2otg started, dma.resource, sdio.resource, bwfm.device wifi added 2026 Late July daily 64bit Pi3 builds start 2026 August .... 2027 2028 Pi 6 </pre> ===Good sites to visit=== *[https://github.com/raspberrypi/firmware/tree/master/ Raspberry Pi Firmware build] *[https://github.com/raspberrypi/linux Raspberry Pi Linux Build] *[https://www.patreon.com/michal_schulz/posts Big endian on Pi] with [https://github.com/michalsc/Emu68 ARM based realtime JIT 68k] *[https://www.riscosopen.org/wiki/documentation/show/Welcome%20to%20RISC%20OS%20Pi RiscOS on Pi3 and Pi4] *[https://github.com/brianwiddas/pi-baremetal Bare Metal Access on Pi 32bit] ===Native=== * 2013-03 Kalamatee starts work * 2013-05 Work put on hiatus * 2015-04 Work continues slowly with mschulz on the kernel and Kalamatee (NicJA) on gpio and usb * 2018 [https://www.patreon.com/posts/i-owe-you-some-20956961 mschulz resume with adding BE big endian support as well] * 2026 [https://github.com/aros-development-team/AROS/commits?author=bsek latest commits for pi 3 64bit] * 2026 [https://github.com/aros-development-team/AROS/commits?author=jonx latest commits for pi 4] [https://aros.sourceforge.io/nightly1.html RaspberryPi 3 raspi-aarch64-system native 64bit ArmV8 builds] are The status of AROS 32bit native for RasPi was OK. System booting, USB working (although with some issues but plan to fix them). Got stuck on modifying the ABI (application binary interface) and adjusting binutils/gcc to support it wanted to have real executable files but got stuck a little. This change for the type of relocations embedded in ARM files and not sure if this very type is well supported, on the other hand without this change ARM version of AROS wouldn't work well. By reverting the change to ABI we could have a (somehow) working AROS on RasPi, but unfortunately still unstable. Old native [http://www.aros.org/nightly1.html ARMv6 32bit nightlys] and ===Hosted=== [http://www.aros.org/snapshots1.html old linux and android hosted 32bit] ==Build== ===64bit=== ===32bit=== # download/checkout the source someplace, e.g. /build/AROS-Src/ # make a directory to store external sources AROS downloads, e.g. /build/Ports # make a build directory, e.g. /build/aros-raspi-armhf # cd into the build dir, configure, and then run make -: <pre> >cd /build/aros-raspi-armhf >/build/AROS-Src/configure --target=raspberrypi-armhf --with-serial-debug --enable-ccache --with-portssources=/build/Ports >make >make arosboot-raspi </pre> then copy the files from /build/aros-raspi-armhf/bin/raspi-armhf/AROS/ onto an sdcard, and download/copy the Raspi firmware files onto it. You should then be able to boot the sdcard on your RasPi. The current W.I.P tree to svn. it can be built as follows .. <pre> ./configure --target=raspi-armhf make arosboot-raspi </pre> That will generate arosraspi.img, arosraspi.rom and config.txt in bin/raspi-arm/AROS - so either copy just those files to a fat formatted SD card (with the firmware files on), or copy the whole contents of the AROS folder. NB - if you have a Linux/other install, backup the existing config.txt first arosraspi.img contains the bootstrap (which has very basic mailbox code, framebuffer/gpio init, and console "emulation" via code pinched from our libbootconsole), kernel.resource, and exec.library arosraspi.rom contains all the other components needed to boot AROS. The config.txt file will tell the RasPI bootstrap to load our arosraspi kernel and ramdisk (rom). the bootstrap has minimal mailbox code, planning on adding either a resource or library that driver/app code will use to access it (likewise for GPIO) ==== Hosted ==== Ubuntu VM approach to compiling [http://lallafa.de/blog/2013/06/building-aros-hosted-for-raspbian/ Linux hosted AROS June 04, 2013] ../AROS/configure --target=linux-armhf --enable-includes=/usr/arm-linux-gnueabihf/include --x-includes=/usr/arm-linux-gnueabihf/include --x-libraries=/usr/arm-linux-gnueabihf/lib arm-elf- is symbol-linked to arm-linux-gnueabi- (arm-linux-gnueabi- is more correct in this case, because it's going to be compiling the ARM AROSBootstrap for ARM Linux) *armel - many of the "android" machines require since the entire OS is made for soft float VFP. *armfp - Efika MX target, Raspberry PI, EfikaMX, Pandora and virtually everything (VFP) Keep in mind it's possible to start hardfp AROS hosted on softfp system, though, as long as no calls between AROS and host require floating point parameters. NOTE: hardfloat objects *cannot* be linked with softfloat objects - they have a different ABI. Just keep in mind the arm nightly build machine is quite complex beast. It needs the x86_64 host compiler to compile AROS tools. The arm version is built every night using gcc-4.6.2 crosscompiler (built together with AROS) and successfully builds armel and armhf linux hosted targets. *needs an AROS code compiler for ARM target *as well as unix compiler for ARM linux host (would be best to have both softfp and armhf, we have softfp only now) with full set of libraries and includes. with—disable-crosstools $AROS_CC is always a wrapper around $KERNEL_CC ? If so, this is wrong for some ports. This can break Darwin, Windows and Android port. Yes, Android port will build. And even work. But it's not good because the port will not be ABI-compatible with other ARM ports. Android's ABI is different from GNUEABI. For example: <pre> enum test {foo, bar}; enum test testvar; </pre> siseof(testvar) will be equal to sizeof(int) in GNUEABI (Linux and AROS) and sizeof(short) on Android. This affects linking objects from static linklibs, for example. Previously everything worked because $AROS_CC was a wrapper on top of $HOST_CC. And a real crosscompiler was used on non-ELF hosts. Android is the same. $KERNEL_CC is incompatible with AROS. compiler=kernel is appropriate _ONLY FOR CODE WHICH RUNS ON HOST OS_ (or barebone hardware, if we talk about native). This includes bootstraps, their linklibs, and host-side dynamic libraries (Windows makes extensive use of them because of architectural considerations. No single AROS object should be compiled with this setting. $KERNEL_CC is really compatible with AROS *ONLY IN LINUX-HOSTED* and no more. On other systems (Darwin, Windows, Android) this is not true any more, and compiler=kernel is never going to work. If you want to compile your AROS module against host OS includes, append the following to USER_INCLUDES (or USER_CFLAGS, this is effectively the same): -isystem $(GENINCDIR) $(KERNEL_INCLUDES) $(KERNEL_INCLUDES) expands to: -isystem <your_os_includes> -isystem <host_OS_gcc_private_includes> -nostdinc This makes AROS compiler adhering to host OS APIs. If you want some preprocessor symbols based on what your host OS actually is, add something like -DHOST_OS_$(AROS_HOST_ARCH). Why is there $(GENINCDIR) at all? Because host OS has its own libc includes, which would conflict with AROS ones. And the host OS libc is not binary-compatible with AROS one. Why doesn't Windows-hosted port use $(KERNEL_INCLUDES) ? Because WinAPI includes conflict with AROS ones in fundamental typedefs, like WORD, BYTE and BOOL. It's almost impossible to deal with this in any other way than rewriting WinAPI definitions using AROS types. Building under centos 6.3 (i386) currently, and AROS creates the toolchain itself. haven't yet committed the necessary changes but "./configure --target=raspi-armhf" is enough to start, then "make arosboot-raspi" will generate arosraspi.img (containing the bootstrap, kernel.resource, and exec.library) as well as arosraspi.rom (containing all the other essentials components such as dos, graphics etc). It will also copy over a config.txt file to make the raspi bootstrap code load the correct kernel, and a cmdline.txt that enables exec debug output. *armel = typically Debian 6, Ubuntu Maverick, Android, *armhf = typically Debian 7, Debian 8, Ubuntu Precise, Cross-compiling Ubuntu ARM softfp <pre> sudo sh echo 'foreign-architecture armel' >>/etc/dpkg/dpkg.cfg.d/multiarch echo 'deb [arch=armel] http://ports.ubuntu.com/ precise main universe' >/etc/apt/sources.list.d/armel.list apt-get update apt-get install gcc-arm-linux-gnueabi libx11-dev:armel libsdl-dev:armel </pre> <pre> ./configure --target=linux-arm --x-includes=/usr/include \ --enable-includes=/usr/arm-linux-gnueabi/include </pre> Cross-compiling Ubuntu ARM hard-float <pre> sudo sh echo 'foreign-architecture armhf' >>/etc/dpkg/dpkg.cfg.d/multiarch echo 'deb [arch=armhf] http://ports.ubuntu.com/ precise main universe' >/etc/apt/sources.list.d/armhf.list apt-get update apt-get install gcc-arm-linux-gnueabihf libx11-dev:armhf libsdl-dev:armhf </pre> <pre> ./configure --target=linux-armhf --x-includes=/usr/include \ --enable-includes=/usr/arm-linux-gnueabihf/include </pre> Now, the AROS build is configured properly and all you need to do is: make [https://github.com/aros-development-team/AROS/commit/d84b9a337f9aa059154d9af69275935125166bdd some Apple Silicon support] == Hardware == ===64bit=== ====BCM2712==== BCM2837 * Broadcom BCM43438 chip provides 2.4&nbsp;GHz 802.11n wireless LAN, Bluetooth Low Energy, and Bluetooth 4.1 Classic radio support, 3B+ [https://github.com/aros-development-team/AROS/commit/afa5bc0bb17d5dd06bcfdbac00853a3799ca8d76 LAN7515] ====BCM2711==== ===32bit=== === Core Kernel === ====BCM2708(family)==== which includes the [http://elinux.org/RPi_Hardware BCM2835] (ARM1176JZF-S 700&nbsp;MHz CPU + VideoCore IV GPU + up to 1GB RAM) *Framebuffer (fb) using mailbox *IRQ scheduler, etc *Arasan based SD Card controller *Synopsis DesignWare USB 2.0 OTG controller [http://networkdirection.net/index.php?option=com_content&view=article&id=106:rasperry-pi-usb-controller&catid=45:raspberry-pi&Itemid=54 Unofficial DOCS pdf], [dwc_otg.c FreeBSD], [], [https://www.riscosopen.org/viewer/view/mixed/RiscOS/Sources/HWSupport/USB/Controllers/DWCDriver/ RiscOS USB Driver], [https://www.riscosopen.org/forum/forums/5/topics/878 RiscOS USB Discussion], [https://www.riscosopen.org/forum/forums/11/topics/1893 Other USB RiscOS], [http://plan9.bell-labs.com/plan9/index.html Plan9 Miller's usb] http://plan9.bell-labs.com/sources/contrib/miller/, [https://github.com/Chadderz121/csud CSUD driver], *[http://www.smsc.com/media/Downloads_Public/Data_Sheets/9512.pdf SMSC 9512] USB LAN/Hub chip *CMOS RAM *VCHIQ port which sends messages to the GPU e.g. for mouse, keyboard, audio on HDMI, etc *Audio Driver *Serial Peripheral Interface Bus (SPI) *[http://www.susa.net/wordpress/2012/06/raspberry-pi-pcf8563-real-time-clock-rtc/ I2C registers] *I2S *Universal Asynchronous Receiver Transmitter (UART) *[http://elinux.org/RPi_BCM2835_GPIOs GPIOs] and [http://www.adafruit.com/blog/2012/08/17/broadcom-bcm2835-peripheral-memory-map-and-gpio-alternate-use-chart-piday-raspberrypi-raspberry_pi/ Alternative view of GPIO] BCM2836 * For Pi B+, PI 2 and Pi 3 SMSC LAN9514 chip adding 10/100 Ethernet connectivity and four USB channels to the board The overclock ability has diminished with each chip version as the energy usage has very slowly risen. BCM2837 is one of the warmest yet and might benefit from active cooling (ie fan) if all four cpu cores are in use for a short while. Video playback is not affected due to the custom support in the GPU. 5 V / 2.4 or 2.5 amp power supply recommended if all four cpu cores are running, else throttling (cpu slowdown) might occur. *[http://www.andrewscheller.co.uk/rpi_pcb_modules.html PCB], [http://elinux.org/RPi_Low-level_peripherals Low level features], Implemented so far... # Modify the configure system so that it correctly builds for the arm hardware float raspi target. # Implemented the bootstrap to load the aros modules and prepare the arm to jump into them. Reworked the x86 console support so that parts can be stolen for raspi to use since t has no basic functionality to output to the display. # Implemented a kernel.resource to prepare the raspi for running aros and provide the low level api calls to expose available resources and allow exec, etc function. # Implemented serial debug support # Implemented the exec (and kernel) functionality required to make multitasking work (and interrupts, exceptions, syscalls, etc) # Implemented a timer.device to utilise the hardware timers. # Implemented a very basic gfx driver to expose the hardware's framebuffer. # Implemented an SD-Card driver for AROS which presently only supports the raspi's chipset but can easily be modified to support all sd-card hardware and media. # Fixed the fat filesystem support in AROS so that it can boot on RasPi's normal SD-Card setup. The "rom" image files needed use a different filename than the default linux, etc images so can be easily installed without harming the existing files - you only need to change the loaded images in the config file to get aros to boot. # Updated the build scripts to automatically download the necessary raspi firmware files and wrap it all up so that you can simply extract the archive to a fat formatted sdcard and boot it on the raspi without having to get anything else. # fix everything in contrib and ports to build for raspi (needs proper testing/fixes but allows every component to actually compile at least, including owb) + numerous other fixes to get things working on arm/raspi .. Improvements... # Implement a USB chipset driver "OR" finish the existing one [https://github.com/aros-development-team/AROS/commit/c07d13c724f944674be5db54fc6a71ee72a01809 usb otg] - the current code is mostly a skeleton that should initialise the chipset and then needs relevant code to support the different transfer types. It also has the "virtual" hub code in place to represent the raspi's USB port (from poseidons p.o.v) # Implement a driver for the USB NIC (a few weeks - depends on USB above) # Write an [https://github.com/aros-development-team/AROS/commit/d55d0f74d20b769bbb8c8d386e5c1d7a9154f05a audio driver] (a few weeks - independent of USB) and [https://github.com/aros-development-team/AROS/commit/e93a4c245f27a87c9c4c1d39206694b39059998a HDMI] # fix syscall bug in the current raspi kernel code # Graphics depend on having a decent "bcmdma.resource" implemented as to use the cpu's dma engine. The sd card driver needs to use it for transfers to/from the controller - and the gfx system needs to use it for "blitting". # [https://github.com/aros-development-team/AROS/commit/4019d84e4975d4dad987a12d57fe108f5ac048e6 Improve the gfx driver], [ vc4gfx HIDD] add [http://dri.freedesktop.org/wiki/VC4/ Gallium3D support] # [https://github.com/aros-development-team/AROS/commit/b13905b3e8e45b089f520b44692c81affddd066f Improve] the [https://github.com/aros-development-team/AROS/commit/3a876755c070f5c73c4f53c7f4d35b4f923088b9 sdcard] device driver - which is also pretty basic but should work with most cards, rework it to also support pci, etc. sd card interfaces on x86 # The current code using very rudimentary access to the gpio interface - so that should be implemented as some resource for other components to access, as-well as the i2c interface exposed over the gpio interface. that should have a hidd class implemented which uses the gpio resource to communicate. Boot up On power-up, the rpi [http://www.open.com.au/mikem/bcm2835/ BCM 2835] [https://github.com/hermanhermitage/videocoreiv VideoCore4] GPU, not the ARM CPU, is in control, and the SD card slot is the only peripheral device with power. The firmware burned into the BCM2835's VideoCoreIV GPU PROM requires a DOS-style partition table; a FAT-formatted first partition; and the freely redistributable but closed sourced Broadcom files “bootcode.bin” and “start.elf” in that partition. The boot sequence carries out several pre-boot tasks *On powering of the rpi, the GPU reads and executes bootcode.bin, which then loads start.elf *The GPU loads the “start.elf” file, eventually, into the L2 cache and then executes it *configures the memory split for the CPU and GPU *reads and parses “config.txt” from the same partition on the SD card and applies the settings (like a PC’s BIOS settings) *loads the “kernel.img” file, again from the same partition *activates the CPU to begin executing the loaded kernel image The CPU/GPU memory split is hard-coded into start.elf, so Broadcom provides three start.elf images, to give 32M, 64M, or 128M to the GPU for multimedia performance, and the remainder to the CPU. RPi uses [https://github.com/raspberrypi/firmware some closed source loaders] and at some point it loads a binary blob named "kernel.img" at 0x8000, at that point there would be a rudimentary Aros alive. If one wants to use the SD-card then there would have to be a driver for the interface and a fat filesystem handler (SD-card has to be formatted to fat filesystem) Boot code and kernel are now linked together and made into that binary blob, just for starters. Raspberry Pi uses [http://kernelnomicon.org/?p=133 u-boot] and [http://kernelnomicon.org/?p=138 UBoot] as bootloader, there's already some code in the Efika MX port for that. UBoot is a native bootloader and not just for the raspberry pi, it loads after start.elf. You can find Efika MX port from arch implementations, some hacking is needed for the mmakefile.src'es as iit dates back to before the Aros crosstool era or else you get some weird errors while building. You also need to code the bootstrap and serial handling. At the moment it seems that a fastest route for the native build would be to make one binary blob without using the package system. Raspberry's memory layout is pretty simple and if the implemented u-boot doesn't support loading other modules <pre> ? - alias for 'help' mtest - simple RAM test autoscr - run script from memory base - print or set address offset bbm - BBM sub-system bdinfo - print Board Info structure boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' bootm - boot application image from memory bootp - boot image via network using BootP/TFTP protocol cmp - memory compare coninfo - print console devices and information cp - memory copy crc32 - checksum calculation echo - echo args to console fatinfo - print information about filesystem fatload - load binary file from a dos filesystem fatls - list files in a directory (default /) go - start application at address 'addr' help - print online help iminfo - print header information for application image itest - return true/false on integer compare jade - loadb - load binary file over serial line (kermit mode) loads - load S-Record file over serial line loady - load binary file over serial line (ymodem mode) loop - infinite loop on address range md - memory display mm - memory modify (auto-incrementing) mtest - simple RAM test mw - memory write (fill) nfs - boot image via network using NFS protocol nm - memory modify (constant address) pci - list and access PCI Configuration Space ping - send ICMP ECHO_REQUEST to network host printenv - print environment variables rarpboot - boot image via network using RARP/TFTP protocol reset - Perform RESET of the CPU run - run commands in an environment variable saveenv - save environment variables to persistent storage saves - save S-Record file over serial line setenv - set environment variables sleep - delay execution for some time tftpboot - boot image via network using TFTP protocol USB - USB sub-system usbboot - boot from USB device version - print monitor version </pre> Most used [http://www.compulab.co.il/workspace/mediawiki/index.php5/U-Boot_quick_reference uboot options] are fatls usb 0:1, the reason behind INTB_KERNEL is to allow use of the standard Exec function AddIntServer() to add interrupt handlers for hardware drivers etc. AmigaOS never used it for abstract hardware drivers. AmigaOS routed only raw hardware IRQs there. Their assignment was hardcoded. As well as number of them. Actually on AmigaOS every bus has its own interrupt subsystem. For example PCI bus. PCI interrupts on Amiga are routed to a single exec interrupt. 1:1 relationship between CPU and hardware interrupts is present only on PC. IMHO we miss things like AddInterrupt/RemInterrupt methods on our PCI subsystem's device class. PCI bus class should map these methods to whatever is appropriate. This is how it is done on AmigaOS and friends. When these are implemented, raw kernel.resource API will be needed only for several PC-specific drivers with hardwired resources. Exec IRQs are real IRQs only on Amiga hardware. On other machines they can be emulated where appropriate (VBlank is a good example). kernel.resource is meant to be different, its IRQs are hardware-agnostic, they are plain "Hardware IRQ number X, whatever this means". They are low-level actually, and meaningful only in the context of a particular system. Was that not the transition from irq.hidd to kernel.resource? No. A long time ago there was another hacky bit named INTB_TIMERTICK. It was "abstract timer interrupt", used by timer.device. It was the same as VBlank, but with larger frequency. I removed it, because kernel.resource API was a cleaner way to access this interrupt. Furthermore, there can be more than one timer in the system. I am even thinking about bringing back timer HIDD definitions again. hpet.resource is a bad idea. Can someone please enlighten me a little on how the scheduler is meant to work? Poseidon.library creates its "Poseidon Event Task" during RTF_COLDSTART -> then calls Wait(), and ends up in limbo because wait disables interrupts (used for the scheduler heartbeat), and basically waits forever because the sigbit is never set, since krnSwitch doesn't switch the task unless TF_SWITCH is set, and no codepath run during this seems to set it?? TF_SWITCH does not disable/enable switching. This flag just enables to run user-supplied hook when the task is being switched away. It is completely safe to call Wait() in Disable()d state. Doing this actually temporarily breaks this state. IDNestCnt gets remembered in struct Task, then next task is selected, and its IDNestCnt is restored in sysbase (see kernel_scheduler.c). If there are no other tasks, then your cpu_Dispatch() should enable interrupts on the CPU and enter idle mode. See x86 implementation for good example. You miss what happens next... 1. KrnSwitch() saves context of your task, saves IDNestCnt (core_Switch() and cpu_Switch()), then drops into cpu_Dispatch(). 2. cpu_Dispatch() calls core_Dispatch. Then two cases are possible: 2a. There is a READY task. It is picked up, its IDNestCnt is restored in SysBase, then cpu_Dispatch() needs to restore registers and exit. The next task is run. 2b. There are no READY tasks. core_Dispatch() returns NULL. In this case your cpu_Dispatch() should enter idle loop. It should just enable interrupts on the CPU and put it on halt. This allows it to process hardware interrupts. Eventually some of your interrupt handlers wakes up your task and puts it into READY list. My heartbeat interrupt has been slowed atm to help debugging - but it never actually gets a chance to fire because of the Wait() disabling interrupts. Perhaps you have forgotten to enable interrupts in your idle loop. There is a change in the format of AROS executables. Until now we were using Elf RELocable files which are usually used as intermediate object files. We had them for various reasons, one of them was how AROS files were built in the past. That days we had no real aros cross compiler and the option to embed relocation data in unix executables (or in executable files in general) was rather new and not every linux/unix system had it. Therefore we have decided to use intermediate files. Although it was somehow working (and it is still working :-)), it has some drawbacks. Therefore decided to introduce real Elf EXEC types, in first turn implemented on ARM target with option to expand in future to all other AROS architectures. The first patch was pretty easy and appeared to work somehow. It generated nice executables with embedded relocation info. Not only that, it also removed all global symbols adjusting relocation data to be relative to the beginning of the sections. That move reduced number of symbols in each executable significantly (depending on the file between 20 and 80% of all symbols could be removed). The only symbols that stayed in the file are local ones - due to the nature of the patch wasn't able to remove them since we have not seen them in the symbol hash table. The patch didn't worked though. The files were relocated, AROS kernel loaded, but it crashed very early. What happened? Well, the nature of ARM relocations happened :) Most of the relocation data on all machines is rather simple. Relocation can be absolute or pc-relative, sometimes the offset has to be bit shifted. On ARM v7 there is another one. There, when one wants to load an address of function/variable into register a combination of two instructions can be used: movw and movt. The first one loads immediate into lower 16 bits of a register while clearing upper 16 bits. The second one loads immediate into upper 16 bits without touching lower halfword. Loading of a pointer into a register looks like this: movw r0, #:lower16:label movt r0, #:upper16:label In this case there are two relocations - one for lower halfword and another for upper. If an overflow of lower 16 bits occurs during relocation process, the upper one should be updated as well. Unfortunately with current patch and with typical ARM executables there is not enough information to perform the calculations. There are two options - the first one would be to give up and go back to "fake" executables, another one would be to change from REL to RELA relocation info. The latter contains an addend, extra data which can be used to perform all the relocation calculations I need. Decided for the second option. The patch is already in the works. There is another function for the binutils' bfd backend to perform the final relocation. There can decide what to do with every reloc info, modify data and eventually strip some symbols. An advantage is - at this stage of the linking process have also full access to all local symbols so can change all relocations section relative and eventually strip all symbols from the files. === GPU === Most of start.elf runs on the GPU. Placing ALL the userland GPU code in the videocore.hidd isn't going to be a terribly big problem because the code they published is nothing more than a shim that sends data straight to the GPU to execute. The good news about this is that we only need to write our HIDD using the OpenVG API. The shim is relatively small codewise and lives in the ARM memory (the actual OpenVG code itself lives in the GPU RAM area and its loaded from start.elf). That's also the bad news. Our driver has to translate AROS video calls to OpenVG calls, for most tasks it should be easy, for some, not so much. It's still probably less difficult and less work, than controlling the GPU directly. The other good news is that anything done through OpenVG happens on the GPU, its truly accelerated. It also has some nice font functions, meaning we can lead into an accelerated text mode later. Basically, AROS resets or locks up when it tries to use AROS_ATOMIC_INC or DEC. If I comment out the byte/word operations in the header files and use non-atomic operations, the code works as expected. have read that the L1 cache needs to be enabled to use LDREX and co (which I also read is only meant to be used on multi processor systems with shared memory) - however I am certain this is correctly enabled. If you are using LREX or STREX, you should have L1 cache enabled, at least on the ARM CPU I work with at work. L1 cache is enabled by enabling the MMU *AND* setting the C and I bits in the CPU - the C bit is ignored, and the I bit only covers the 16 byte instruction pipeline if the MMU is not enabled. Can you verify that your assembly is generating LDREX/STREX? From the behavior, it almost sounds like its generating the default Semaphore locked atomics. Impossible. There are no semaphore-locked atomics. There are Disable()/Enable()-based ones instead. And there's a special #define AROS_NO_ATOMIC_OPERATIONS in this case, which tweaks Disable()/Enable() implementations not to recurse forever. I have tested this on ARMv5 which does not have ldrex/strex, it works fine. On those ARMs there's no way to have real atomics. On other OSes (like Linux) this is done by introducing things like atomic_t, which appears to be a complex structure, holding the value together with accompanying spinlock (implemented using swp). #warning "TODO: lookup optimal mmu table settings for raspi memory" /* Set up an identity-mapping for all 4GB */ for(x = 0; x < 4096; x ++) { pagetable[x] = x<<20 | (0x40002|0x80000|0x010000|0x00C00|0x04); } Shouldn't there be a second loop that sets the 'C' bit in the descriptor for the RAM pages? Currently, you have TEX=0, C=0, B=1 for all pages (Shared Device). You should have TEX=0, C=1, B=0 for RAM (Write-Through, Cached) So .. pagetable[x] = x<<20 | 2; should be enough? No, for RAM you need to change the '| 0x40' to '| 0x80' tell dosboot the correct defaults to use Please don't do this. This bootconfig.c is a deprecated legacy thing. I wanted it to go away completely with time. Instead, display drivers should auto-install themselves during own initialization phase. I. e. detect hardware=>instantiate itself. This should make things way simpler. With this approach you only need to add the driver into KS image to get the device autobooted. No hardcoded stuff. Currently VESA and VGA drivers do this, look there for examples. never rewrote ATI driver because i don't have any test system for it. they defined a smaller AROSCPUContext than the ExceptionContext - yet reference it as ExceptionContext in other places, and since it hasn't allocated enough storage for ExceptionContext, are corrupting memory/the structure (since the elements that are there don't map 1 to 1 with the exception context). AFAIK, AROS has been moving in a different direction to this in recent years. It is the job of graphics HIDDs to allocate bitmaps etc. so that they have the most suitable characteristics, including allocating them from GPU RAM where possible. The concept of chip RAM is only for legacy code, and most if not all non-68k platforms should have all system RAM marked as chip. BTW, is the video processing code you mention CPU code or GPU code? Also, IIRC we have support for "external memory allocators". Perhaps that's what we need for the allocation of GPU RAM through the mailbox. All hosted and x86 native ports should use proper context formats. trying to clarify if the vblank handler has to have run by this point to prevent this deadlock. Actually, no. Unless you have installed VBlank handler which should wake up at some point. Without VBlank there will be no quantum count. Consequently, there will be no forced preemption. But the rest will work, and multitasking will be cooperative (switch happens only when current task voluntarily gives up the CPU). Does it depend on the vblank having run before this point? and if yes what does that mean on systems where it might be able to run enough code (e.g. get to this point) before the vblank interrupt has triggered? What is it waiting for? It could wait for timer, in this case you need timer.device working. VBlank is currently needed for exec's quantum counter. In current native ports we have only a single timer, which is served by timer.device. VBlank is simulated by timer.device also. If your machine has two timers, then you can use one of them for VBlank, and another for timer.device, this will simplify things down. VBlank needs to be 50 Hz for historical reasons, many programs use it as cheap timer. I am periodically thinking about making some abstract mechanism to be able to change quantum source (and untie it from 50 Hz), but have no time to come up with something good. Additionally i started disliking timer.device hardcoded design when PC has got many timers (old 8253, APIC, HPET). Currently i think there should be some low-level entity representing tick source. timer.device should just select the most appropriate source for its units. The BCM2835 has 4 GPU based timer sources - 2 are used by the GPU, so im using Timer3 for our heartbeat and the remaining one will be free to the system. There is also the less capable ARM timer but that is dependent on the CPU frequency. Very good. You won't need any emulation. Set the heartbeat to 50 Hz and drive VBlank from it. Use other timer for MicroHZ. Can you use the 'econsole.hook' I make for debugging the Sam460 via the serial port? It provides a before-anything-else shell prompt on the serial port. You can then do 'NewCLI' to test your graphics, or use any DOS command in shellcommands.resource. You should just be able to add econsole.hook to your module list, and use 'econsole' in your bootargs. So long as you have a working Exec/RawMayGetChar and Exec/RawPutChar, it should work. Also make sure to add shell.resource and shellcommands.resource for this. That should have done it. If you set "#define DEBUG 1" in arch/all-native/econsole/econsole.c, do you get any additional serial output? have added it to the build and added econsole to the command line - and can see the bootloader picks up on the emergency bootconsole tag, but I still only get the insert bootable media display? Im assuming it exposes a fake filesystem that tricks aros into booting? The contents of which are: ECON:AROS.boot Way to handle the scheduling code? The implementations I had been following were causing problems, due to cascading interrupts which I cant handle properly in the asm stubs just now (when they break disable etc.) - since it means detecting the interrupted codes cpu mode and getting the correct sp/lr for it, and that's just too tedious for arm. To work around this ive added a system idle task which does nothing - and when the scheduling code has no task to run switches this in and lets it run, thereby allowing the interrupts etc to resume until something does need to happen. Also, by adding accounting code to cpu_Switch() and cpu_Dispatch(), it should allow the system to log idle time correctly (as well as running tasks). have thought of also adding an additional task that never runs, solely to record time spent in IRQ handlers, but I digress.. was under the impression that kernel.resource should *never* be used outside of exec.library. This is a wrong impression. Michal started designing it because portable nature of AROS does not fit well into exec's API with all its assumptions. So, he started the new, hardware-agnostic kernel API from scratch. Yes, exec sits on top of it in places. But kernel always meant to be open thing. Otherwise it would not exist. it wasn't meant to be just used willy nilly by user code - but by lower system components (e.g. exec) so that they could be implemented in a more generic fashion, and the kernel resource itself hide the systems quirks. Adding new things there perfectly keeps up with our decision to minimize AROS-specific intervention into APIs which can clash with MorphOS/OS4 extensions. We want at least source-level compatibility there. Binary compatibility on PPC would be extremely cool, but at the other hand we have no maintainer for this, as well as their ABIs are a bit weird and far from optimal, especially MorphOS one, because it aims for m68k binary compatibility. It depends on what exactly is being implemented - there's no reason we should have everything crammed into kernel.resource if it doesn't need to be (i.e. if its better suited as a separate component/subsystem in its own right) The _LE versions are for when you have endian swapping taking place. If the graphics are the same endian as the CPU, no swapping should occur. I ran into a similar terminology problem in SDL with a friend insisting that his Radeon 7000 on his PC was big-endian. It is not, it just uses the same endianness for the graphics card and the CPU so no swapping was necessary. They were both little-endian. The _LE versions are because the PixFmts refer to the bitmap data being in big endian format in memory, for which the normal version would need to do endianness conversion before applying the shifts/masks. on this platform it is in _LE in memory also so we don't need the conversion hence using the _LE version of the call). would use _LE (if it's really little endian 16 bit mode). What is the bare minimum needed to implement a framebuffer based gfx driver, with our software handling the rest? I have tried with just a gfx class that only expose new/dispose/newbitmap - and having an onscreenbitmap used only for the framebuffer itself (with all other bitmaps being chunkybm, and the framebuffer's superclass also being chunkybm), but that alone isn't enough it seems? You can use workbench/hidds/sm502/ as your example - it is as simple as I could make it. So, AROS creates the framebuffer bitmap (I have verified this) -> so surely it should be capable of then rendeing into it? I don't actually create the framebuffer "bitmap object" myself - only as a result of being asked to. I so far have -: vc_init: queries the gpus memory, and sets up a fake memory handler for it, then adds the bootmode driver and returns saying all is well vc_gfxhidd:New: sets up some fake syncmodes to test with and creates the real gfx object. vc_gfxhidd:NewBitmap: checks if its a framebuffer and uses the onbitmap class or uses the chunkybm class otherwise vc_onbitmap:New; creates a chunkybm object and then pushes the real framebuffer address into it as the buffer, So, AROS creates the framebuffer bitmap (I have verified this) -> so surely it should be capable of then rendeing into it? I don't actually create the framebuffer "bitmap object" myself - only as a result of being asked to. The code I currently have on SVN seems to create the framebuffers bitmap object fine, but then crashes in intuitions DisplayDriver callback. In particular it crashes performing the getattr on the system default pointer. don't expose MEMF_CHIP in an allocatable form so AllocSpriteData was failing (and other code later doesn't check if the values are valid == illegal memory accesses) Actually MEMF_CHIP has to present, for historical reasons. This has been never fully agreed upon, but in ports i wrote i exposed the whole memory as MEMF_CHIP. The idea behind this is that CHIP is originally the memory where graphics and sound data can be put. On non-Amiga platforms there are no restrictions on this, so the whole memory is CHIP. Yes, many old software can misbehave with CHIP memory size larger than 2MB. But this actually applies only to m68k AROS which is going to run m68k binaries. In other cases it's quite logical to fix the program when porting. As to original question: yes, it's enough to have a framebuffer bitmap (one with aoHidd_BitMap_FrameBuffer set to TRUE) and PutPixel routine. It framebuffer can be served by chunky bitmap class, then you can simply create chunky bitmap with your own buffer (see how VESA driver does this). Chunky PutPixel is already there. struggling to determine what is the correct pixfmt to use for the 24/16/15 bit gfx modes on the RasPi. AFAIK it uses RGB565, for 16bit but im unsure what shifts etc should go with it? suffice to say Im getting the wrong colors so far lol. <pre> redmask: 0x0000F800 greenmask: 0x000007E0 bluemask: 0x0000001F alphamask: 0 redshift: 16 greenshift: 21 blueshift: 27 alphashift: 0 </pre> It should likely be vHidd_StdPixFmt_RGB16_LE This stuff is a bit confusing. The "names" of the stdpixfmts are based on the layout in memory, ignoring endianess. So for example: ARGB32: will be 0xAA 0xRR 0xGG 0xBB in memory on both big endian and little endian machines. The shifts and masks OTOH are based on pixel access (ULONG in this case), so differ depending on whether you run on big endian machine or little endian machine (that's why there's stdpixfmt_le.h and stdpixfmt_be.h in rom/hidds/graphics/). With the 16 bit pixel format it's even more confusing, as for example it's impossible on little endian machine to describe RGB16 with shifts/masks alone. That's why there's vHidd_PixFmt_SwapPixelBytes_Flag. (RGB16 == RRRRRGGG GGGBBBBB in memory, and for pixel (WORD) access on little endian machine it needs to be accessed as GGGBBBBBRRRRRGGGG). The shifts btw indicate how much to shift the component to the left (!) so that it is moved to the highest bit (31). The aHidd_PixFmt_StdPixFmt you specify will be ignored most of the time, because when the pixelfmt is registered, the gfx hidd checks if there's an identical pixfmt (shifts/masks/etc., but ignoring pixfmt->stdpixfmt) already in the system, and if so, it uses the already existing one and does not create a new one. In theory it would be better if gfx drivers could simply/only specify a StdPixFmt without all the shifts/masks stuff when the gfx driver uses pixfmt which matches one of the stdpixfmts exactly. Another possibility would be for gfx drivers to use HIDD_Gfx_GetPIxFmt(stdpixfmt_gfx_driver_wants_to_use) and then peek shifts/masks from it and fill out a pixfmt tag list based on that. 15bit very blue/green: Try to pass same shifts/masks/etc. as in 16 bit pixfmt (maybe you think it's using 15 bit R5G5B5 (or swapped) but it's actually still using 16 bit R5G6B5 (or swapped). aHidd_PixFmt_StdPixFmt you pass is mostly ignored. It's the shift/masks/etc. that count. But I would still pass the correct one (_LE) == whatever rom/hidds/graphics/stdpixfmts_??.h uses in the entry where you have looked up shifts/masks/etc. Use the shifts/masks/etc. from the entry in stdpixfmt_le.h (if you are running on little endian machine) or stdpixfmt_be.h (if you are running on little endian machine) that matches the pixfmt that its meant to be. 0xAA,0xRR,0xGG,0xBB on little endian (->entry in stdpixfmt_le.h which says vHidd_StdPixFmt_ARGB32) 0xBB,0xGG,0xRR,0xAA on little endian (->entry in stdpixfmt_le.h which says vHidd_StdPixFmt_BGRA32) 0xAA,0xRR,0xGG,0xBB on big endian (->entry in stdpixfmt_be.h which says vHidd_StdPixFmt_ARGB32) 0xBB,0xGG,0xRR,0xAA on big endian (->entry in stdpixfmt_be.h which says vHidd_StdPixFmt_BGRA32) it feels like AROS trashes the alpha component, otherwise it should be 8A8R8G8B. read on the subject suggest its in 1x5r5g5b (x is ignored) to keep 16bit alignment . What I see on screen suggests to me that wrong shift/mask are being applied - however going by the 16bit versions it all looks correct to me so I am really confused as to what is happening. The output image looks to have too much green/blue, and very weak red. Why did usbromstartup become HW-specific ? In the past i have done a big job separating kickstart into several parts. I have never got any responses, so i re-describe my idea. For now it loads the hs otg chipset driver .. The idea is to minimize amount of archirecture-specific modules to make user's life easier. So, the kickstart was split into 'base' (which does not contain anything machine-specific) and 'BSP' (Board Support Package) which contains all hardware-specific stuff. This way, for example, distribution makers can save up space on CD and make CDs with multiple platform support. Different configuration would load the same base with different BSP's. Next there was some part which is entirely missing on hosted. These are filesystems. Hosted ports do not need them to boot up, so on hosted they are left out. At the other hand, they are also architecture-agnostic. So i put them into 'FS' package (standing for 'filesystem'). Poseidon is one more big part. I made it into separate package in order to allow users to omit it if they don't need it (for example, to run on retro PCs without USB). Personally i have one. Again, Poseidon is hardware-agnostic (well, there are USB drivers but HCIs are pretty standard). It's mandatory on PI since there are no other interface types - so being a separate package is irrelevant/pointless. Is Raspberry's USB controller non-HCI compliant? Actually i expect it to be compliant, then wouldn't it be better to make existing drivers discovering them? AFAIK its HCI 1.0 compliant but I'm not familiar enough with poseidons drivers, nor USB, to just hack away at the existing code. Perhaps once i'm more familiar with the workings I can merge in the changes needed to get it operating but for now I will focus on getting it running. Also our drivers have known issues so perhaps a fresh set of eyes might shed some light on what is going wrong. Another interesting question is whether Poseidon can operate on device side. Is it flexible enough? How similar is being a USB host and USB device? think it will need a bit of work on Poseidon's side. Until then I will force the driver into Host/Master mode in the init code, but leave open device etc to configure the chipset for either's use - and look at trying to add support for working in Device/Slave mode & switching modes once it's up and running. Actually USBROMStartup is some kind of kludge. Can there be any alternative? Could device drivers be self-installing, like our HIDDs? This would get rid of need to list them in USBRomStartup. And there is one more thing about modular ports. In order to actually implement this, your bootstrapping environment should provide the ability to load several files. On PC this is provided by GRUB2. on CHRP you can read filesystem via OpenFirmware, and Sam's Parthenope relies on modified u-boot. If your bootstrap allows to load only a single file, then you stuck with monolithic kickstart. By the way... u-boot allows not only to boot up a single uImage or zImage, it also allows to write client programs AFAIK. With this approach, you actually can write modular bootstrap for ARM AROS using unmodified u-boot. [http://repo.or.cz/w/AROS.git/commit/e7bdc7e7b7f12b07aa24c739abb63721a872a53a arasan eMMC sdcard controller specific header which is not USB] and [http://repo.or.cz/w/AROS.git/commit/8bd19674084526a534ac11f7d4c51932e9ffe3d2 added prelim sdcard device]. [http://repo.or.cz/w/AROS.git/commit/9ab8217f61911fb8b7fd41bee46a992b4668ced1 do not set 4bit data mode, or enable acmd12/dma int's] Framebuffer - basic display RasPi has to speak to the "operating system" which runs on the GPU itself and request/free memory - it cant directly manage it itself, and so the managed functions were used to wrap these calls. The Arm and GPU share memory space. The framebuffer is shared. The Arm can write a pixel and it will appear on the screen (through GPU hardware) without flushing/copying being required. The GPU can composite multiple FB's in real time - so you have a number of surfaces defined which are rotated etc and composited in real time to the output. Copying can map from the address space of the Arm to the flat space of the GPU which takes some code, but I don't think whole buffers are copied. The DMA hardware can also access the whole memory space and can perform 2D fills and blits (no blending). This is documented in the peripheral spec posted. The DMA is just an Arm accessible peripheral and can be set up with low latency (e.g. microseconds). must use a 0xc0000000-based bus address to access SDRAM, yet non-DMA access should go via a 0x0-based bus address. For 2D dma, set TDMODE, and the spec says "interpret the TXFR_LEN register as YLENGTH number of transfers each of XLENGTH, and add the strides to the address after each transfer." so set STRIDE to pitch of the image, the width is XLENGTH and height is YLENGTH. You would fill by not setting the SRC_INC and point source to your fill data. The DMA cannot see the ARM's L1 cache, so you would map the framebuffer with ioremap_nocache. Depending on where the source data comes from, it may need an L1 cache flush. The DMA can see the L2 cache. Use 0xC0000000 bus addresses when L2 is disabled and 0x40000000 bus addresses when L2 is enabled. (actually just call virt_to_bus and you'll get the right address out). openGLES/openVG has high latency. Writing to framebuffer then reading it back is very inefficient (e.g. milliseconds). If you can drive it a unidirectional way, just streaming commands at then that is efficient. openVG is not implemented on top of openGLES - it uses the same hardware but as a first class interface To improve the Gfx driver, we will need a DMA resource implemented so can use to perform DMA operations. The Gfx driver will need this to perform blits. USB * Model A and B limited to 150 mA per port. * Model B+ and Pi 2 introduced configurable 600 mA to 1.2 A support over all ports - anything above that requires a powered USB hub. Implementing the hardware driver that Poseidon uses to interact with the USB components. Have code in place to (try) and initialise the USB chipset, and configure host/device mode operation (though AFAICT Poseidon doesn't support device mode). Started to get the "virtual" root hub written for the single USB port so that Poseidon should at least list it correctly in the GUI - and try to interact with it to find peripherals. The BCM2835 uses a soft IP block from Synopsys’ DesignWare library (DWC), specifically the block is called dwc_usb_2_0_hs_otg_subsystem-ahb_se (“USB 2.0 Hi-Speed OTG Controller Subsystem w/AHB Interface SE”). There is no public documentation for this, and pretty much zero chance of anyone getting hold of it even with NDA. However, there's a Linux driver written by Synopsys ([https://github.com/raspberrypi/linux dwc_usb]). Specifically directories [https://github.com/raspberrypi/linux/tree/rpi-patches/drivers/usb/host dwc_common_port] and [https://github.com/raspberrypi/linux/tree/rpi-patches/drivers/usb/host dwc_otg]. The Synopsys code is actually under a fairly permissive licence – it's not GPL, it's similar to BSD (’don't sue us if it breaks’ is pretty much the only clause). So this should not be a barrier to porting the code. The code is really well written, with a nice partition between the work done by the driver (dwc_otg, which is fairly involved, given the host does more work than a conventional EHCI driver), and the interface to Linux (dwc_common_port). Probably only need provision of relevant changes to dwc_common_port. Other things to consider.... * Provision of necessary headers to get it to compile * Provision of necessary functions (main issues are wait queues, threads, work queues, tasklets, timers, spinlocks and mutexes (multithreading) ) * Interfacing between USB stack and the driver. dwc_otg/dwc_otg_hcd_linux.c looks like the place to start. the Linux bits of the headers are only required for the dwc_common_port library. dwc_common_port includes a variety of crypto functions which are not used – it appears to also be used for ultrawideband (UWB) and wireless USB (WUSB) drivers where crypto will be an issue, but it isn't going to be for plain wired USB. Every USB driver acts as an USB hub as well in order to let Poseidon control the state of USB ports. The code there was reading status of the only USB port in Raspberry's CPU but when changing the status it erroneously deleted some of the status bits, including the port enable one. It was so because those bits in the status register are of a type Read/WriteToClear. It means, if one does not want to change their value from 1 back to 0, one has to actually write the 0 value. Very practical thing e.g. in interrupt handlers, where one reads the interrupt status register to learn what was the interrupt reason, and writes it back to the same register in order to clear the interrupts. After fixing that code it turned out that the communication was still unsuccessful. Apparently the USB device was not understanding the host for some reason. That should not happen since the request sent was one of the standard ones implemented by virtually anything with an USB connector, assumed that Poseidon clears the data caches before forwarding the work to the USB drivers but that's the responsibility of the driver itself. The USB device responded and acknowledged the transmission! But why were all the request sent after address change failing with timeout? They should not. Once again, address set is supported just by anything. Tried to contact the device at address 0 once again and there it was, still responding properly. The enlightenment came. The bus address for DMA transmissions was, as it is in many bare metal USB implementations, just the pure memory address of the buffer as seen by the ARM cpu. Have "prefixed" it with the real location of uncached RAM and booted AROS once again. Trident saw this: Product : Hub: Vdr=0424/PID=9514 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 9 SubClass : 0 DevProto : 2 VendorID : 1060 ProductID : 38164 DevVers : 0200 and this: Product : Vendor: Vdr=0424/PID=EC00 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 255 SubClass : 0 DevProto : 1 VendorID : 1060 ProductID : 60416 DevVers : 0200 and even this: Product : Hub: Vdr=0424/PID=9514 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 9 SubClass : 0 DevProto : 2 VendorID : 1060 ProductID : 38164 DevVers : 0200 What are these things? The first one is USB hub built in the Raspberry. Thanks to this one the Pi machines (with exception of Pi0 and computing modules) have more than just one single USB port. The second one is the network chip in raspberry, the third one is my USB SD card reader which have just connected to see what happens. AROS tried, of course, to boot from it ;) So, the first step towards working USB is done. The control transfers are working as you can see above. Next step is to implement bulk and interrupt transfers, having the basics in place. Finally some error handling will be added and USB for Pi will be as complete as the PC version. [http://www.raspyfi.com/raspberry-pi-usb-audio-fix/ Issue with USB Audio] Audio [https://github.com/raspberrypi/linux/tree/rpi-patches/sound/arm audio] and its [https://github.com/raspberrypi/firmware/issues/2 very high speed message passing interface type of thing VCHI] The Model B+ added an additional voltage regulator for the audio output and an additional output driver to drive low-resistance loads like headphones. However it is still using pulse-width modulation (PWM), which has a major impact on sound quality the old Raspberry Pi used a linear voltage regulator to provide the 3.3V to many of the components on the board while the new one uses a switching regulator. Both can perform reasonably well. However switch mode power supplies often show higher noise figures Analogue audio Audio over HDMI rev 1.3 & 1.4 Ethernet 10/100 BaseT Ethernet RJ45 socket GPIO GPIO shouldn't be too bad but bear in mind it is already accessed in places so they would need to allocate pins etc through it (e.g. sdcard to flicker the activity light, serial debug to output data on the GPIO pins) Probably a resource rather than a device... Started an i2c driver that will need to allocate GPIO pins. Feel free to work on it if you are interested ;p GPU graphics with 2D and 3D acceleration Sadly none yet for 32bit but for 64bit... == References == ===Hosted=== ==== Linux ==== Change lxde to another sudo leafpad /etc/x11/xinit/xinitrc xorg.conf <pre> Section "Screen" Identifier "Default Screen" DefaultDepth 16 SubSection "Display" # Viewport 0 0 Depth 16 Modes "800x600" EndSubsection EndSection Section "Device" Option "Backingstore" Identifier "Card0" EndSection </pre> Will raspberrypi ARM programs run on other ARM archs and vice-versa ? If not I would like to use different cpu names for archs which are incompatible. All code compiled for at most armv6 with softfp float abi will work on all softfp ARM targets, including raspberry. Code compiled for hard-float ABI will not work on any softfp target. But then, hard-float abi uses -armhf- cpu name. keyboard or mouse not functioning or partly working lsmod kernel and modules (stored in /lib/modules/ get from https://github.com/raspberrypi/firmware and click on ZIP button) have to be updated simultaneously sudo Apt-Get Update sudo Apt-Get Install <program > <program > cksfv joystick p7zip-full stopwatch mtpaint searchmonkey zip geany renameutils fbreader unrar-free mhwaveedit xpad milkytracker grafx par2 libreoffice epiphany-browser xbmc ace-of-penguins gweled black-box petris xmahjongg thrust fceu freesci frotz xgammon tuxpuck littlewizard xsoldier micropolis xbubble eboard&xboard (freezes) bomberclone OMXPlayer not responding or working with keyboard or no sound audio through HDMI LXterminal—command "OMXPlayer -o hdmi %f " hdmi issues Setting the hdmi_force_hotplug=1 makes sure the Pi believes the monitor/TV is really there. You might also need to set config_hdmi_boost=4 or even higher (up to 9) if your display needs a stronger signal. If the display is a computer monitor or newer tv, use hdmi_group=1 (auto HDMI use) and if it is an older TV, try hdmi_group=2 (for DMT formats, i.e. for PC monitors) then you HAVE to "set hdmi_drive = 2 to enable HDMI output as this forces HDMI mode rather than DVI mode Do not set hdmi_safe=1 as that overrides many of the previous options. Using a shorter or better quality HDMI cable might help. Make sure your Pi's power supply delivers 1 A and not 500 mA. If you see a problem with the red colour - either absent, or interference - then try a boost composite video changing the RCA cable, then the composite port worked out of the box Boot it as you are doing, without HDMI. If you now plug in the HDMI, do you get the image? In other words, does the Pi think HDMI is connected even when it isn't? Rename all the files in the first partion of the card except bootcode.bin, start.elf and fixup.dat What's the result? Put back config.txt What's the result? for PAL mode sdtv_mode=2 dmi_ignore_hotplug Pretends HDMI hotplug signal is not asserted so it appears a HDMI display is not attached hdmi_ignore_hotplug=1 Use composite mode even if HDMI monitor is detected <pre> # NOOBS Auto-generated Settings: #hdmi_force_hotplug=1 #config_hdmi_boost=4 #overscan_left=24 #overscan_right=24 #overscan_top=16 #overscan_bottom=16 #disable_overscan=0 start_x=1 gpu_mem=128 </pre> tvservice -c "PAL 4:3" <pre> /opt/vc/bin/tvservice -s or tvservice -s state: HPD high|HDMI mode|HDCP off|composite off (0x12001a), 1920x1080 @ 60 Hz, progressive /opt/vc/bin/tvservice -m CEA Group CEA has 1 modes: (native) mode 16: 1920x1080 @ 60 Hz, progressive /opt/vc/bin/tvservice -m DMT Group DMT has 0 modes: </pre> sudo amixer cset numid=3 1 forces the audio to the headphone jack, even with the HDMI video output plugged in config.txt the hdmi_ignore_edid_audio=1 option sems relevant as it should tell ALSA that the only available audio is analog, no matter what the display says There are several different ways that these 4 pole (ring) composite analog cables can be wired up, so some work great in some applications and can be a waste of time in others. What is needed for the Raspberry Pi B+ and above, which like many camcorders needs the ring contact next to the base contact to be the ground. The wiring for the 4 pole are: TIP (LEFT AUDIO CHANNEL) RING 1 (RIGHT AUDIO CHANNEL) RING 2 (GROUND/EARTH) RING 3 BASE/SLEEVE (VIDEO) YELLOW Most Apple based Players and the Microsoft Zune (TM) are wired this way. Most analogue camcorders are wired this way as well, where the ground in on Ring 2 will work with the Pi although you may need to swap your Video plug with the Right Audio plug. Nearly all other MP3 players are not wired this way, the ground is on another ring ie the wrong one. External devices * Camera Module Omnivision ov5647 Sunny 5MP (NoIR version) V1.3 - NoIR at 850&nbsp;nm, peak at 880&nbsp;nm and trails off at 940&nbsp;nm wavelengths * Camera V2 Sony IMX219 V2.1 8mpixel 8MP 8megapixel - 3280 x 2464 pixels - video at 1080p30, 720p60 and 640x480p90 - wider field of view, 62 vs 54 degrees horizontally - * Branded WIFI usb BCM43143 dongle N.B. dreaded error after changing cameras (stupidly without turning off the power first) and lasted through several power cycles. It can be a bad 15-pin FFC ribbon cable, when swapped, camera(s) and the Pi itself are working OK. It can be an instance of a cold solder joint on the CSI connector on the pi board. the camera can be detected (that's done via I2C) but may still not be able to receive image data (done via CSI-2) if something is broken. CSI-2 is uni-directional. Control is generally done via I2C. The CSI-2 receiver always writes to memory, not direct to the ISP. That's the way the Broadcom architecture works as it allows multipass processing easily. GPU memory is accessible from the ARM. Processing using the QPU graphics processors may be possible. currently the only supported sensor is OV5647 and IMX219. The linux drivers are all in the firmware blob, else you'd be looking at at least a man-month of work in a fully fledged imaging lab to do a decent tuning of the camera modules' ISP parameters. Static electricity maybe an issue for the camera module and slightly less for the pi board. * Hosted under ARM Linux which needs to be already installed [http://www.aros.org/nightly1.php current ABIv1] Help building AROS hosted on Linux ARM I was looking a way to use more my Handheld ARM based called Pyra (Dragonbox Pyra) an ARM (Omap5 cpu with 4GB ram) linux based machine (Debian Buster v10 with kernel 5.6.19 adapted) and have a try to compile the latest Aros sources by Deadwood directly on this device. Compilation stops after build libpopupmenu.a and trying to build libatomic have this error: <pre> Configuring build in bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic configure: WARNING: unrecognized options: --disable-nls, --without-x checking for --enable-version-specific-runtime-libs... no checking for --enable-generated-files-in-srcdir... no checking build system type... arm-unknown-linux-gnu checking host system type... arm-unknown-aros checking target system type... arm-unknown-aros checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for arm-aros-strip... /media/farox/pyra2/arosbuilds/toolchain-core-armhf/arm-aros-strip checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking for arm-aros-gcc... /media/farox/pyra2/arosbuilds/toolchain-core-armhf/arm-aros-gcc checking whether the C compiler works... no configure: error: in /media/farox/pyra2/arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic': configure: error: C compiler cannot create executables See config.log' for more details make[2]: *** [mmakefile:4489: /media/farox/pyra2/arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic/.configured] Error 77 [MMAKE] make --no-print-directory TOP=/media/farox/pyra2/arosbuilds/toolchain-core-armhf-build SRCDIR=/media/farox/pyra2/arosbuilds/AROS CURDIR=tools/crosstools/gnu TARGET=tools-crosstools-gcc-libatomic-configure -s --file=mmakefile tools-crosstools-gcc-libatomic-configure failed: 512 [MMAKE] Error: Error while running make in tools/crosstools/gnu: No such file or directory make[1]: *** [Makefile:361: linklibs-libatomic] Error 10 make: *** [Makefile:183: crosstools] Error 2 </pre> looking at config.log on arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic i found that arosbuilds/toolchain-core-armhf/arm-aros-ld: cannot find -laeabi so i do make linklibs-aeabi-arm-quick and the missing lib was built. now the next stop is at fatal error: bits/libc-header-start.h: No such file or directory and fatal error: sys/cdefs.h: No such file or directory in many places so after checking that i have this missing include files i have noted that my include path is a bit different, standard searching path is /usr/arm-linux-gnueabihf but in my system is /usr/include/arm-linux-gnueabihf so if i add my path to some mmakefiles compilation goes on....but is a better way to add this path to avoid every mmakefiles to be changed? i fixed with adding -I/usr/include/arm-linux-gnueabihf to where is missing on mmakefiles like USER_INCLUDES := -isystem $(GENINCDIR) -I/usr/include/arm-linux-gnueabihf $(KERNEL_INCLUDES) P.s. I have changed many mmakefiles and have at least compiled (after many hours) the toolchain doing make every time in arosbuilds/toolchain-core-armhf-build (also have to disable making tests under cplusplus but don't remember the directory ...) but i ask an help to have an automated way to correctly build without modify mmakefiles. Last time I built armhf target was around 2 years ago. At that point I built is via cross-compilation from linux (ubuntu 22.04) using linux armhf crosscompiler (this can explain the path differences you are experiencing) as well as using AROS gcc cross-compiler in version 6.5.0 (build with option 21) in rebuild.sh). Since then AROS GCC has been updated to 10.5.0 and I don't believe anyone tried to build the armhf target again. My suggestion would be to downgrade GCC to 6.5.0 (via editing AROS/config/gcc_def file) and try to first build using cross-compilation from x86_64 linux. Once that works, you will have a "template" to compare to native compilation under arm linux. Thanks for your suggestion...but i think the toolchain with GCC 10.5.0 is compilable if i found a way to pass the path of my system to the script that build (option 21 on rebuild). The other only changes are (but i don't know where to modify...) is to add the build of libaeabi and disable the building of some tests under cplusplus that use exceptions and is not supported under ARM. I'll try to crosscompile with my Linux amd64 PC. For paths look into core-linux-armhf/bin/linux-armhf/gen/config/target.cfg. A number of build-wide variable is set there containing paths to local build system. These variables and the target.cfg file are generated by AROS ./configure script. Thanks compilation now go forward...i changed target.cfg under "toolchain-core-armhf-build/bin/linux-arm/gen/config" and do make on "toolchain-core-armhf-build" dir. Now i need to find where to enable build libaeabi.a so i can build the entire toolchain with option 21 of rebuild.sh I found something that looks like libeabi in AROS/arm-all/arm-aeabi/mmakefile.src. Try adding a third line there: #MM- linklibs-armhd : libklibs-aeabi-arm Though I don't remember needing this library. Possibly the 6.5.0 GCC somehow does this while 10.5.0 is missing this. I try adding this line (and the variant "linklibs-armhf" instead of hd) but it did not solve the automatic building of the missing lib. I must do "linklibs-aeabi-arm-quick". Anyway after have build the aeabi lib i succefully built the toolchain (after many hours...). Smile To test I restarted from selecting option 21 (on rebuild.sh) but after many hours i get the same error of the kernel includes not found...maybe i need to modify the configure script for my case. With the toolchain built i try to build the core-linux-armhf (DEBUG) (option 22) but after a while it stopped with "cannot find -laeabi " so i made it built manually...and now i can continue compiling...i'll let you know if all goes ok. m0u3kv02xon6uhklkweqfunp3qtceee 4655993 4655992 2026-08-01T12:25:08Z Jeff1138 301139 4655993 wikitext text/x-wiki {{ArosNav}} [[#Native]] [[#Hosted]] ==Introduction== The Raspberry Pi Foundation is a charity founded in May 2009 to promote the study of basic computer science in schools, and is responsible for developing a single-board computer called the Raspberry Pi. The Foundation is supported by the University of Cambridge Computer Laboratory and Broadcom. Its aim is to "promote the study of computer science and related topics, especially at school level, and to put the fun back into learning computing." The original Raspberry Pi 1 Model B computer went on sale in February 2012 and set a new standard shattering the dominance of the PC in the home and education markets. Millions in the various formats, A, B, A+, B+ and Compute have since been shipped worldwide. The original concept of the Raspberry Pi was for a computer board providing Internet access with up to 1080p HD graphics at very low cost. The boards provide a platform for children and adults from any background to acquire computer science knowledge and help develop the future World-Wide-Web and all things internet (IOT hub and bridges out to home network to cloud of sensors). Hobbyists and tech dabblers/tinkerers are the main purchases of the Pis (around half). The rest of the sales are split between education/industrial. While the Raspberry Pi boards were designed primarily for education, they have become very popular with manufacturers of embedded systems. The Raspberry Pi Foundation has ensured backwards compatibility with each new revision. The bare-bones Compute module is aimed specifically at the OEM manufacturer. * Pi 5 - Quad A76 and RP1 "southbridge" with VideoCore 7 4Gb 8Gb LPDDR4X * Pi 4 - Quad A72 64bit VideoCore 6 * Pi 3 - Quad A53 [https://www.raspberrypi.com/documentation/computers/processors.html 64 bit] - VideoCore 4 * Pi 2 - Quad 32bit but more power consumed * Model B+ - lower power usage but same speed as the original Pis * Model A and B - * Compute 1, 3, 4 and 5 - industrial use <pre> 2008 Trustees collected for Foundation 2009 Charity status gained 2010 2011 First Raspberry prototypes 2012 First boards go on sale at CPC and RS. The Model A and B 700 MHz Arm11 - February 29th BCM 2835 2012 First million sold - more than the 10,000 original planned and anticipated 2013 First Alpha Experimental builds of AROS Native for the Pi 2013 Pi Trading launched making grants available, providing in house educational resources and Pi Academy for teacher training 2013 Over two million sold 2014 Over three million sold and updated Model B+ introduced that moved composite video to audio jack and same half gig of memory 2014 Pi Model A+ v1.1 - BCM2711 no ethernet and 1 usb - a little smaller - 2015 Pi 2 Model B - BCM2836 900/600 MHz ARM Cortex-A7 Armv7 quad 32bit core and 32bit VideoCore IV 3d GPU with 1Gb RAM 2015 Over four million first gen pis sold 2015 Over a million pi2s sold 2015 Pi Zero BCM2835 released 2015 Raspberry Pi 2 Model B version 1.2 has armv8 BCM2837 2016 Passed Sinclair total number of computer lines sold - around 7 million 2016 Pi 3 Model B - Broadcom BCM2837 SOC four 64bit ARMv8 Cortex-A53 1.2GHz - 1Gb - bluetooth 4.1, Cypress CYW43438 wireless 802.11n and a dual 32bit VideoCore IV GPU - 4 x USB2.0 ports 2016 Total PIs over 10 million worldwide 2016 Compute 3 launched BCM2837 armv8 Quad 64-bit Core 1Gb LPDDR2 RAM 4Gb Emmc storage 2017 12 million pis sold in total 2017 Pi Zero W 1GHz, single-core CPU A53 released with Cypress CYW43438 wireless 2018 Pi 3 Model B+ - 4c A53 BCM2837B0 - 1Gb, wireless 802.11ac, gigabit ethernet (300Mbit/s) and bluetooth 4.2 - power over ethernet - 4 x USB2.0 ports 2019 Over 15 million sold 2019 Pi 3 Model A with BCM2837b0 with 512Mb, 2019 Raspberry Pi Compute Module 3+ CM3+ LITE Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC 1Gb DDR2 and emmc 2019 Pi 4 Model B - BCM2711 quad 64bit A72 1.5GHz, VideoCore VI, AC wifi, Bluetooth 5.0, GbE, 2 micro hdmi decode up to 4K, USB-C power, 2xVLI USB 3, 2xUSB 2.0, 1/2/4 GB ram 2019 Pi 4 Model 2B - BCM2712 4 usb 2020 Raspberry Pi SC0919 Pico RP2040 2020 Silent Pi 4 upgrade with more USB-c psu support and PI400 1.8GHz inside keyboard 2020 Raspberry Pi Compute Module 4 2021 Pi zero 2 w 64bit quad 1GHz Cortex-A53 BCM2710A1 512mB SDRam 2023 Pi 5 BCM2712 Quad A76 w VideoCore VII - no audio socket - dual 4k displays from mini hdmi - fan connector - 5V 5A psu 2024 Raspberry Pi Pico 2 2024 Pi 5 2GB version uses BCM2712D0 2024 Pi-500 2024 Raspberry Pi Compute Module 5 2025 Pi-500+ 2026 April and May Aros 64bit fixed, added AHI audio, VC4 gfx started, usb functions added to rom 2026 June and July Aros 64bit usb2otg started, dma.resource, sdio.resource, bwfm.device wifi added 2026 Late July daily 64bit Pi3 builds start 2026 August .... 2027 2028 Pi 6 </pre> ===Native=== * 2013-03 Kalamatee starts work * 2013-05 Work put on hiatus * 2015-04 Work continues slowly with mschulz on the kernel and Kalamatee (NicJA) on gpio and usb * 2018 [https://www.patreon.com/posts/i-owe-you-some-20956961 mschulz resume with adding BE big endian support as well] * 2026 [https://github.com/aros-development-team/AROS/commits?author=bsek latest commits for pi 3 64bit] * 2026 [https://github.com/aros-development-team/AROS/commits?author=jonx latest commits for pi 4] [https://aros.sourceforge.io/nightly1.html RaspberryPi 3 raspi-aarch64-system native 64bit ArmV8 builds] are The status of AROS 32bit native for RasPi was OK. System booting, USB working (although with some issues but plan to fix them). Got stuck on modifying the ABI (application binary interface) and adjusting binutils/gcc to support it wanted to have real executable files but got stuck a little. This change for the type of relocations embedded in ARM files and not sure if this very type is well supported, on the other hand without this change ARM version of AROS wouldn't work well. By reverting the change to ABI we could have a (somehow) working AROS on RasPi, but unfortunately still unstable. Old native [http://www.aros.org/nightly1.html ARMv6 32bit nightlys] and ===Hosted=== [http://www.aros.org/snapshots1.html old linux and android hosted 32bit] ===Good sites to visit=== *[https://github.com/raspberrypi/firmware/tree/master/ Raspberry Pi Firmware build] *[https://github.com/raspberrypi/linux Raspberry Pi Linux Build] *[https://www.patreon.com/michal_schulz/posts Big endian on Pi] with [https://github.com/michalsc/Emu68 ARM based realtime JIT 68k] *[https://www.riscosopen.org/wiki/documentation/show/Welcome%20to%20RISC%20OS%20Pi RiscOS on Pi3 and Pi4] *[https://github.com/brianwiddas/pi-baremetal Bare Metal Access on Pi 32bit] ==Build== ===64bit=== ===32bit=== # download/checkout the source someplace, e.g. /build/AROS-Src/ # make a directory to store external sources AROS downloads, e.g. /build/Ports # make a build directory, e.g. /build/aros-raspi-armhf # cd into the build dir, configure, and then run make -: <pre> >cd /build/aros-raspi-armhf >/build/AROS-Src/configure --target=raspberrypi-armhf --with-serial-debug --enable-ccache --with-portssources=/build/Ports >make >make arosboot-raspi </pre> then copy the files from /build/aros-raspi-armhf/bin/raspi-armhf/AROS/ onto an sdcard, and download/copy the Raspi firmware files onto it. You should then be able to boot the sdcard on your RasPi. The current W.I.P tree to svn. it can be built as follows .. <pre> ./configure --target=raspi-armhf make arosboot-raspi </pre> That will generate arosraspi.img, arosraspi.rom and config.txt in bin/raspi-arm/AROS - so either copy just those files to a fat formatted SD card (with the firmware files on), or copy the whole contents of the AROS folder. NB - if you have a Linux/other install, backup the existing config.txt first arosraspi.img contains the bootstrap (which has very basic mailbox code, framebuffer/gpio init, and console "emulation" via code pinched from our libbootconsole), kernel.resource, and exec.library arosraspi.rom contains all the other components needed to boot AROS. The config.txt file will tell the RasPI bootstrap to load our arosraspi kernel and ramdisk (rom). the bootstrap has minimal mailbox code, planning on adding either a resource or library that driver/app code will use to access it (likewise for GPIO) ==== Hosted ==== Ubuntu VM approach to compiling [http://lallafa.de/blog/2013/06/building-aros-hosted-for-raspbian/ Linux hosted AROS June 04, 2013] ../AROS/configure --target=linux-armhf --enable-includes=/usr/arm-linux-gnueabihf/include --x-includes=/usr/arm-linux-gnueabihf/include --x-libraries=/usr/arm-linux-gnueabihf/lib arm-elf- is symbol-linked to arm-linux-gnueabi- (arm-linux-gnueabi- is more correct in this case, because it's going to be compiling the ARM AROSBootstrap for ARM Linux) *armel - many of the "android" machines require since the entire OS is made for soft float VFP. *armfp - Efika MX target, Raspberry PI, EfikaMX, Pandora and virtually everything (VFP) Keep in mind it's possible to start hardfp AROS hosted on softfp system, though, as long as no calls between AROS and host require floating point parameters. NOTE: hardfloat objects *cannot* be linked with softfloat objects - they have a different ABI. Just keep in mind the arm nightly build machine is quite complex beast. It needs the x86_64 host compiler to compile AROS tools. The arm version is built every night using gcc-4.6.2 crosscompiler (built together with AROS) and successfully builds armel and armhf linux hosted targets. *needs an AROS code compiler for ARM target *as well as unix compiler for ARM linux host (would be best to have both softfp and armhf, we have softfp only now) with full set of libraries and includes. with—disable-crosstools $AROS_CC is always a wrapper around $KERNEL_CC ? If so, this is wrong for some ports. This can break Darwin, Windows and Android port. Yes, Android port will build. And even work. But it's not good because the port will not be ABI-compatible with other ARM ports. Android's ABI is different from GNUEABI. For example: <pre> enum test {foo, bar}; enum test testvar; </pre> siseof(testvar) will be equal to sizeof(int) in GNUEABI (Linux and AROS) and sizeof(short) on Android. This affects linking objects from static linklibs, for example. Previously everything worked because $AROS_CC was a wrapper on top of $HOST_CC. And a real crosscompiler was used on non-ELF hosts. Android is the same. $KERNEL_CC is incompatible with AROS. compiler=kernel is appropriate _ONLY FOR CODE WHICH RUNS ON HOST OS_ (or barebone hardware, if we talk about native). This includes bootstraps, their linklibs, and host-side dynamic libraries (Windows makes extensive use of them because of architectural considerations. No single AROS object should be compiled with this setting. $KERNEL_CC is really compatible with AROS *ONLY IN LINUX-HOSTED* and no more. On other systems (Darwin, Windows, Android) this is not true any more, and compiler=kernel is never going to work. If you want to compile your AROS module against host OS includes, append the following to USER_INCLUDES (or USER_CFLAGS, this is effectively the same): -isystem $(GENINCDIR) $(KERNEL_INCLUDES) $(KERNEL_INCLUDES) expands to: -isystem <your_os_includes> -isystem <host_OS_gcc_private_includes> -nostdinc This makes AROS compiler adhering to host OS APIs. If you want some preprocessor symbols based on what your host OS actually is, add something like -DHOST_OS_$(AROS_HOST_ARCH). Why is there $(GENINCDIR) at all? Because host OS has its own libc includes, which would conflict with AROS ones. And the host OS libc is not binary-compatible with AROS one. Why doesn't Windows-hosted port use $(KERNEL_INCLUDES) ? Because WinAPI includes conflict with AROS ones in fundamental typedefs, like WORD, BYTE and BOOL. It's almost impossible to deal with this in any other way than rewriting WinAPI definitions using AROS types. Building under centos 6.3 (i386) currently, and AROS creates the toolchain itself. haven't yet committed the necessary changes but "./configure --target=raspi-armhf" is enough to start, then "make arosboot-raspi" will generate arosraspi.img (containing the bootstrap, kernel.resource, and exec.library) as well as arosraspi.rom (containing all the other essentials components such as dos, graphics etc). It will also copy over a config.txt file to make the raspi bootstrap code load the correct kernel, and a cmdline.txt that enables exec debug output. *armel = typically Debian 6, Ubuntu Maverick, Android, *armhf = typically Debian 7, Debian 8, Ubuntu Precise, Cross-compiling Ubuntu ARM softfp <pre> sudo sh echo 'foreign-architecture armel' >>/etc/dpkg/dpkg.cfg.d/multiarch echo 'deb [arch=armel] http://ports.ubuntu.com/ precise main universe' >/etc/apt/sources.list.d/armel.list apt-get update apt-get install gcc-arm-linux-gnueabi libx11-dev:armel libsdl-dev:armel </pre> <pre> ./configure --target=linux-arm --x-includes=/usr/include \ --enable-includes=/usr/arm-linux-gnueabi/include </pre> Cross-compiling Ubuntu ARM hard-float <pre> sudo sh echo 'foreign-architecture armhf' >>/etc/dpkg/dpkg.cfg.d/multiarch echo 'deb [arch=armhf] http://ports.ubuntu.com/ precise main universe' >/etc/apt/sources.list.d/armhf.list apt-get update apt-get install gcc-arm-linux-gnueabihf libx11-dev:armhf libsdl-dev:armhf </pre> <pre> ./configure --target=linux-armhf --x-includes=/usr/include \ --enable-includes=/usr/arm-linux-gnueabihf/include </pre> Now, the AROS build is configured properly and all you need to do is: make [https://github.com/aros-development-team/AROS/commit/d84b9a337f9aa059154d9af69275935125166bdd some Apple Silicon support] == Hardware == ===64bit=== ====BCM2712==== BCM2837 * Broadcom BCM43438 chip provides 2.4&nbsp;GHz 802.11n wireless LAN, Bluetooth Low Energy, and Bluetooth 4.1 Classic radio support, 3B+ [https://github.com/aros-development-team/AROS/commit/afa5bc0bb17d5dd06bcfdbac00853a3799ca8d76 LAN7515] ====BCM2711==== ===32bit=== === Core Kernel === ====BCM2708(family)==== which includes the [http://elinux.org/RPi_Hardware BCM2835] (ARM1176JZF-S 700&nbsp;MHz CPU + VideoCore IV GPU + up to 1GB RAM) *Framebuffer (fb) using mailbox *IRQ scheduler, etc *Arasan based SD Card controller *Synopsis DesignWare USB 2.0 OTG controller [http://networkdirection.net/index.php?option=com_content&view=article&id=106:rasperry-pi-usb-controller&catid=45:raspberry-pi&Itemid=54 Unofficial DOCS pdf], [dwc_otg.c FreeBSD], [], [https://www.riscosopen.org/viewer/view/mixed/RiscOS/Sources/HWSupport/USB/Controllers/DWCDriver/ RiscOS USB Driver], [https://www.riscosopen.org/forum/forums/5/topics/878 RiscOS USB Discussion], [https://www.riscosopen.org/forum/forums/11/topics/1893 Other USB RiscOS], [http://plan9.bell-labs.com/plan9/index.html Plan9 Miller's usb] http://plan9.bell-labs.com/sources/contrib/miller/, [https://github.com/Chadderz121/csud CSUD driver], *[http://www.smsc.com/media/Downloads_Public/Data_Sheets/9512.pdf SMSC 9512] USB LAN/Hub chip *CMOS RAM *VCHIQ port which sends messages to the GPU e.g. for mouse, keyboard, audio on HDMI, etc *Audio Driver *Serial Peripheral Interface Bus (SPI) *[http://www.susa.net/wordpress/2012/06/raspberry-pi-pcf8563-real-time-clock-rtc/ I2C registers] *I2S *Universal Asynchronous Receiver Transmitter (UART) *[http://elinux.org/RPi_BCM2835_GPIOs GPIOs] and [http://www.adafruit.com/blog/2012/08/17/broadcom-bcm2835-peripheral-memory-map-and-gpio-alternate-use-chart-piday-raspberrypi-raspberry_pi/ Alternative view of GPIO] BCM2836 * For Pi B+, PI 2 and Pi 3 SMSC LAN9514 chip adding 10/100 Ethernet connectivity and four USB channels to the board The overclock ability has diminished with each chip version as the energy usage has very slowly risen. BCM2837 is one of the warmest yet and might benefit from active cooling (ie fan) if all four cpu cores are in use for a short while. Video playback is not affected due to the custom support in the GPU. 5 V / 2.4 or 2.5 amp power supply recommended if all four cpu cores are running, else throttling (cpu slowdown) might occur. *[http://www.andrewscheller.co.uk/rpi_pcb_modules.html PCB], [http://elinux.org/RPi_Low-level_peripherals Low level features], Implemented so far... # Modify the configure system so that it correctly builds for the arm hardware float raspi target. # Implemented the bootstrap to load the aros modules and prepare the arm to jump into them. Reworked the x86 console support so that parts can be stolen for raspi to use since t has no basic functionality to output to the display. # Implemented a kernel.resource to prepare the raspi for running aros and provide the low level api calls to expose available resources and allow exec, etc function. # Implemented serial debug support # Implemented the exec (and kernel) functionality required to make multitasking work (and interrupts, exceptions, syscalls, etc) # Implemented a timer.device to utilise the hardware timers. # Implemented a very basic gfx driver to expose the hardware's framebuffer. # Implemented an SD-Card driver for AROS which presently only supports the raspi's chipset but can easily be modified to support all sd-card hardware and media. # Fixed the fat filesystem support in AROS so that it can boot on RasPi's normal SD-Card setup. The "rom" image files needed use a different filename than the default linux, etc images so can be easily installed without harming the existing files - you only need to change the loaded images in the config file to get aros to boot. # Updated the build scripts to automatically download the necessary raspi firmware files and wrap it all up so that you can simply extract the archive to a fat formatted sdcard and boot it on the raspi without having to get anything else. # fix everything in contrib and ports to build for raspi (needs proper testing/fixes but allows every component to actually compile at least, including owb) + numerous other fixes to get things working on arm/raspi .. Improvements... # Implement a USB chipset driver "OR" finish the existing one [https://github.com/aros-development-team/AROS/commit/c07d13c724f944674be5db54fc6a71ee72a01809 usb otg] - the current code is mostly a skeleton that should initialise the chipset and then needs relevant code to support the different transfer types. It also has the "virtual" hub code in place to represent the raspi's USB port (from poseidons p.o.v) # Implement a driver for the USB NIC (a few weeks - depends on USB above) # Write an [https://github.com/aros-development-team/AROS/commit/d55d0f74d20b769bbb8c8d386e5c1d7a9154f05a audio driver] (a few weeks - independent of USB) and [https://github.com/aros-development-team/AROS/commit/e93a4c245f27a87c9c4c1d39206694b39059998a HDMI] # fix syscall bug in the current raspi kernel code # Graphics depend on having a decent "bcmdma.resource" implemented as to use the cpu's dma engine. The sd card driver needs to use it for transfers to/from the controller - and the gfx system needs to use it for "blitting". # [https://github.com/aros-development-team/AROS/commit/4019d84e4975d4dad987a12d57fe108f5ac048e6 Improve the gfx driver], [ vc4gfx HIDD] add [http://dri.freedesktop.org/wiki/VC4/ Gallium3D support] # [https://github.com/aros-development-team/AROS/commit/b13905b3e8e45b089f520b44692c81affddd066f Improve] the [https://github.com/aros-development-team/AROS/commit/3a876755c070f5c73c4f53c7f4d35b4f923088b9 sdcard] device driver - which is also pretty basic but should work with most cards, rework it to also support pci, etc. sd card interfaces on x86 # The current code using very rudimentary access to the gpio interface - so that should be implemented as some resource for other components to access, as-well as the i2c interface exposed over the gpio interface. that should have a hidd class implemented which uses the gpio resource to communicate. Boot up On power-up, the rpi [http://www.open.com.au/mikem/bcm2835/ BCM 2835] [https://github.com/hermanhermitage/videocoreiv VideoCore4] GPU, not the ARM CPU, is in control, and the SD card slot is the only peripheral device with power. The firmware burned into the BCM2835's VideoCoreIV GPU PROM requires a DOS-style partition table; a FAT-formatted first partition; and the freely redistributable but closed sourced Broadcom files “bootcode.bin” and “start.elf” in that partition. The boot sequence carries out several pre-boot tasks *On powering of the rpi, the GPU reads and executes bootcode.bin, which then loads start.elf *The GPU loads the “start.elf” file, eventually, into the L2 cache and then executes it *configures the memory split for the CPU and GPU *reads and parses “config.txt” from the same partition on the SD card and applies the settings (like a PC’s BIOS settings) *loads the “kernel.img” file, again from the same partition *activates the CPU to begin executing the loaded kernel image The CPU/GPU memory split is hard-coded into start.elf, so Broadcom provides three start.elf images, to give 32M, 64M, or 128M to the GPU for multimedia performance, and the remainder to the CPU. RPi uses [https://github.com/raspberrypi/firmware some closed source loaders] and at some point it loads a binary blob named "kernel.img" at 0x8000, at that point there would be a rudimentary Aros alive. If one wants to use the SD-card then there would have to be a driver for the interface and a fat filesystem handler (SD-card has to be formatted to fat filesystem) Boot code and kernel are now linked together and made into that binary blob, just for starters. Raspberry Pi uses [http://kernelnomicon.org/?p=133 u-boot] and [http://kernelnomicon.org/?p=138 UBoot] as bootloader, there's already some code in the Efika MX port for that. UBoot is a native bootloader and not just for the raspberry pi, it loads after start.elf. You can find Efika MX port from arch implementations, some hacking is needed for the mmakefile.src'es as iit dates back to before the Aros crosstool era or else you get some weird errors while building. You also need to code the bootstrap and serial handling. At the moment it seems that a fastest route for the native build would be to make one binary blob without using the package system. Raspberry's memory layout is pretty simple and if the implemented u-boot doesn't support loading other modules <pre> ? - alias for 'help' mtest - simple RAM test autoscr - run script from memory base - print or set address offset bbm - BBM sub-system bdinfo - print Board Info structure boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' bootm - boot application image from memory bootp - boot image via network using BootP/TFTP protocol cmp - memory compare coninfo - print console devices and information cp - memory copy crc32 - checksum calculation echo - echo args to console fatinfo - print information about filesystem fatload - load binary file from a dos filesystem fatls - list files in a directory (default /) go - start application at address 'addr' help - print online help iminfo - print header information for application image itest - return true/false on integer compare jade - loadb - load binary file over serial line (kermit mode) loads - load S-Record file over serial line loady - load binary file over serial line (ymodem mode) loop - infinite loop on address range md - memory display mm - memory modify (auto-incrementing) mtest - simple RAM test mw - memory write (fill) nfs - boot image via network using NFS protocol nm - memory modify (constant address) pci - list and access PCI Configuration Space ping - send ICMP ECHO_REQUEST to network host printenv - print environment variables rarpboot - boot image via network using RARP/TFTP protocol reset - Perform RESET of the CPU run - run commands in an environment variable saveenv - save environment variables to persistent storage saves - save S-Record file over serial line setenv - set environment variables sleep - delay execution for some time tftpboot - boot image via network using TFTP protocol USB - USB sub-system usbboot - boot from USB device version - print monitor version </pre> Most used [http://www.compulab.co.il/workspace/mediawiki/index.php5/U-Boot_quick_reference uboot options] are fatls usb 0:1, the reason behind INTB_KERNEL is to allow use of the standard Exec function AddIntServer() to add interrupt handlers for hardware drivers etc. AmigaOS never used it for abstract hardware drivers. AmigaOS routed only raw hardware IRQs there. Their assignment was hardcoded. As well as number of them. Actually on AmigaOS every bus has its own interrupt subsystem. For example PCI bus. PCI interrupts on Amiga are routed to a single exec interrupt. 1:1 relationship between CPU and hardware interrupts is present only on PC. IMHO we miss things like AddInterrupt/RemInterrupt methods on our PCI subsystem's device class. PCI bus class should map these methods to whatever is appropriate. This is how it is done on AmigaOS and friends. When these are implemented, raw kernel.resource API will be needed only for several PC-specific drivers with hardwired resources. Exec IRQs are real IRQs only on Amiga hardware. On other machines they can be emulated where appropriate (VBlank is a good example). kernel.resource is meant to be different, its IRQs are hardware-agnostic, they are plain "Hardware IRQ number X, whatever this means". They are low-level actually, and meaningful only in the context of a particular system. Was that not the transition from irq.hidd to kernel.resource? No. A long time ago there was another hacky bit named INTB_TIMERTICK. It was "abstract timer interrupt", used by timer.device. It was the same as VBlank, but with larger frequency. I removed it, because kernel.resource API was a cleaner way to access this interrupt. Furthermore, there can be more than one timer in the system. I am even thinking about bringing back timer HIDD definitions again. hpet.resource is a bad idea. Can someone please enlighten me a little on how the scheduler is meant to work? Poseidon.library creates its "Poseidon Event Task" during RTF_COLDSTART -> then calls Wait(), and ends up in limbo because wait disables interrupts (used for the scheduler heartbeat), and basically waits forever because the sigbit is never set, since krnSwitch doesn't switch the task unless TF_SWITCH is set, and no codepath run during this seems to set it?? TF_SWITCH does not disable/enable switching. This flag just enables to run user-supplied hook when the task is being switched away. It is completely safe to call Wait() in Disable()d state. Doing this actually temporarily breaks this state. IDNestCnt gets remembered in struct Task, then next task is selected, and its IDNestCnt is restored in sysbase (see kernel_scheduler.c). If there are no other tasks, then your cpu_Dispatch() should enable interrupts on the CPU and enter idle mode. See x86 implementation for good example. You miss what happens next... 1. KrnSwitch() saves context of your task, saves IDNestCnt (core_Switch() and cpu_Switch()), then drops into cpu_Dispatch(). 2. cpu_Dispatch() calls core_Dispatch. Then two cases are possible: 2a. There is a READY task. It is picked up, its IDNestCnt is restored in SysBase, then cpu_Dispatch() needs to restore registers and exit. The next task is run. 2b. There are no READY tasks. core_Dispatch() returns NULL. In this case your cpu_Dispatch() should enter idle loop. It should just enable interrupts on the CPU and put it on halt. This allows it to process hardware interrupts. Eventually some of your interrupt handlers wakes up your task and puts it into READY list. My heartbeat interrupt has been slowed atm to help debugging - but it never actually gets a chance to fire because of the Wait() disabling interrupts. Perhaps you have forgotten to enable interrupts in your idle loop. There is a change in the format of AROS executables. Until now we were using Elf RELocable files which are usually used as intermediate object files. We had them for various reasons, one of them was how AROS files were built in the past. That days we had no real aros cross compiler and the option to embed relocation data in unix executables (or in executable files in general) was rather new and not every linux/unix system had it. Therefore we have decided to use intermediate files. Although it was somehow working (and it is still working :-)), it has some drawbacks. Therefore decided to introduce real Elf EXEC types, in first turn implemented on ARM target with option to expand in future to all other AROS architectures. The first patch was pretty easy and appeared to work somehow. It generated nice executables with embedded relocation info. Not only that, it also removed all global symbols adjusting relocation data to be relative to the beginning of the sections. That move reduced number of symbols in each executable significantly (depending on the file between 20 and 80% of all symbols could be removed). The only symbols that stayed in the file are local ones - due to the nature of the patch wasn't able to remove them since we have not seen them in the symbol hash table. The patch didn't worked though. The files were relocated, AROS kernel loaded, but it crashed very early. What happened? Well, the nature of ARM relocations happened :) Most of the relocation data on all machines is rather simple. Relocation can be absolute or pc-relative, sometimes the offset has to be bit shifted. On ARM v7 there is another one. There, when one wants to load an address of function/variable into register a combination of two instructions can be used: movw and movt. The first one loads immediate into lower 16 bits of a register while clearing upper 16 bits. The second one loads immediate into upper 16 bits without touching lower halfword. Loading of a pointer into a register looks like this: movw r0, #:lower16:label movt r0, #:upper16:label In this case there are two relocations - one for lower halfword and another for upper. If an overflow of lower 16 bits occurs during relocation process, the upper one should be updated as well. Unfortunately with current patch and with typical ARM executables there is not enough information to perform the calculations. There are two options - the first one would be to give up and go back to "fake" executables, another one would be to change from REL to RELA relocation info. The latter contains an addend, extra data which can be used to perform all the relocation calculations I need. Decided for the second option. The patch is already in the works. There is another function for the binutils' bfd backend to perform the final relocation. There can decide what to do with every reloc info, modify data and eventually strip some symbols. An advantage is - at this stage of the linking process have also full access to all local symbols so can change all relocations section relative and eventually strip all symbols from the files. === GPU === Most of start.elf runs on the GPU. Placing ALL the userland GPU code in the videocore.hidd isn't going to be a terribly big problem because the code they published is nothing more than a shim that sends data straight to the GPU to execute. The good news about this is that we only need to write our HIDD using the OpenVG API. The shim is relatively small codewise and lives in the ARM memory (the actual OpenVG code itself lives in the GPU RAM area and its loaded from start.elf). That's also the bad news. Our driver has to translate AROS video calls to OpenVG calls, for most tasks it should be easy, for some, not so much. It's still probably less difficult and less work, than controlling the GPU directly. The other good news is that anything done through OpenVG happens on the GPU, its truly accelerated. It also has some nice font functions, meaning we can lead into an accelerated text mode later. Basically, AROS resets or locks up when it tries to use AROS_ATOMIC_INC or DEC. If I comment out the byte/word operations in the header files and use non-atomic operations, the code works as expected. have read that the L1 cache needs to be enabled to use LDREX and co (which I also read is only meant to be used on multi processor systems with shared memory) - however I am certain this is correctly enabled. If you are using LREX or STREX, you should have L1 cache enabled, at least on the ARM CPU I work with at work. L1 cache is enabled by enabling the MMU *AND* setting the C and I bits in the CPU - the C bit is ignored, and the I bit only covers the 16 byte instruction pipeline if the MMU is not enabled. Can you verify that your assembly is generating LDREX/STREX? From the behavior, it almost sounds like its generating the default Semaphore locked atomics. Impossible. There are no semaphore-locked atomics. There are Disable()/Enable()-based ones instead. And there's a special #define AROS_NO_ATOMIC_OPERATIONS in this case, which tweaks Disable()/Enable() implementations not to recurse forever. I have tested this on ARMv5 which does not have ldrex/strex, it works fine. On those ARMs there's no way to have real atomics. On other OSes (like Linux) this is done by introducing things like atomic_t, which appears to be a complex structure, holding the value together with accompanying spinlock (implemented using swp). #warning "TODO: lookup optimal mmu table settings for raspi memory" /* Set up an identity-mapping for all 4GB */ for(x = 0; x < 4096; x ++) { pagetable[x] = x<<20 | (0x40002|0x80000|0x010000|0x00C00|0x04); } Shouldn't there be a second loop that sets the 'C' bit in the descriptor for the RAM pages? Currently, you have TEX=0, C=0, B=1 for all pages (Shared Device). You should have TEX=0, C=1, B=0 for RAM (Write-Through, Cached) So .. pagetable[x] = x<<20 | 2; should be enough? No, for RAM you need to change the '| 0x40' to '| 0x80' tell dosboot the correct defaults to use Please don't do this. This bootconfig.c is a deprecated legacy thing. I wanted it to go away completely with time. Instead, display drivers should auto-install themselves during own initialization phase. I. e. detect hardware=>instantiate itself. This should make things way simpler. With this approach you only need to add the driver into KS image to get the device autobooted. No hardcoded stuff. Currently VESA and VGA drivers do this, look there for examples. never rewrote ATI driver because i don't have any test system for it. they defined a smaller AROSCPUContext than the ExceptionContext - yet reference it as ExceptionContext in other places, and since it hasn't allocated enough storage for ExceptionContext, are corrupting memory/the structure (since the elements that are there don't map 1 to 1 with the exception context). AFAIK, AROS has been moving in a different direction to this in recent years. It is the job of graphics HIDDs to allocate bitmaps etc. so that they have the most suitable characteristics, including allocating them from GPU RAM where possible. The concept of chip RAM is only for legacy code, and most if not all non-68k platforms should have all system RAM marked as chip. BTW, is the video processing code you mention CPU code or GPU code? Also, IIRC we have support for "external memory allocators". Perhaps that's what we need for the allocation of GPU RAM through the mailbox. All hosted and x86 native ports should use proper context formats. trying to clarify if the vblank handler has to have run by this point to prevent this deadlock. Actually, no. Unless you have installed VBlank handler which should wake up at some point. Without VBlank there will be no quantum count. Consequently, there will be no forced preemption. But the rest will work, and multitasking will be cooperative (switch happens only when current task voluntarily gives up the CPU). Does it depend on the vblank having run before this point? and if yes what does that mean on systems where it might be able to run enough code (e.g. get to this point) before the vblank interrupt has triggered? What is it waiting for? It could wait for timer, in this case you need timer.device working. VBlank is currently needed for exec's quantum counter. In current native ports we have only a single timer, which is served by timer.device. VBlank is simulated by timer.device also. If your machine has two timers, then you can use one of them for VBlank, and another for timer.device, this will simplify things down. VBlank needs to be 50 Hz for historical reasons, many programs use it as cheap timer. I am periodically thinking about making some abstract mechanism to be able to change quantum source (and untie it from 50 Hz), but have no time to come up with something good. Additionally i started disliking timer.device hardcoded design when PC has got many timers (old 8253, APIC, HPET). Currently i think there should be some low-level entity representing tick source. timer.device should just select the most appropriate source for its units. The BCM2835 has 4 GPU based timer sources - 2 are used by the GPU, so im using Timer3 for our heartbeat and the remaining one will be free to the system. There is also the less capable ARM timer but that is dependent on the CPU frequency. Very good. You won't need any emulation. Set the heartbeat to 50 Hz and drive VBlank from it. Use other timer for MicroHZ. Can you use the 'econsole.hook' I make for debugging the Sam460 via the serial port? It provides a before-anything-else shell prompt on the serial port. You can then do 'NewCLI' to test your graphics, or use any DOS command in shellcommands.resource. You should just be able to add econsole.hook to your module list, and use 'econsole' in your bootargs. So long as you have a working Exec/RawMayGetChar and Exec/RawPutChar, it should work. Also make sure to add shell.resource and shellcommands.resource for this. That should have done it. If you set "#define DEBUG 1" in arch/all-native/econsole/econsole.c, do you get any additional serial output? have added it to the build and added econsole to the command line - and can see the bootloader picks up on the emergency bootconsole tag, but I still only get the insert bootable media display? Im assuming it exposes a fake filesystem that tricks aros into booting? The contents of which are: ECON:AROS.boot Way to handle the scheduling code? The implementations I had been following were causing problems, due to cascading interrupts which I cant handle properly in the asm stubs just now (when they break disable etc.) - since it means detecting the interrupted codes cpu mode and getting the correct sp/lr for it, and that's just too tedious for arm. To work around this ive added a system idle task which does nothing - and when the scheduling code has no task to run switches this in and lets it run, thereby allowing the interrupts etc to resume until something does need to happen. Also, by adding accounting code to cpu_Switch() and cpu_Dispatch(), it should allow the system to log idle time correctly (as well as running tasks). have thought of also adding an additional task that never runs, solely to record time spent in IRQ handlers, but I digress.. was under the impression that kernel.resource should *never* be used outside of exec.library. This is a wrong impression. Michal started designing it because portable nature of AROS does not fit well into exec's API with all its assumptions. So, he started the new, hardware-agnostic kernel API from scratch. Yes, exec sits on top of it in places. But kernel always meant to be open thing. Otherwise it would not exist. it wasn't meant to be just used willy nilly by user code - but by lower system components (e.g. exec) so that they could be implemented in a more generic fashion, and the kernel resource itself hide the systems quirks. Adding new things there perfectly keeps up with our decision to minimize AROS-specific intervention into APIs which can clash with MorphOS/OS4 extensions. We want at least source-level compatibility there. Binary compatibility on PPC would be extremely cool, but at the other hand we have no maintainer for this, as well as their ABIs are a bit weird and far from optimal, especially MorphOS one, because it aims for m68k binary compatibility. It depends on what exactly is being implemented - there's no reason we should have everything crammed into kernel.resource if it doesn't need to be (i.e. if its better suited as a separate component/subsystem in its own right) The _LE versions are for when you have endian swapping taking place. If the graphics are the same endian as the CPU, no swapping should occur. I ran into a similar terminology problem in SDL with a friend insisting that his Radeon 7000 on his PC was big-endian. It is not, it just uses the same endianness for the graphics card and the CPU so no swapping was necessary. They were both little-endian. The _LE versions are because the PixFmts refer to the bitmap data being in big endian format in memory, for which the normal version would need to do endianness conversion before applying the shifts/masks. on this platform it is in _LE in memory also so we don't need the conversion hence using the _LE version of the call). would use _LE (if it's really little endian 16 bit mode). What is the bare minimum needed to implement a framebuffer based gfx driver, with our software handling the rest? I have tried with just a gfx class that only expose new/dispose/newbitmap - and having an onscreenbitmap used only for the framebuffer itself (with all other bitmaps being chunkybm, and the framebuffer's superclass also being chunkybm), but that alone isn't enough it seems? You can use workbench/hidds/sm502/ as your example - it is as simple as I could make it. So, AROS creates the framebuffer bitmap (I have verified this) -> so surely it should be capable of then rendeing into it? I don't actually create the framebuffer "bitmap object" myself - only as a result of being asked to. I so far have -: vc_init: queries the gpus memory, and sets up a fake memory handler for it, then adds the bootmode driver and returns saying all is well vc_gfxhidd:New: sets up some fake syncmodes to test with and creates the real gfx object. vc_gfxhidd:NewBitmap: checks if its a framebuffer and uses the onbitmap class or uses the chunkybm class otherwise vc_onbitmap:New; creates a chunkybm object and then pushes the real framebuffer address into it as the buffer, So, AROS creates the framebuffer bitmap (I have verified this) -> so surely it should be capable of then rendeing into it? I don't actually create the framebuffer "bitmap object" myself - only as a result of being asked to. The code I currently have on SVN seems to create the framebuffers bitmap object fine, but then crashes in intuitions DisplayDriver callback. In particular it crashes performing the getattr on the system default pointer. don't expose MEMF_CHIP in an allocatable form so AllocSpriteData was failing (and other code later doesn't check if the values are valid == illegal memory accesses) Actually MEMF_CHIP has to present, for historical reasons. This has been never fully agreed upon, but in ports i wrote i exposed the whole memory as MEMF_CHIP. The idea behind this is that CHIP is originally the memory where graphics and sound data can be put. On non-Amiga platforms there are no restrictions on this, so the whole memory is CHIP. Yes, many old software can misbehave with CHIP memory size larger than 2MB. But this actually applies only to m68k AROS which is going to run m68k binaries. In other cases it's quite logical to fix the program when porting. As to original question: yes, it's enough to have a framebuffer bitmap (one with aoHidd_BitMap_FrameBuffer set to TRUE) and PutPixel routine. It framebuffer can be served by chunky bitmap class, then you can simply create chunky bitmap with your own buffer (see how VESA driver does this). Chunky PutPixel is already there. struggling to determine what is the correct pixfmt to use for the 24/16/15 bit gfx modes on the RasPi. AFAIK it uses RGB565, for 16bit but im unsure what shifts etc should go with it? suffice to say Im getting the wrong colors so far lol. <pre> redmask: 0x0000F800 greenmask: 0x000007E0 bluemask: 0x0000001F alphamask: 0 redshift: 16 greenshift: 21 blueshift: 27 alphashift: 0 </pre> It should likely be vHidd_StdPixFmt_RGB16_LE This stuff is a bit confusing. The "names" of the stdpixfmts are based on the layout in memory, ignoring endianess. So for example: ARGB32: will be 0xAA 0xRR 0xGG 0xBB in memory on both big endian and little endian machines. The shifts and masks OTOH are based on pixel access (ULONG in this case), so differ depending on whether you run on big endian machine or little endian machine (that's why there's stdpixfmt_le.h and stdpixfmt_be.h in rom/hidds/graphics/). With the 16 bit pixel format it's even more confusing, as for example it's impossible on little endian machine to describe RGB16 with shifts/masks alone. That's why there's vHidd_PixFmt_SwapPixelBytes_Flag. (RGB16 == RRRRRGGG GGGBBBBB in memory, and for pixel (WORD) access on little endian machine it needs to be accessed as GGGBBBBBRRRRRGGGG). The shifts btw indicate how much to shift the component to the left (!) so that it is moved to the highest bit (31). The aHidd_PixFmt_StdPixFmt you specify will be ignored most of the time, because when the pixelfmt is registered, the gfx hidd checks if there's an identical pixfmt (shifts/masks/etc., but ignoring pixfmt->stdpixfmt) already in the system, and if so, it uses the already existing one and does not create a new one. In theory it would be better if gfx drivers could simply/only specify a StdPixFmt without all the shifts/masks stuff when the gfx driver uses pixfmt which matches one of the stdpixfmts exactly. Another possibility would be for gfx drivers to use HIDD_Gfx_GetPIxFmt(stdpixfmt_gfx_driver_wants_to_use) and then peek shifts/masks from it and fill out a pixfmt tag list based on that. 15bit very blue/green: Try to pass same shifts/masks/etc. as in 16 bit pixfmt (maybe you think it's using 15 bit R5G5B5 (or swapped) but it's actually still using 16 bit R5G6B5 (or swapped). aHidd_PixFmt_StdPixFmt you pass is mostly ignored. It's the shift/masks/etc. that count. But I would still pass the correct one (_LE) == whatever rom/hidds/graphics/stdpixfmts_??.h uses in the entry where you have looked up shifts/masks/etc. Use the shifts/masks/etc. from the entry in stdpixfmt_le.h (if you are running on little endian machine) or stdpixfmt_be.h (if you are running on little endian machine) that matches the pixfmt that its meant to be. 0xAA,0xRR,0xGG,0xBB on little endian (->entry in stdpixfmt_le.h which says vHidd_StdPixFmt_ARGB32) 0xBB,0xGG,0xRR,0xAA on little endian (->entry in stdpixfmt_le.h which says vHidd_StdPixFmt_BGRA32) 0xAA,0xRR,0xGG,0xBB on big endian (->entry in stdpixfmt_be.h which says vHidd_StdPixFmt_ARGB32) 0xBB,0xGG,0xRR,0xAA on big endian (->entry in stdpixfmt_be.h which says vHidd_StdPixFmt_BGRA32) it feels like AROS trashes the alpha component, otherwise it should be 8A8R8G8B. read on the subject suggest its in 1x5r5g5b (x is ignored) to keep 16bit alignment . What I see on screen suggests to me that wrong shift/mask are being applied - however going by the 16bit versions it all looks correct to me so I am really confused as to what is happening. The output image looks to have too much green/blue, and very weak red. Why did usbromstartup become HW-specific ? In the past i have done a big job separating kickstart into several parts. I have never got any responses, so i re-describe my idea. For now it loads the hs otg chipset driver .. The idea is to minimize amount of archirecture-specific modules to make user's life easier. So, the kickstart was split into 'base' (which does not contain anything machine-specific) and 'BSP' (Board Support Package) which contains all hardware-specific stuff. This way, for example, distribution makers can save up space on CD and make CDs with multiple platform support. Different configuration would load the same base with different BSP's. Next there was some part which is entirely missing on hosted. These are filesystems. Hosted ports do not need them to boot up, so on hosted they are left out. At the other hand, they are also architecture-agnostic. So i put them into 'FS' package (standing for 'filesystem'). Poseidon is one more big part. I made it into separate package in order to allow users to omit it if they don't need it (for example, to run on retro PCs without USB). Personally i have one. Again, Poseidon is hardware-agnostic (well, there are USB drivers but HCIs are pretty standard). It's mandatory on PI since there are no other interface types - so being a separate package is irrelevant/pointless. Is Raspberry's USB controller non-HCI compliant? Actually i expect it to be compliant, then wouldn't it be better to make existing drivers discovering them? AFAIK its HCI 1.0 compliant but I'm not familiar enough with poseidons drivers, nor USB, to just hack away at the existing code. Perhaps once i'm more familiar with the workings I can merge in the changes needed to get it operating but for now I will focus on getting it running. Also our drivers have known issues so perhaps a fresh set of eyes might shed some light on what is going wrong. Another interesting question is whether Poseidon can operate on device side. Is it flexible enough? How similar is being a USB host and USB device? think it will need a bit of work on Poseidon's side. Until then I will force the driver into Host/Master mode in the init code, but leave open device etc to configure the chipset for either's use - and look at trying to add support for working in Device/Slave mode & switching modes once it's up and running. Actually USBROMStartup is some kind of kludge. Can there be any alternative? Could device drivers be self-installing, like our HIDDs? This would get rid of need to list them in USBRomStartup. And there is one more thing about modular ports. In order to actually implement this, your bootstrapping environment should provide the ability to load several files. On PC this is provided by GRUB2. on CHRP you can read filesystem via OpenFirmware, and Sam's Parthenope relies on modified u-boot. If your bootstrap allows to load only a single file, then you stuck with monolithic kickstart. By the way... u-boot allows not only to boot up a single uImage or zImage, it also allows to write client programs AFAIK. With this approach, you actually can write modular bootstrap for ARM AROS using unmodified u-boot. [http://repo.or.cz/w/AROS.git/commit/e7bdc7e7b7f12b07aa24c739abb63721a872a53a arasan eMMC sdcard controller specific header which is not USB] and [http://repo.or.cz/w/AROS.git/commit/8bd19674084526a534ac11f7d4c51932e9ffe3d2 added prelim sdcard device]. [http://repo.or.cz/w/AROS.git/commit/9ab8217f61911fb8b7fd41bee46a992b4668ced1 do not set 4bit data mode, or enable acmd12/dma int's] Framebuffer - basic display RasPi has to speak to the "operating system" which runs on the GPU itself and request/free memory - it cant directly manage it itself, and so the managed functions were used to wrap these calls. The Arm and GPU share memory space. The framebuffer is shared. The Arm can write a pixel and it will appear on the screen (through GPU hardware) without flushing/copying being required. The GPU can composite multiple FB's in real time - so you have a number of surfaces defined which are rotated etc and composited in real time to the output. Copying can map from the address space of the Arm to the flat space of the GPU which takes some code, but I don't think whole buffers are copied. The DMA hardware can also access the whole memory space and can perform 2D fills and blits (no blending). This is documented in the peripheral spec posted. The DMA is just an Arm accessible peripheral and can be set up with low latency (e.g. microseconds). must use a 0xc0000000-based bus address to access SDRAM, yet non-DMA access should go via a 0x0-based bus address. For 2D dma, set TDMODE, and the spec says "interpret the TXFR_LEN register as YLENGTH number of transfers each of XLENGTH, and add the strides to the address after each transfer." so set STRIDE to pitch of the image, the width is XLENGTH and height is YLENGTH. You would fill by not setting the SRC_INC and point source to your fill data. The DMA cannot see the ARM's L1 cache, so you would map the framebuffer with ioremap_nocache. Depending on where the source data comes from, it may need an L1 cache flush. The DMA can see the L2 cache. Use 0xC0000000 bus addresses when L2 is disabled and 0x40000000 bus addresses when L2 is enabled. (actually just call virt_to_bus and you'll get the right address out). openGLES/openVG has high latency. Writing to framebuffer then reading it back is very inefficient (e.g. milliseconds). If you can drive it a unidirectional way, just streaming commands at then that is efficient. openVG is not implemented on top of openGLES - it uses the same hardware but as a first class interface To improve the Gfx driver, we will need a DMA resource implemented so can use to perform DMA operations. The Gfx driver will need this to perform blits. USB * Model A and B limited to 150 mA per port. * Model B+ and Pi 2 introduced configurable 600 mA to 1.2 A support over all ports - anything above that requires a powered USB hub. Implementing the hardware driver that Poseidon uses to interact with the USB components. Have code in place to (try) and initialise the USB chipset, and configure host/device mode operation (though AFAICT Poseidon doesn't support device mode). Started to get the "virtual" root hub written for the single USB port so that Poseidon should at least list it correctly in the GUI - and try to interact with it to find peripherals. The BCM2835 uses a soft IP block from Synopsys’ DesignWare library (DWC), specifically the block is called dwc_usb_2_0_hs_otg_subsystem-ahb_se (“USB 2.0 Hi-Speed OTG Controller Subsystem w/AHB Interface SE”). There is no public documentation for this, and pretty much zero chance of anyone getting hold of it even with NDA. However, there's a Linux driver written by Synopsys ([https://github.com/raspberrypi/linux dwc_usb]). Specifically directories [https://github.com/raspberrypi/linux/tree/rpi-patches/drivers/usb/host dwc_common_port] and [https://github.com/raspberrypi/linux/tree/rpi-patches/drivers/usb/host dwc_otg]. The Synopsys code is actually under a fairly permissive licence – it's not GPL, it's similar to BSD (’don't sue us if it breaks’ is pretty much the only clause). So this should not be a barrier to porting the code. The code is really well written, with a nice partition between the work done by the driver (dwc_otg, which is fairly involved, given the host does more work than a conventional EHCI driver), and the interface to Linux (dwc_common_port). Probably only need provision of relevant changes to dwc_common_port. Other things to consider.... * Provision of necessary headers to get it to compile * Provision of necessary functions (main issues are wait queues, threads, work queues, tasklets, timers, spinlocks and mutexes (multithreading) ) * Interfacing between USB stack and the driver. dwc_otg/dwc_otg_hcd_linux.c looks like the place to start. the Linux bits of the headers are only required for the dwc_common_port library. dwc_common_port includes a variety of crypto functions which are not used – it appears to also be used for ultrawideband (UWB) and wireless USB (WUSB) drivers where crypto will be an issue, but it isn't going to be for plain wired USB. Every USB driver acts as an USB hub as well in order to let Poseidon control the state of USB ports. The code there was reading status of the only USB port in Raspberry's CPU but when changing the status it erroneously deleted some of the status bits, including the port enable one. It was so because those bits in the status register are of a type Read/WriteToClear. It means, if one does not want to change their value from 1 back to 0, one has to actually write the 0 value. Very practical thing e.g. in interrupt handlers, where one reads the interrupt status register to learn what was the interrupt reason, and writes it back to the same register in order to clear the interrupts. After fixing that code it turned out that the communication was still unsuccessful. Apparently the USB device was not understanding the host for some reason. That should not happen since the request sent was one of the standard ones implemented by virtually anything with an USB connector, assumed that Poseidon clears the data caches before forwarding the work to the USB drivers but that's the responsibility of the driver itself. The USB device responded and acknowledged the transmission! But why were all the request sent after address change failing with timeout? They should not. Once again, address set is supported just by anything. Tried to contact the device at address 0 once again and there it was, still responding properly. The enlightenment came. The bus address for DMA transmissions was, as it is in many bare metal USB implementations, just the pure memory address of the buffer as seen by the ARM cpu. Have "prefixed" it with the real location of uncached RAM and booted AROS once again. Trident saw this: Product : Hub: Vdr=0424/PID=9514 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 9 SubClass : 0 DevProto : 2 VendorID : 1060 ProductID : 38164 DevVers : 0200 and this: Product : Vendor: Vdr=0424/PID=EC00 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 255 SubClass : 0 DevProto : 1 VendorID : 1060 ProductID : 60416 DevVers : 0200 and even this: Product : Hub: Vdr=0424/PID=9514 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 9 SubClass : 0 DevProto : 2 VendorID : 1060 ProductID : 38164 DevVers : 0200 What are these things? The first one is USB hub built in the Raspberry. Thanks to this one the Pi machines (with exception of Pi0 and computing modules) have more than just one single USB port. The second one is the network chip in raspberry, the third one is my USB SD card reader which have just connected to see what happens. AROS tried, of course, to boot from it ;) So, the first step towards working USB is done. The control transfers are working as you can see above. Next step is to implement bulk and interrupt transfers, having the basics in place. Finally some error handling will be added and USB for Pi will be as complete as the PC version. [http://www.raspyfi.com/raspberry-pi-usb-audio-fix/ Issue with USB Audio] Audio [https://github.com/raspberrypi/linux/tree/rpi-patches/sound/arm audio] and its [https://github.com/raspberrypi/firmware/issues/2 very high speed message passing interface type of thing VCHI] The Model B+ added an additional voltage regulator for the audio output and an additional output driver to drive low-resistance loads like headphones. However it is still using pulse-width modulation (PWM), which has a major impact on sound quality the old Raspberry Pi used a linear voltage regulator to provide the 3.3V to many of the components on the board while the new one uses a switching regulator. Both can perform reasonably well. However switch mode power supplies often show higher noise figures Analogue audio Audio over HDMI rev 1.3 & 1.4 Ethernet 10/100 BaseT Ethernet RJ45 socket GPIO GPIO shouldn't be too bad but bear in mind it is already accessed in places so they would need to allocate pins etc through it (e.g. sdcard to flicker the activity light, serial debug to output data on the GPIO pins) Probably a resource rather than a device... Started an i2c driver that will need to allocate GPIO pins. Feel free to work on it if you are interested ;p GPU graphics with 2D and 3D acceleration Sadly none yet for 32bit but for 64bit... == References == ===Hosted=== ==== Linux ==== Change lxde to another sudo leafpad /etc/x11/xinit/xinitrc xorg.conf <pre> Section "Screen" Identifier "Default Screen" DefaultDepth 16 SubSection "Display" # Viewport 0 0 Depth 16 Modes "800x600" EndSubsection EndSection Section "Device" Option "Backingstore" Identifier "Card0" EndSection </pre> Will raspberrypi ARM programs run on other ARM archs and vice-versa ? If not I would like to use different cpu names for archs which are incompatible. All code compiled for at most armv6 with softfp float abi will work on all softfp ARM targets, including raspberry. Code compiled for hard-float ABI will not work on any softfp target. But then, hard-float abi uses -armhf- cpu name. keyboard or mouse not functioning or partly working lsmod kernel and modules (stored in /lib/modules/ get from https://github.com/raspberrypi/firmware and click on ZIP button) have to be updated simultaneously sudo Apt-Get Update sudo Apt-Get Install <program > <program > cksfv joystick p7zip-full stopwatch mtpaint searchmonkey zip geany renameutils fbreader unrar-free mhwaveedit xpad milkytracker grafx par2 libreoffice epiphany-browser xbmc ace-of-penguins gweled black-box petris xmahjongg thrust fceu freesci frotz xgammon tuxpuck littlewizard xsoldier micropolis xbubble eboard&xboard (freezes) bomberclone OMXPlayer not responding or working with keyboard or no sound audio through HDMI LXterminal—command "OMXPlayer -o hdmi %f " hdmi issues Setting the hdmi_force_hotplug=1 makes sure the Pi believes the monitor/TV is really there. You might also need to set config_hdmi_boost=4 or even higher (up to 9) if your display needs a stronger signal. If the display is a computer monitor or newer tv, use hdmi_group=1 (auto HDMI use) and if it is an older TV, try hdmi_group=2 (for DMT formats, i.e. for PC monitors) then you HAVE to "set hdmi_drive = 2 to enable HDMI output as this forces HDMI mode rather than DVI mode Do not set hdmi_safe=1 as that overrides many of the previous options. Using a shorter or better quality HDMI cable might help. Make sure your Pi's power supply delivers 1 A and not 500 mA. If you see a problem with the red colour - either absent, or interference - then try a boost composite video changing the RCA cable, then the composite port worked out of the box Boot it as you are doing, without HDMI. If you now plug in the HDMI, do you get the image? In other words, does the Pi think HDMI is connected even when it isn't? Rename all the files in the first partion of the card except bootcode.bin, start.elf and fixup.dat What's the result? Put back config.txt What's the result? for PAL mode sdtv_mode=2 dmi_ignore_hotplug Pretends HDMI hotplug signal is not asserted so it appears a HDMI display is not attached hdmi_ignore_hotplug=1 Use composite mode even if HDMI monitor is detected <pre> # NOOBS Auto-generated Settings: #hdmi_force_hotplug=1 #config_hdmi_boost=4 #overscan_left=24 #overscan_right=24 #overscan_top=16 #overscan_bottom=16 #disable_overscan=0 start_x=1 gpu_mem=128 </pre> tvservice -c "PAL 4:3" <pre> /opt/vc/bin/tvservice -s or tvservice -s state: HPD high|HDMI mode|HDCP off|composite off (0x12001a), 1920x1080 @ 60 Hz, progressive /opt/vc/bin/tvservice -m CEA Group CEA has 1 modes: (native) mode 16: 1920x1080 @ 60 Hz, progressive /opt/vc/bin/tvservice -m DMT Group DMT has 0 modes: </pre> sudo amixer cset numid=3 1 forces the audio to the headphone jack, even with the HDMI video output plugged in config.txt the hdmi_ignore_edid_audio=1 option sems relevant as it should tell ALSA that the only available audio is analog, no matter what the display says There are several different ways that these 4 pole (ring) composite analog cables can be wired up, so some work great in some applications and can be a waste of time in others. What is needed for the Raspberry Pi B+ and above, which like many camcorders needs the ring contact next to the base contact to be the ground. The wiring for the 4 pole are: TIP (LEFT AUDIO CHANNEL) RING 1 (RIGHT AUDIO CHANNEL) RING 2 (GROUND/EARTH) RING 3 BASE/SLEEVE (VIDEO) YELLOW Most Apple based Players and the Microsoft Zune (TM) are wired this way. Most analogue camcorders are wired this way as well, where the ground in on Ring 2 will work with the Pi although you may need to swap your Video plug with the Right Audio plug. Nearly all other MP3 players are not wired this way, the ground is on another ring ie the wrong one. External devices * Camera Module Omnivision ov5647 Sunny 5MP (NoIR version) V1.3 - NoIR at 850&nbsp;nm, peak at 880&nbsp;nm and trails off at 940&nbsp;nm wavelengths * Camera V2 Sony IMX219 V2.1 8mpixel 8MP 8megapixel - 3280 x 2464 pixels - video at 1080p30, 720p60 and 640x480p90 - wider field of view, 62 vs 54 degrees horizontally - * Branded WIFI usb BCM43143 dongle N.B. dreaded error after changing cameras (stupidly without turning off the power first) and lasted through several power cycles. It can be a bad 15-pin FFC ribbon cable, when swapped, camera(s) and the Pi itself are working OK. It can be an instance of a cold solder joint on the CSI connector on the pi board. the camera can be detected (that's done via I2C) but may still not be able to receive image data (done via CSI-2) if something is broken. CSI-2 is uni-directional. Control is generally done via I2C. The CSI-2 receiver always writes to memory, not direct to the ISP. That's the way the Broadcom architecture works as it allows multipass processing easily. GPU memory is accessible from the ARM. Processing using the QPU graphics processors may be possible. currently the only supported sensor is OV5647 and IMX219. The linux drivers are all in the firmware blob, else you'd be looking at at least a man-month of work in a fully fledged imaging lab to do a decent tuning of the camera modules' ISP parameters. Static electricity maybe an issue for the camera module and slightly less for the pi board. * Hosted under ARM Linux which needs to be already installed [http://www.aros.org/nightly1.php current ABIv1] Help building AROS hosted on Linux ARM I was looking a way to use more my Handheld ARM based called Pyra (Dragonbox Pyra) an ARM (Omap5 cpu with 4GB ram) linux based machine (Debian Buster v10 with kernel 5.6.19 adapted) and have a try to compile the latest Aros sources by Deadwood directly on this device. Compilation stops after build libpopupmenu.a and trying to build libatomic have this error: <pre> Configuring build in bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic configure: WARNING: unrecognized options: --disable-nls, --without-x checking for --enable-version-specific-runtime-libs... no checking for --enable-generated-files-in-srcdir... no checking build system type... arm-unknown-linux-gnu checking host system type... arm-unknown-aros checking target system type... arm-unknown-aros checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for arm-aros-strip... /media/farox/pyra2/arosbuilds/toolchain-core-armhf/arm-aros-strip checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking for arm-aros-gcc... /media/farox/pyra2/arosbuilds/toolchain-core-armhf/arm-aros-gcc checking whether the C compiler works... no configure: error: in /media/farox/pyra2/arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic': configure: error: C compiler cannot create executables See config.log' for more details make[2]: *** [mmakefile:4489: /media/farox/pyra2/arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic/.configured] Error 77 [MMAKE] make --no-print-directory TOP=/media/farox/pyra2/arosbuilds/toolchain-core-armhf-build SRCDIR=/media/farox/pyra2/arosbuilds/AROS CURDIR=tools/crosstools/gnu TARGET=tools-crosstools-gcc-libatomic-configure -s --file=mmakefile tools-crosstools-gcc-libatomic-configure failed: 512 [MMAKE] Error: Error while running make in tools/crosstools/gnu: No such file or directory make[1]: *** [Makefile:361: linklibs-libatomic] Error 10 make: *** [Makefile:183: crosstools] Error 2 </pre> looking at config.log on arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic i found that arosbuilds/toolchain-core-armhf/arm-aros-ld: cannot find -laeabi so i do make linklibs-aeabi-arm-quick and the missing lib was built. now the next stop is at fatal error: bits/libc-header-start.h: No such file or directory and fatal error: sys/cdefs.h: No such file or directory in many places so after checking that i have this missing include files i have noted that my include path is a bit different, standard searching path is /usr/arm-linux-gnueabihf but in my system is /usr/include/arm-linux-gnueabihf so if i add my path to some mmakefiles compilation goes on....but is a better way to add this path to avoid every mmakefiles to be changed? i fixed with adding -I/usr/include/arm-linux-gnueabihf to where is missing on mmakefiles like USER_INCLUDES := -isystem $(GENINCDIR) -I/usr/include/arm-linux-gnueabihf $(KERNEL_INCLUDES) P.s. I have changed many mmakefiles and have at least compiled (after many hours) the toolchain doing make every time in arosbuilds/toolchain-core-armhf-build (also have to disable making tests under cplusplus but don't remember the directory ...) but i ask an help to have an automated way to correctly build without modify mmakefiles. Last time I built armhf target was around 2 years ago. At that point I built is via cross-compilation from linux (ubuntu 22.04) using linux armhf crosscompiler (this can explain the path differences you are experiencing) as well as using AROS gcc cross-compiler in version 6.5.0 (build with option 21) in rebuild.sh). Since then AROS GCC has been updated to 10.5.0 and I don't believe anyone tried to build the armhf target again. My suggestion would be to downgrade GCC to 6.5.0 (via editing AROS/config/gcc_def file) and try to first build using cross-compilation from x86_64 linux. Once that works, you will have a "template" to compare to native compilation under arm linux. Thanks for your suggestion...but i think the toolchain with GCC 10.5.0 is compilable if i found a way to pass the path of my system to the script that build (option 21 on rebuild). The other only changes are (but i don't know where to modify...) is to add the build of libaeabi and disable the building of some tests under cplusplus that use exceptions and is not supported under ARM. I'll try to crosscompile with my Linux amd64 PC. For paths look into core-linux-armhf/bin/linux-armhf/gen/config/target.cfg. A number of build-wide variable is set there containing paths to local build system. These variables and the target.cfg file are generated by AROS ./configure script. Thanks compilation now go forward...i changed target.cfg under "toolchain-core-armhf-build/bin/linux-arm/gen/config" and do make on "toolchain-core-armhf-build" dir. Now i need to find where to enable build libaeabi.a so i can build the entire toolchain with option 21 of rebuild.sh I found something that looks like libeabi in AROS/arm-all/arm-aeabi/mmakefile.src. Try adding a third line there: #MM- linklibs-armhd : libklibs-aeabi-arm Though I don't remember needing this library. Possibly the 6.5.0 GCC somehow does this while 10.5.0 is missing this. I try adding this line (and the variant "linklibs-armhf" instead of hd) but it did not solve the automatic building of the missing lib. I must do "linklibs-aeabi-arm-quick". Anyway after have build the aeabi lib i succefully built the toolchain (after many hours...). Smile To test I restarted from selecting option 21 (on rebuild.sh) but after many hours i get the same error of the kernel includes not found...maybe i need to modify the configure script for my case. With the toolchain built i try to build the core-linux-armhf (DEBUG) (option 22) but after a while it stopped with "cannot find -laeabi " so i made it built manually...and now i can continue compiling...i'll let you know if all goes ok. heg5xh71u8vbzctuh9mx90zy6h4p9wr 4655994 4655993 2026-08-01T14:16:50Z Jeff1138 301139 4655994 wikitext text/x-wiki {{ArosNav}} [[#Native]] [[#Hosted]] ==Introduction== The Raspberry Pi Foundation is a charity founded in May 2009 to promote the study of basic computer science in schools, and is responsible for developing a single-board computer called the Raspberry Pi. The Foundation is supported by the University of Cambridge Computer Laboratory and Broadcom. Its aim is to "promote the study of computer science and related topics, especially at school level, and to put the fun back into learning computing." The original Raspberry Pi 1 Model B computer went on sale in February 2012 and set a new standard shattering the dominance of the PC in the home and education markets. Millions in the various formats, A, B, A+, B+ and Compute have since been shipped worldwide. The original concept of the Raspberry Pi was for a computer board providing Internet access with up to 1080p HD graphics at very low cost. The boards provide a platform for children and adults from any background to acquire computer science knowledge and help develop the future World-Wide-Web and all things internet (IOT hub and bridges out to home network to cloud of sensors). Hobbyists and tech dabblers/tinkerers are the main purchases of the Pis (around half). The rest of the sales are split between education/industrial. While the Raspberry Pi boards were designed primarily for education, they have become very popular with manufacturers of embedded systems. The Raspberry Pi Foundation has ensured backwards compatibility with each new revision. The bare-bones Compute module is aimed specifically at the OEM manufacturer. * Pi 5 - Quad A76 and RP1 "southbridge" with VideoCore 7 4Gb 8Gb LPDDR4X * Pi 4 - Quad A72 64bit VideoCore 6 * Pi 3 - Quad A53 [https://www.raspberrypi.com/documentation/computers/processors.html 64 bit] - VideoCore 4 * Pi 2 - Quad 32bit but more power consumed * Model B+ - lower power usage but same speed as the original Pis * Model A and B - * Compute 1, 3, 4 and 5 - industrial use <pre> 2008 Trustees collected for Foundation 2009 Charity status gained 2010 2011 First Raspberry prototypes 2012 First boards go on sale at CPC and RS. The Model A and B 700 MHz Arm11 - February 29th BCM 2835 2012 First million sold - more than the 10,000 original planned and anticipated 2013 First Alpha Experimental builds of AROS Native for the Pi 2013 Pi Trading launched making grants available, providing in house educational resources and Pi Academy for teacher training 2013 Over two million sold 2014 Over three million sold and updated Model B+ introduced that moved composite video to audio jack and same half gig of memory 2014 Pi Model A+ v1.1 - BCM2711 no ethernet and 1 usb - a little smaller - 2015 Pi 2 Model B - BCM2836 900/600 MHz ARM Cortex-A7 Armv7 quad 32bit core and 32bit VideoCore IV GPU - 1Gb RAM 2015 Over four million first gen pis sold 2015 Over a million pi2s sold 2015 Pi Zero BCM2835 released 2015 Raspberry Pi 2 Model B version 1.2 has armv8 BCM2837 2016 Passed Sinclair total number of computer lines sold - around 7 million 2016 Pi 3 Model B - Broadcom BCM2837 SOC four 64bit ARMv8 Cortex-A53 1.2GHz - 1Gb - bluetooth 4.1, Cypress CYW43438 wireless 802.11n and a dual 32bit VideoCore IV GPU - 4 x USB2.0 ports 2016 Total PIs over 10 million worldwide 2016 Compute 3 launched BCM2837 armv8 Quad 64-bit Core 1Gb LPDDR2 RAM 4Gb Emmc storage 2017 12 million pis sold in total 2017 Pi Zero W 1GHz, single-core CPU A53 released with Cypress CYW43438 wireless 2018 Pi 3 Model B+ - 4c A53 BCM2837B0 - 1Gb, wireless 802.11ac, gigabit ethernet (300Mbit/s) and bluetooth 4.2 - power over ethernet - 4 x USB2.0 ports 2019 Over 15 million sold 2019 Pi 3 Model A with BCM2837b0 with 512Mb, 2019 Raspberry Pi Compute Module 3+ CM3+ LITE Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC 1Gb DDR2 and emmc 2019 Pi 4 Model B - BCM2711 quad 64bit A72 1.5GHz, VideoCore VI, AC wifi, Bluetooth 5.0, GbE, 2 micro hdmi decode up to 4K, USB-C power, 2xVLI USB 3, 2xUSB 2.0, 1/2/4 GB ram 2019 Pi 4 Model 2B - BCM2712 4 usb 2020 Raspberry Pi SC0919 Pico RP2040 2020 Silent Pi 4 upgrade with more USB-c psu support and PI400 1.8GHz inside keyboard 2020 Raspberry Pi Compute Module 4 2021 Pi zero 2 w 64bit quad 1GHz Cortex-A53 BCM2710A1 512mB SDRam 2023 Pi 5 BCM2712 Quad A76 w VideoCore VII - no audio socket - dual 4k displays from mini hdmi - fan connector - 5V 5A psu 2024 Raspberry Pi Pico 2 2024 Pi 5 2GB version uses BCM2712D0 2024 Pi-500 2024 Raspberry Pi Compute Module 5 2025 Pi-500+ 2026 April and May Aros 64bit fixed, added AHI audio, VC4 gfx started, usb functions added to rom 2026 June and July Aros 64bit usb2otg started, dma.resource, sdio.resource, bwfm.device wifi added 2026 Late July daily 64bit Pi3 builds start 2026 August .... 2027 2028 Pi 6 </pre> ===Native=== * 2013-03 Kalamatee starts work * 2013-05 Work put on hiatus * 2015-04 Work continues slowly with mschulz on the kernel and Kalamatee (NicJA) on gpio and usb * 2018 [https://www.patreon.com/posts/i-owe-you-some-20956961 mschulz resume with adding BE big endian support as well] * 2026 [https://github.com/aros-development-team/AROS/commits?author=bsek latest commits for pi 3 64bit] * 2026 [https://github.com/aros-development-team/AROS/commits?author=jonx latest commits for pi 4] [https://aros.sourceforge.io/nightly1.html RaspberryPi 3 raspi-aarch64-system native 64bit ArmV8 builds] are The status of AROS 32bit native for RasPi was OK. System booting, USB working (although with some issues but plan to fix them). Got stuck on modifying the ABI (application binary interface) and adjusting binutils/gcc to support it wanted to have real executable files but got stuck a little. This change for the type of relocations embedded in ARM files and not sure if this very type is well supported, on the other hand without this change ARM version of AROS wouldn't work well. By reverting the change to ABI we could have a (somehow) working AROS on RasPi, but unfortunately still unstable. Old native [http://www.aros.org/nightly1.html ARMv6 32bit nightlys] and ===Hosted=== [http://www.aros.org/snapshots1.html old linux and android hosted 32bit] ===Good sites to visit=== *[https://github.com/raspberrypi/firmware/tree/master/ Raspberry Pi Firmware build] *[https://github.com/raspberrypi/linux Raspberry Pi Linux Build] *[https://www.patreon.com/michal_schulz/posts Big endian on Pi] with [https://github.com/michalsc/Emu68 ARM based realtime JIT 68k] *[https://www.riscosopen.org/wiki/documentation/show/Welcome%20to%20RISC%20OS%20Pi RiscOS on Pi3 and Pi4] *[https://github.com/brianwiddas/pi-baremetal Bare Metal Access on Pi 32bit] ==Build== ===64bit=== ===32bit=== # download/checkout the source someplace, e.g. /build/AROS-Src/ # make a directory to store external sources AROS downloads, e.g. /build/Ports # make a build directory, e.g. /build/aros-raspi-armhf # cd into the build dir, configure, and then run make -: <pre> >cd /build/aros-raspi-armhf >/build/AROS-Src/configure --target=raspberrypi-armhf --with-serial-debug --enable-ccache --with-portssources=/build/Ports >make >make arosboot-raspi </pre> then copy the files from /build/aros-raspi-armhf/bin/raspi-armhf/AROS/ onto an sdcard, and download/copy the Raspi firmware files onto it. You should then be able to boot the sdcard on your RasPi. The current W.I.P tree to svn. it can be built as follows .. <pre> ./configure --target=raspi-armhf make arosboot-raspi </pre> That will generate arosraspi.img, arosraspi.rom and config.txt in bin/raspi-arm/AROS - so either copy just those files to a fat formatted SD card (with the firmware files on), or copy the whole contents of the AROS folder. NB - if you have a Linux/other install, backup the existing config.txt first arosraspi.img contains the bootstrap (which has very basic mailbox code, framebuffer/gpio init, and console "emulation" via code pinched from our libbootconsole), kernel.resource, and exec.library arosraspi.rom contains all the other components needed to boot AROS. The config.txt file will tell the RasPI bootstrap to load our arosraspi kernel and ramdisk (rom). the bootstrap has minimal mailbox code, planning on adding either a resource or library that driver/app code will use to access it (likewise for GPIO) ==== Hosted ==== Ubuntu VM approach to compiling [http://lallafa.de/blog/2013/06/building-aros-hosted-for-raspbian/ Linux hosted AROS June 04, 2013] ../AROS/configure --target=linux-armhf --enable-includes=/usr/arm-linux-gnueabihf/include --x-includes=/usr/arm-linux-gnueabihf/include --x-libraries=/usr/arm-linux-gnueabihf/lib arm-elf- is symbol-linked to arm-linux-gnueabi- (arm-linux-gnueabi- is more correct in this case, because it's going to be compiling the ARM AROSBootstrap for ARM Linux) *armel - many of the "android" machines require since the entire OS is made for soft float VFP. *armfp - Efika MX target, Raspberry PI, EfikaMX, Pandora and virtually everything (VFP) Keep in mind it's possible to start hardfp AROS hosted on softfp system, though, as long as no calls between AROS and host require floating point parameters. NOTE: hardfloat objects *cannot* be linked with softfloat objects - they have a different ABI. Just keep in mind the arm nightly build machine is quite complex beast. It needs the x86_64 host compiler to compile AROS tools. The arm version is built every night using gcc-4.6.2 crosscompiler (built together with AROS) and successfully builds armel and armhf linux hosted targets. *needs an AROS code compiler for ARM target *as well as unix compiler for ARM linux host (would be best to have both softfp and armhf, we have softfp only now) with full set of libraries and includes. with—disable-crosstools $AROS_CC is always a wrapper around $KERNEL_CC ? If so, this is wrong for some ports. This can break Darwin, Windows and Android port. Yes, Android port will build. And even work. But it's not good because the port will not be ABI-compatible with other ARM ports. Android's ABI is different from GNUEABI. For example: <pre> enum test {foo, bar}; enum test testvar; </pre> siseof(testvar) will be equal to sizeof(int) in GNUEABI (Linux and AROS) and sizeof(short) on Android. This affects linking objects from static linklibs, for example. Previously everything worked because $AROS_CC was a wrapper on top of $HOST_CC. And a real crosscompiler was used on non-ELF hosts. Android is the same. $KERNEL_CC is incompatible with AROS. compiler=kernel is appropriate _ONLY FOR CODE WHICH RUNS ON HOST OS_ (or barebone hardware, if we talk about native). This includes bootstraps, their linklibs, and host-side dynamic libraries (Windows makes extensive use of them because of architectural considerations. No single AROS object should be compiled with this setting. $KERNEL_CC is really compatible with AROS *ONLY IN LINUX-HOSTED* and no more. On other systems (Darwin, Windows, Android) this is not true any more, and compiler=kernel is never going to work. If you want to compile your AROS module against host OS includes, append the following to USER_INCLUDES (or USER_CFLAGS, this is effectively the same): -isystem $(GENINCDIR) $(KERNEL_INCLUDES) $(KERNEL_INCLUDES) expands to: -isystem <your_os_includes> -isystem <host_OS_gcc_private_includes> -nostdinc This makes AROS compiler adhering to host OS APIs. If you want some preprocessor symbols based on what your host OS actually is, add something like -DHOST_OS_$(AROS_HOST_ARCH). Why is there $(GENINCDIR) at all? Because host OS has its own libc includes, which would conflict with AROS ones. And the host OS libc is not binary-compatible with AROS one. Why doesn't Windows-hosted port use $(KERNEL_INCLUDES) ? Because WinAPI includes conflict with AROS ones in fundamental typedefs, like WORD, BYTE and BOOL. It's almost impossible to deal with this in any other way than rewriting WinAPI definitions using AROS types. Building under centos 6.3 (i386) currently, and AROS creates the toolchain itself. haven't yet committed the necessary changes but "./configure --target=raspi-armhf" is enough to start, then "make arosboot-raspi" will generate arosraspi.img (containing the bootstrap, kernel.resource, and exec.library) as well as arosraspi.rom (containing all the other essentials components such as dos, graphics etc). It will also copy over a config.txt file to make the raspi bootstrap code load the correct kernel, and a cmdline.txt that enables exec debug output. *armel = typically Debian 6, Ubuntu Maverick, Android, *armhf = typically Debian 7, Debian 8, Ubuntu Precise, Cross-compiling Ubuntu ARM softfp <pre> sudo sh echo 'foreign-architecture armel' >>/etc/dpkg/dpkg.cfg.d/multiarch echo 'deb [arch=armel] http://ports.ubuntu.com/ precise main universe' >/etc/apt/sources.list.d/armel.list apt-get update apt-get install gcc-arm-linux-gnueabi libx11-dev:armel libsdl-dev:armel </pre> <pre> ./configure --target=linux-arm --x-includes=/usr/include \ --enable-includes=/usr/arm-linux-gnueabi/include </pre> Cross-compiling Ubuntu ARM hard-float <pre> sudo sh echo 'foreign-architecture armhf' >>/etc/dpkg/dpkg.cfg.d/multiarch echo 'deb [arch=armhf] http://ports.ubuntu.com/ precise main universe' >/etc/apt/sources.list.d/armhf.list apt-get update apt-get install gcc-arm-linux-gnueabihf libx11-dev:armhf libsdl-dev:armhf </pre> <pre> ./configure --target=linux-armhf --x-includes=/usr/include \ --enable-includes=/usr/arm-linux-gnueabihf/include </pre> Now, the AROS build is configured properly and all you need to do is: make [https://github.com/aros-development-team/AROS/commit/d84b9a337f9aa059154d9af69275935125166bdd some Apple Silicon support] == Hardware == ===64bit=== ====BCM2712==== BCM2837 * Broadcom BCM43438 chip provides 2.4&nbsp;GHz 802.11n wireless LAN, Bluetooth Low Energy, and Bluetooth 4.1 Classic radio support, 3B+ [https://github.com/aros-development-team/AROS/commit/afa5bc0bb17d5dd06bcfdbac00853a3799ca8d76 LAN7515] ====BCM2711==== ===32bit=== === Core Kernel === ====BCM2708(family)==== which includes the [http://elinux.org/RPi_Hardware BCM2835] (ARM1176JZF-S 700&nbsp;MHz CPU + VideoCore IV GPU + up to 1GB RAM) *Framebuffer (fb) using mailbox *IRQ scheduler, etc *Arasan based SD Card controller *Synopsis DesignWare USB 2.0 OTG controller [http://networkdirection.net/index.php?option=com_content&view=article&id=106:rasperry-pi-usb-controller&catid=45:raspberry-pi&Itemid=54 Unofficial DOCS pdf], [dwc_otg.c FreeBSD], [], [https://www.riscosopen.org/viewer/view/mixed/RiscOS/Sources/HWSupport/USB/Controllers/DWCDriver/ RiscOS USB Driver], [https://www.riscosopen.org/forum/forums/5/topics/878 RiscOS USB Discussion], [https://www.riscosopen.org/forum/forums/11/topics/1893 Other USB RiscOS], [http://plan9.bell-labs.com/plan9/index.html Plan9 Miller's usb] http://plan9.bell-labs.com/sources/contrib/miller/, [https://github.com/Chadderz121/csud CSUD driver], *[http://www.smsc.com/media/Downloads_Public/Data_Sheets/9512.pdf SMSC 9512] USB LAN/Hub chip *CMOS RAM *VCHIQ port which sends messages to the GPU e.g. for mouse, keyboard, audio on HDMI, etc *Audio Driver *Serial Peripheral Interface Bus (SPI) *[http://www.susa.net/wordpress/2012/06/raspberry-pi-pcf8563-real-time-clock-rtc/ I2C registers] *I2S *Universal Asynchronous Receiver Transmitter (UART) *[http://elinux.org/RPi_BCM2835_GPIOs GPIOs] and [http://www.adafruit.com/blog/2012/08/17/broadcom-bcm2835-peripheral-memory-map-and-gpio-alternate-use-chart-piday-raspberrypi-raspberry_pi/ Alternative view of GPIO] BCM2836 * For Pi B+, PI 2 and Pi 3 SMSC LAN9514 chip adding 10/100 Ethernet connectivity and four USB channels to the board The overclock ability has diminished with each chip version as the energy usage has very slowly risen. BCM2837 is one of the warmest yet and might benefit from active cooling (ie fan) if all four cpu cores are in use for a short while. Video playback is not affected due to the custom support in the GPU. 5 V / 2.4 or 2.5 amp power supply recommended if all four cpu cores are running, else throttling (cpu slowdown) might occur. *[http://www.andrewscheller.co.uk/rpi_pcb_modules.html PCB], [http://elinux.org/RPi_Low-level_peripherals Low level features], Implemented so far... # Modify the configure system so that it correctly builds for the arm hardware float raspi target. # Implemented the bootstrap to load the aros modules and prepare the arm to jump into them. Reworked the x86 console support so that parts can be stolen for raspi to use since t has no basic functionality to output to the display. # Implemented a kernel.resource to prepare the raspi for running aros and provide the low level api calls to expose available resources and allow exec, etc function. # Implemented serial debug support # Implemented the exec (and kernel) functionality required to make multitasking work (and interrupts, exceptions, syscalls, etc) # Implemented a timer.device to utilise the hardware timers. # Implemented a very basic gfx driver to expose the hardware's framebuffer. # Implemented an SD-Card driver for AROS which presently only supports the raspi's chipset but can easily be modified to support all sd-card hardware and media. # Fixed the fat filesystem support in AROS so that it can boot on RasPi's normal SD-Card setup. The "rom" image files needed use a different filename than the default linux, etc images so can be easily installed without harming the existing files - you only need to change the loaded images in the config file to get aros to boot. # Updated the build scripts to automatically download the necessary raspi firmware files and wrap it all up so that you can simply extract the archive to a fat formatted sdcard and boot it on the raspi without having to get anything else. # fix everything in contrib and ports to build for raspi (needs proper testing/fixes but allows every component to actually compile at least, including owb) + numerous other fixes to get things working on arm/raspi .. Improvements... # Implement a USB chipset driver "OR" finish the existing one [https://github.com/aros-development-team/AROS/commit/c07d13c724f944674be5db54fc6a71ee72a01809 usb otg] - the current code is mostly a skeleton that should initialise the chipset and then needs relevant code to support the different transfer types. It also has the "virtual" hub code in place to represent the raspi's USB port (from poseidons p.o.v) # Implement a driver for the USB NIC (a few weeks - depends on USB above) # Write an [https://github.com/aros-development-team/AROS/commit/d55d0f74d20b769bbb8c8d386e5c1d7a9154f05a audio driver] (a few weeks - independent of USB) and [https://github.com/aros-development-team/AROS/commit/e93a4c245f27a87c9c4c1d39206694b39059998a HDMI] # fix syscall bug in the current raspi kernel code # Graphics depend on having a decent "bcmdma.resource" implemented as to use the cpu's dma engine. The sd card driver needs to use it for transfers to/from the controller - and the gfx system needs to use it for "blitting". # [https://github.com/aros-development-team/AROS/commit/4019d84e4975d4dad987a12d57fe108f5ac048e6 Improve the gfx driver], [ vc4gfx HIDD] add [http://dri.freedesktop.org/wiki/VC4/ Gallium3D support] # [https://github.com/aros-development-team/AROS/commit/b13905b3e8e45b089f520b44692c81affddd066f Improve] the [https://github.com/aros-development-team/AROS/commit/3a876755c070f5c73c4f53c7f4d35b4f923088b9 sdcard] device driver - which is also pretty basic but should work with most cards, rework it to also support pci, etc. sd card interfaces on x86 # The current code using very rudimentary access to the gpio interface - so that should be implemented as some resource for other components to access, as-well as the i2c interface exposed over the gpio interface. that should have a hidd class implemented which uses the gpio resource to communicate. Boot up On power-up, the rpi [http://www.open.com.au/mikem/bcm2835/ BCM 2835] [https://github.com/hermanhermitage/videocoreiv VideoCore4] GPU, not the ARM CPU, is in control, and the SD card slot is the only peripheral device with power. The firmware burned into the BCM2835's VideoCoreIV GPU PROM requires a DOS-style partition table; a FAT-formatted first partition; and the freely redistributable but closed sourced Broadcom files “bootcode.bin” and “start.elf” in that partition. The boot sequence carries out several pre-boot tasks *On powering of the rpi, the GPU reads and executes bootcode.bin, which then loads start.elf *The GPU loads the “start.elf” file, eventually, into the L2 cache and then executes it *configures the memory split for the CPU and GPU *reads and parses “config.txt” from the same partition on the SD card and applies the settings (like a PC’s BIOS settings) *loads the “kernel.img” file, again from the same partition *activates the CPU to begin executing the loaded kernel image The CPU/GPU memory split is hard-coded into start.elf, so Broadcom provides three start.elf images, to give 32M, 64M, or 128M to the GPU for multimedia performance, and the remainder to the CPU. RPi uses [https://github.com/raspberrypi/firmware some closed source loaders] and at some point it loads a binary blob named "kernel.img" at 0x8000, at that point there would be a rudimentary Aros alive. If one wants to use the SD-card then there would have to be a driver for the interface and a fat filesystem handler (SD-card has to be formatted to fat filesystem) Boot code and kernel are now linked together and made into that binary blob, just for starters. Raspberry Pi uses [http://kernelnomicon.org/?p=133 u-boot] and [http://kernelnomicon.org/?p=138 UBoot] as bootloader, there's already some code in the Efika MX port for that. UBoot is a native bootloader and not just for the raspberry pi, it loads after start.elf. You can find Efika MX port from arch implementations, some hacking is needed for the mmakefile.src'es as iit dates back to before the Aros crosstool era or else you get some weird errors while building. You also need to code the bootstrap and serial handling. At the moment it seems that a fastest route for the native build would be to make one binary blob without using the package system. Raspberry's memory layout is pretty simple and if the implemented u-boot doesn't support loading other modules <pre> ? - alias for 'help' mtest - simple RAM test autoscr - run script from memory base - print or set address offset bbm - BBM sub-system bdinfo - print Board Info structure boot - boot default, i.e., run 'bootcmd' bootd - boot default, i.e., run 'bootcmd' bootm - boot application image from memory bootp - boot image via network using BootP/TFTP protocol cmp - memory compare coninfo - print console devices and information cp - memory copy crc32 - checksum calculation echo - echo args to console fatinfo - print information about filesystem fatload - load binary file from a dos filesystem fatls - list files in a directory (default /) go - start application at address 'addr' help - print online help iminfo - print header information for application image itest - return true/false on integer compare jade - loadb - load binary file over serial line (kermit mode) loads - load S-Record file over serial line loady - load binary file over serial line (ymodem mode) loop - infinite loop on address range md - memory display mm - memory modify (auto-incrementing) mtest - simple RAM test mw - memory write (fill) nfs - boot image via network using NFS protocol nm - memory modify (constant address) pci - list and access PCI Configuration Space ping - send ICMP ECHO_REQUEST to network host printenv - print environment variables rarpboot - boot image via network using RARP/TFTP protocol reset - Perform RESET of the CPU run - run commands in an environment variable saveenv - save environment variables to persistent storage saves - save S-Record file over serial line setenv - set environment variables sleep - delay execution for some time tftpboot - boot image via network using TFTP protocol USB - USB sub-system usbboot - boot from USB device version - print monitor version </pre> Most used [http://www.compulab.co.il/workspace/mediawiki/index.php5/U-Boot_quick_reference uboot options] are fatls usb 0:1, the reason behind INTB_KERNEL is to allow use of the standard Exec function AddIntServer() to add interrupt handlers for hardware drivers etc. AmigaOS never used it for abstract hardware drivers. AmigaOS routed only raw hardware IRQs there. Their assignment was hardcoded. As well as number of them. Actually on AmigaOS every bus has its own interrupt subsystem. For example PCI bus. PCI interrupts on Amiga are routed to a single exec interrupt. 1:1 relationship between CPU and hardware interrupts is present only on PC. IMHO we miss things like AddInterrupt/RemInterrupt methods on our PCI subsystem's device class. PCI bus class should map these methods to whatever is appropriate. This is how it is done on AmigaOS and friends. When these are implemented, raw kernel.resource API will be needed only for several PC-specific drivers with hardwired resources. Exec IRQs are real IRQs only on Amiga hardware. On other machines they can be emulated where appropriate (VBlank is a good example). kernel.resource is meant to be different, its IRQs are hardware-agnostic, they are plain "Hardware IRQ number X, whatever this means". They are low-level actually, and meaningful only in the context of a particular system. Was that not the transition from irq.hidd to kernel.resource? No. A long time ago there was another hacky bit named INTB_TIMERTICK. It was "abstract timer interrupt", used by timer.device. It was the same as VBlank, but with larger frequency. I removed it, because kernel.resource API was a cleaner way to access this interrupt. Furthermore, there can be more than one timer in the system. I am even thinking about bringing back timer HIDD definitions again. hpet.resource is a bad idea. Can someone please enlighten me a little on how the scheduler is meant to work? Poseidon.library creates its "Poseidon Event Task" during RTF_COLDSTART -> then calls Wait(), and ends up in limbo because wait disables interrupts (used for the scheduler heartbeat), and basically waits forever because the sigbit is never set, since krnSwitch doesn't switch the task unless TF_SWITCH is set, and no codepath run during this seems to set it?? TF_SWITCH does not disable/enable switching. This flag just enables to run user-supplied hook when the task is being switched away. It is completely safe to call Wait() in Disable()d state. Doing this actually temporarily breaks this state. IDNestCnt gets remembered in struct Task, then next task is selected, and its IDNestCnt is restored in sysbase (see kernel_scheduler.c). If there are no other tasks, then your cpu_Dispatch() should enable interrupts on the CPU and enter idle mode. See x86 implementation for good example. You miss what happens next... 1. KrnSwitch() saves context of your task, saves IDNestCnt (core_Switch() and cpu_Switch()), then drops into cpu_Dispatch(). 2. cpu_Dispatch() calls core_Dispatch. Then two cases are possible: 2a. There is a READY task. It is picked up, its IDNestCnt is restored in SysBase, then cpu_Dispatch() needs to restore registers and exit. The next task is run. 2b. There are no READY tasks. core_Dispatch() returns NULL. In this case your cpu_Dispatch() should enter idle loop. It should just enable interrupts on the CPU and put it on halt. This allows it to process hardware interrupts. Eventually some of your interrupt handlers wakes up your task and puts it into READY list. My heartbeat interrupt has been slowed atm to help debugging - but it never actually gets a chance to fire because of the Wait() disabling interrupts. Perhaps you have forgotten to enable interrupts in your idle loop. There is a change in the format of AROS executables. Until now we were using Elf RELocable files which are usually used as intermediate object files. We had them for various reasons, one of them was how AROS files were built in the past. That days we had no real aros cross compiler and the option to embed relocation data in unix executables (or in executable files in general) was rather new and not every linux/unix system had it. Therefore we have decided to use intermediate files. Although it was somehow working (and it is still working :-)), it has some drawbacks. Therefore decided to introduce real Elf EXEC types, in first turn implemented on ARM target with option to expand in future to all other AROS architectures. The first patch was pretty easy and appeared to work somehow. It generated nice executables with embedded relocation info. Not only that, it also removed all global symbols adjusting relocation data to be relative to the beginning of the sections. That move reduced number of symbols in each executable significantly (depending on the file between 20 and 80% of all symbols could be removed). The only symbols that stayed in the file are local ones - due to the nature of the patch wasn't able to remove them since we have not seen them in the symbol hash table. The patch didn't worked though. The files were relocated, AROS kernel loaded, but it crashed very early. What happened? Well, the nature of ARM relocations happened :) Most of the relocation data on all machines is rather simple. Relocation can be absolute or pc-relative, sometimes the offset has to be bit shifted. On ARM v7 there is another one. There, when one wants to load an address of function/variable into register a combination of two instructions can be used: movw and movt. The first one loads immediate into lower 16 bits of a register while clearing upper 16 bits. The second one loads immediate into upper 16 bits without touching lower halfword. Loading of a pointer into a register looks like this: movw r0, #:lower16:label movt r0, #:upper16:label In this case there are two relocations - one for lower halfword and another for upper. If an overflow of lower 16 bits occurs during relocation process, the upper one should be updated as well. Unfortunately with current patch and with typical ARM executables there is not enough information to perform the calculations. There are two options - the first one would be to give up and go back to "fake" executables, another one would be to change from REL to RELA relocation info. The latter contains an addend, extra data which can be used to perform all the relocation calculations I need. Decided for the second option. The patch is already in the works. There is another function for the binutils' bfd backend to perform the final relocation. There can decide what to do with every reloc info, modify data and eventually strip some symbols. An advantage is - at this stage of the linking process have also full access to all local symbols so can change all relocations section relative and eventually strip all symbols from the files. === GPU === Most of start.elf runs on the GPU. Placing ALL the userland GPU code in the videocore.hidd isn't going to be a terribly big problem because the code they published is nothing more than a shim that sends data straight to the GPU to execute. The good news about this is that we only need to write our HIDD using the OpenVG API. The shim is relatively small codewise and lives in the ARM memory (the actual OpenVG code itself lives in the GPU RAM area and its loaded from start.elf). That's also the bad news. Our driver has to translate AROS video calls to OpenVG calls, for most tasks it should be easy, for some, not so much. It's still probably less difficult and less work, than controlling the GPU directly. The other good news is that anything done through OpenVG happens on the GPU, its truly accelerated. It also has some nice font functions, meaning we can lead into an accelerated text mode later. Basically, AROS resets or locks up when it tries to use AROS_ATOMIC_INC or DEC. If I comment out the byte/word operations in the header files and use non-atomic operations, the code works as expected. have read that the L1 cache needs to be enabled to use LDREX and co (which I also read is only meant to be used on multi processor systems with shared memory) - however I am certain this is correctly enabled. If you are using LREX or STREX, you should have L1 cache enabled, at least on the ARM CPU I work with at work. L1 cache is enabled by enabling the MMU *AND* setting the C and I bits in the CPU - the C bit is ignored, and the I bit only covers the 16 byte instruction pipeline if the MMU is not enabled. Can you verify that your assembly is generating LDREX/STREX? From the behavior, it almost sounds like its generating the default Semaphore locked atomics. Impossible. There are no semaphore-locked atomics. There are Disable()/Enable()-based ones instead. And there's a special #define AROS_NO_ATOMIC_OPERATIONS in this case, which tweaks Disable()/Enable() implementations not to recurse forever. I have tested this on ARMv5 which does not have ldrex/strex, it works fine. On those ARMs there's no way to have real atomics. On other OSes (like Linux) this is done by introducing things like atomic_t, which appears to be a complex structure, holding the value together with accompanying spinlock (implemented using swp). #warning "TODO: lookup optimal mmu table settings for raspi memory" /* Set up an identity-mapping for all 4GB */ for(x = 0; x < 4096; x ++) { pagetable[x] = x<<20 | (0x40002|0x80000|0x010000|0x00C00|0x04); } Shouldn't there be a second loop that sets the 'C' bit in the descriptor for the RAM pages? Currently, you have TEX=0, C=0, B=1 for all pages (Shared Device). You should have TEX=0, C=1, B=0 for RAM (Write-Through, Cached) So .. pagetable[x] = x<<20 | 2; should be enough? No, for RAM you need to change the '| 0x40' to '| 0x80' tell dosboot the correct defaults to use Please don't do this. This bootconfig.c is a deprecated legacy thing. I wanted it to go away completely with time. Instead, display drivers should auto-install themselves during own initialization phase. I. e. detect hardware=>instantiate itself. This should make things way simpler. With this approach you only need to add the driver into KS image to get the device autobooted. No hardcoded stuff. Currently VESA and VGA drivers do this, look there for examples. never rewrote ATI driver because i don't have any test system for it. they defined a smaller AROSCPUContext than the ExceptionContext - yet reference it as ExceptionContext in other places, and since it hasn't allocated enough storage for ExceptionContext, are corrupting memory/the structure (since the elements that are there don't map 1 to 1 with the exception context). AFAIK, AROS has been moving in a different direction to this in recent years. It is the job of graphics HIDDs to allocate bitmaps etc. so that they have the most suitable characteristics, including allocating them from GPU RAM where possible. The concept of chip RAM is only for legacy code, and most if not all non-68k platforms should have all system RAM marked as chip. BTW, is the video processing code you mention CPU code or GPU code? Also, IIRC we have support for "external memory allocators". Perhaps that's what we need for the allocation of GPU RAM through the mailbox. All hosted and x86 native ports should use proper context formats. trying to clarify if the vblank handler has to have run by this point to prevent this deadlock. Actually, no. Unless you have installed VBlank handler which should wake up at some point. Without VBlank there will be no quantum count. Consequently, there will be no forced preemption. But the rest will work, and multitasking will be cooperative (switch happens only when current task voluntarily gives up the CPU). Does it depend on the vblank having run before this point? and if yes what does that mean on systems where it might be able to run enough code (e.g. get to this point) before the vblank interrupt has triggered? What is it waiting for? It could wait for timer, in this case you need timer.device working. VBlank is currently needed for exec's quantum counter. In current native ports we have only a single timer, which is served by timer.device. VBlank is simulated by timer.device also. If your machine has two timers, then you can use one of them for VBlank, and another for timer.device, this will simplify things down. VBlank needs to be 50 Hz for historical reasons, many programs use it as cheap timer. I am periodically thinking about making some abstract mechanism to be able to change quantum source (and untie it from 50 Hz), but have no time to come up with something good. Additionally i started disliking timer.device hardcoded design when PC has got many timers (old 8253, APIC, HPET). Currently i think there should be some low-level entity representing tick source. timer.device should just select the most appropriate source for its units. The BCM2835 has 4 GPU based timer sources - 2 are used by the GPU, so im using Timer3 for our heartbeat and the remaining one will be free to the system. There is also the less capable ARM timer but that is dependent on the CPU frequency. Very good. You won't need any emulation. Set the heartbeat to 50 Hz and drive VBlank from it. Use other timer for MicroHZ. Can you use the 'econsole.hook' I make for debugging the Sam460 via the serial port? It provides a before-anything-else shell prompt on the serial port. You can then do 'NewCLI' to test your graphics, or use any DOS command in shellcommands.resource. You should just be able to add econsole.hook to your module list, and use 'econsole' in your bootargs. So long as you have a working Exec/RawMayGetChar and Exec/RawPutChar, it should work. Also make sure to add shell.resource and shellcommands.resource for this. That should have done it. If you set "#define DEBUG 1" in arch/all-native/econsole/econsole.c, do you get any additional serial output? have added it to the build and added econsole to the command line - and can see the bootloader picks up on the emergency bootconsole tag, but I still only get the insert bootable media display? Im assuming it exposes a fake filesystem that tricks aros into booting? The contents of which are: ECON:AROS.boot Way to handle the scheduling code? The implementations I had been following were causing problems, due to cascading interrupts which I cant handle properly in the asm stubs just now (when they break disable etc.) - since it means detecting the interrupted codes cpu mode and getting the correct sp/lr for it, and that's just too tedious for arm. To work around this ive added a system idle task which does nothing - and when the scheduling code has no task to run switches this in and lets it run, thereby allowing the interrupts etc to resume until something does need to happen. Also, by adding accounting code to cpu_Switch() and cpu_Dispatch(), it should allow the system to log idle time correctly (as well as running tasks). have thought of also adding an additional task that never runs, solely to record time spent in IRQ handlers, but I digress.. was under the impression that kernel.resource should *never* be used outside of exec.library. This is a wrong impression. Michal started designing it because portable nature of AROS does not fit well into exec's API with all its assumptions. So, he started the new, hardware-agnostic kernel API from scratch. Yes, exec sits on top of it in places. But kernel always meant to be open thing. Otherwise it would not exist. it wasn't meant to be just used willy nilly by user code - but by lower system components (e.g. exec) so that they could be implemented in a more generic fashion, and the kernel resource itself hide the systems quirks. Adding new things there perfectly keeps up with our decision to minimize AROS-specific intervention into APIs which can clash with MorphOS/OS4 extensions. We want at least source-level compatibility there. Binary compatibility on PPC would be extremely cool, but at the other hand we have no maintainer for this, as well as their ABIs are a bit weird and far from optimal, especially MorphOS one, because it aims for m68k binary compatibility. It depends on what exactly is being implemented - there's no reason we should have everything crammed into kernel.resource if it doesn't need to be (i.e. if its better suited as a separate component/subsystem in its own right) The _LE versions are for when you have endian swapping taking place. If the graphics are the same endian as the CPU, no swapping should occur. I ran into a similar terminology problem in SDL with a friend insisting that his Radeon 7000 on his PC was big-endian. It is not, it just uses the same endianness for the graphics card and the CPU so no swapping was necessary. They were both little-endian. The _LE versions are because the PixFmts refer to the bitmap data being in big endian format in memory, for which the normal version would need to do endianness conversion before applying the shifts/masks. on this platform it is in _LE in memory also so we don't need the conversion hence using the _LE version of the call). would use _LE (if it's really little endian 16 bit mode). What is the bare minimum needed to implement a framebuffer based gfx driver, with our software handling the rest? I have tried with just a gfx class that only expose new/dispose/newbitmap - and having an onscreenbitmap used only for the framebuffer itself (with all other bitmaps being chunkybm, and the framebuffer's superclass also being chunkybm), but that alone isn't enough it seems? You can use workbench/hidds/sm502/ as your example - it is as simple as I could make it. So, AROS creates the framebuffer bitmap (I have verified this) -> so surely it should be capable of then rendeing into it? I don't actually create the framebuffer "bitmap object" myself - only as a result of being asked to. I so far have -: vc_init: queries the gpus memory, and sets up a fake memory handler for it, then adds the bootmode driver and returns saying all is well vc_gfxhidd:New: sets up some fake syncmodes to test with and creates the real gfx object. vc_gfxhidd:NewBitmap: checks if its a framebuffer and uses the onbitmap class or uses the chunkybm class otherwise vc_onbitmap:New; creates a chunkybm object and then pushes the real framebuffer address into it as the buffer, So, AROS creates the framebuffer bitmap (I have verified this) -> so surely it should be capable of then rendeing into it? I don't actually create the framebuffer "bitmap object" myself - only as a result of being asked to. The code I currently have on SVN seems to create the framebuffers bitmap object fine, but then crashes in intuitions DisplayDriver callback. In particular it crashes performing the getattr on the system default pointer. don't expose MEMF_CHIP in an allocatable form so AllocSpriteData was failing (and other code later doesn't check if the values are valid == illegal memory accesses) Actually MEMF_CHIP has to present, for historical reasons. This has been never fully agreed upon, but in ports i wrote i exposed the whole memory as MEMF_CHIP. The idea behind this is that CHIP is originally the memory where graphics and sound data can be put. On non-Amiga platforms there are no restrictions on this, so the whole memory is CHIP. Yes, many old software can misbehave with CHIP memory size larger than 2MB. But this actually applies only to m68k AROS which is going to run m68k binaries. In other cases it's quite logical to fix the program when porting. As to original question: yes, it's enough to have a framebuffer bitmap (one with aoHidd_BitMap_FrameBuffer set to TRUE) and PutPixel routine. It framebuffer can be served by chunky bitmap class, then you can simply create chunky bitmap with your own buffer (see how VESA driver does this). Chunky PutPixel is already there. struggling to determine what is the correct pixfmt to use for the 24/16/15 bit gfx modes on the RasPi. AFAIK it uses RGB565, for 16bit but im unsure what shifts etc should go with it? suffice to say Im getting the wrong colors so far lol. <pre> redmask: 0x0000F800 greenmask: 0x000007E0 bluemask: 0x0000001F alphamask: 0 redshift: 16 greenshift: 21 blueshift: 27 alphashift: 0 </pre> It should likely be vHidd_StdPixFmt_RGB16_LE This stuff is a bit confusing. The "names" of the stdpixfmts are based on the layout in memory, ignoring endianess. So for example: ARGB32: will be 0xAA 0xRR 0xGG 0xBB in memory on both big endian and little endian machines. The shifts and masks OTOH are based on pixel access (ULONG in this case), so differ depending on whether you run on big endian machine or little endian machine (that's why there's stdpixfmt_le.h and stdpixfmt_be.h in rom/hidds/graphics/). With the 16 bit pixel format it's even more confusing, as for example it's impossible on little endian machine to describe RGB16 with shifts/masks alone. That's why there's vHidd_PixFmt_SwapPixelBytes_Flag. (RGB16 == RRRRRGGG GGGBBBBB in memory, and for pixel (WORD) access on little endian machine it needs to be accessed as GGGBBBBBRRRRRGGGG). The shifts btw indicate how much to shift the component to the left (!) so that it is moved to the highest bit (31). The aHidd_PixFmt_StdPixFmt you specify will be ignored most of the time, because when the pixelfmt is registered, the gfx hidd checks if there's an identical pixfmt (shifts/masks/etc., but ignoring pixfmt->stdpixfmt) already in the system, and if so, it uses the already existing one and does not create a new one. In theory it would be better if gfx drivers could simply/only specify a StdPixFmt without all the shifts/masks stuff when the gfx driver uses pixfmt which matches one of the stdpixfmts exactly. Another possibility would be for gfx drivers to use HIDD_Gfx_GetPIxFmt(stdpixfmt_gfx_driver_wants_to_use) and then peek shifts/masks from it and fill out a pixfmt tag list based on that. 15bit very blue/green: Try to pass same shifts/masks/etc. as in 16 bit pixfmt (maybe you think it's using 15 bit R5G5B5 (or swapped) but it's actually still using 16 bit R5G6B5 (or swapped). aHidd_PixFmt_StdPixFmt you pass is mostly ignored. It's the shift/masks/etc. that count. But I would still pass the correct one (_LE) == whatever rom/hidds/graphics/stdpixfmts_??.h uses in the entry where you have looked up shifts/masks/etc. Use the shifts/masks/etc. from the entry in stdpixfmt_le.h (if you are running on little endian machine) or stdpixfmt_be.h (if you are running on little endian machine) that matches the pixfmt that its meant to be. 0xAA,0xRR,0xGG,0xBB on little endian (->entry in stdpixfmt_le.h which says vHidd_StdPixFmt_ARGB32) 0xBB,0xGG,0xRR,0xAA on little endian (->entry in stdpixfmt_le.h which says vHidd_StdPixFmt_BGRA32) 0xAA,0xRR,0xGG,0xBB on big endian (->entry in stdpixfmt_be.h which says vHidd_StdPixFmt_ARGB32) 0xBB,0xGG,0xRR,0xAA on big endian (->entry in stdpixfmt_be.h which says vHidd_StdPixFmt_BGRA32) it feels like AROS trashes the alpha component, otherwise it should be 8A8R8G8B. read on the subject suggest its in 1x5r5g5b (x is ignored) to keep 16bit alignment . What I see on screen suggests to me that wrong shift/mask are being applied - however going by the 16bit versions it all looks correct to me so I am really confused as to what is happening. The output image looks to have too much green/blue, and very weak red. Why did usbromstartup become HW-specific ? In the past i have done a big job separating kickstart into several parts. I have never got any responses, so i re-describe my idea. For now it loads the hs otg chipset driver .. The idea is to minimize amount of archirecture-specific modules to make user's life easier. So, the kickstart was split into 'base' (which does not contain anything machine-specific) and 'BSP' (Board Support Package) which contains all hardware-specific stuff. This way, for example, distribution makers can save up space on CD and make CDs with multiple platform support. Different configuration would load the same base with different BSP's. Next there was some part which is entirely missing on hosted. These are filesystems. Hosted ports do not need them to boot up, so on hosted they are left out. At the other hand, they are also architecture-agnostic. So i put them into 'FS' package (standing for 'filesystem'). Poseidon is one more big part. I made it into separate package in order to allow users to omit it if they don't need it (for example, to run on retro PCs without USB). Personally i have one. Again, Poseidon is hardware-agnostic (well, there are USB drivers but HCIs are pretty standard). It's mandatory on PI since there are no other interface types - so being a separate package is irrelevant/pointless. Is Raspberry's USB controller non-HCI compliant? Actually i expect it to be compliant, then wouldn't it be better to make existing drivers discovering them? AFAIK its HCI 1.0 compliant but I'm not familiar enough with poseidons drivers, nor USB, to just hack away at the existing code. Perhaps once i'm more familiar with the workings I can merge in the changes needed to get it operating but for now I will focus on getting it running. Also our drivers have known issues so perhaps a fresh set of eyes might shed some light on what is going wrong. Another interesting question is whether Poseidon can operate on device side. Is it flexible enough? How similar is being a USB host and USB device? think it will need a bit of work on Poseidon's side. Until then I will force the driver into Host/Master mode in the init code, but leave open device etc to configure the chipset for either's use - and look at trying to add support for working in Device/Slave mode & switching modes once it's up and running. Actually USBROMStartup is some kind of kludge. Can there be any alternative? Could device drivers be self-installing, like our HIDDs? This would get rid of need to list them in USBRomStartup. And there is one more thing about modular ports. In order to actually implement this, your bootstrapping environment should provide the ability to load several files. On PC this is provided by GRUB2. on CHRP you can read filesystem via OpenFirmware, and Sam's Parthenope relies on modified u-boot. If your bootstrap allows to load only a single file, then you stuck with monolithic kickstart. By the way... u-boot allows not only to boot up a single uImage or zImage, it also allows to write client programs AFAIK. With this approach, you actually can write modular bootstrap for ARM AROS using unmodified u-boot. [http://repo.or.cz/w/AROS.git/commit/e7bdc7e7b7f12b07aa24c739abb63721a872a53a arasan eMMC sdcard controller specific header which is not USB] and [http://repo.or.cz/w/AROS.git/commit/8bd19674084526a534ac11f7d4c51932e9ffe3d2 added prelim sdcard device]. [http://repo.or.cz/w/AROS.git/commit/9ab8217f61911fb8b7fd41bee46a992b4668ced1 do not set 4bit data mode, or enable acmd12/dma int's] Framebuffer - basic display RasPi has to speak to the "operating system" which runs on the GPU itself and request/free memory - it cant directly manage it itself, and so the managed functions were used to wrap these calls. The Arm and GPU share memory space. The framebuffer is shared. The Arm can write a pixel and it will appear on the screen (through GPU hardware) without flushing/copying being required. The GPU can composite multiple FB's in real time - so you have a number of surfaces defined which are rotated etc and composited in real time to the output. Copying can map from the address space of the Arm to the flat space of the GPU which takes some code, but I don't think whole buffers are copied. The DMA hardware can also access the whole memory space and can perform 2D fills and blits (no blending). This is documented in the peripheral spec posted. The DMA is just an Arm accessible peripheral and can be set up with low latency (e.g. microseconds). must use a 0xc0000000-based bus address to access SDRAM, yet non-DMA access should go via a 0x0-based bus address. For 2D dma, set TDMODE, and the spec says "interpret the TXFR_LEN register as YLENGTH number of transfers each of XLENGTH, and add the strides to the address after each transfer." so set STRIDE to pitch of the image, the width is XLENGTH and height is YLENGTH. You would fill by not setting the SRC_INC and point source to your fill data. The DMA cannot see the ARM's L1 cache, so you would map the framebuffer with ioremap_nocache. Depending on where the source data comes from, it may need an L1 cache flush. The DMA can see the L2 cache. Use 0xC0000000 bus addresses when L2 is disabled and 0x40000000 bus addresses when L2 is enabled. (actually just call virt_to_bus and you'll get the right address out). openGLES/openVG has high latency. Writing to framebuffer then reading it back is very inefficient (e.g. milliseconds). If you can drive it a unidirectional way, just streaming commands at then that is efficient. openVG is not implemented on top of openGLES - it uses the same hardware but as a first class interface To improve the Gfx driver, we will need a DMA resource implemented so can use to perform DMA operations. The Gfx driver will need this to perform blits. USB * Model A and B limited to 150 mA per port. * Model B+ and Pi 2 introduced configurable 600 mA to 1.2 A support over all ports - anything above that requires a powered USB hub. Implementing the hardware driver that Poseidon uses to interact with the USB components. Have code in place to (try) and initialise the USB chipset, and configure host/device mode operation (though AFAICT Poseidon doesn't support device mode). Started to get the "virtual" root hub written for the single USB port so that Poseidon should at least list it correctly in the GUI - and try to interact with it to find peripherals. The BCM2835 uses a soft IP block from Synopsys’ DesignWare library (DWC), specifically the block is called dwc_usb_2_0_hs_otg_subsystem-ahb_se (“USB 2.0 Hi-Speed OTG Controller Subsystem w/AHB Interface SE”). There is no public documentation for this, and pretty much zero chance of anyone getting hold of it even with NDA. However, there's a Linux driver written by Synopsys ([https://github.com/raspberrypi/linux dwc_usb]). Specifically directories [https://github.com/raspberrypi/linux/tree/rpi-patches/drivers/usb/host dwc_common_port] and [https://github.com/raspberrypi/linux/tree/rpi-patches/drivers/usb/host dwc_otg]. The Synopsys code is actually under a fairly permissive licence – it's not GPL, it's similar to BSD (’don't sue us if it breaks’ is pretty much the only clause). So this should not be a barrier to porting the code. The code is really well written, with a nice partition between the work done by the driver (dwc_otg, which is fairly involved, given the host does more work than a conventional EHCI driver), and the interface to Linux (dwc_common_port). Probably only need provision of relevant changes to dwc_common_port. Other things to consider.... * Provision of necessary headers to get it to compile * Provision of necessary functions (main issues are wait queues, threads, work queues, tasklets, timers, spinlocks and mutexes (multithreading) ) * Interfacing between USB stack and the driver. dwc_otg/dwc_otg_hcd_linux.c looks like the place to start. the Linux bits of the headers are only required for the dwc_common_port library. dwc_common_port includes a variety of crypto functions which are not used – it appears to also be used for ultrawideband (UWB) and wireless USB (WUSB) drivers where crypto will be an issue, but it isn't going to be for plain wired USB. Every USB driver acts as an USB hub as well in order to let Poseidon control the state of USB ports. The code there was reading status of the only USB port in Raspberry's CPU but when changing the status it erroneously deleted some of the status bits, including the port enable one. It was so because those bits in the status register are of a type Read/WriteToClear. It means, if one does not want to change their value from 1 back to 0, one has to actually write the 0 value. Very practical thing e.g. in interrupt handlers, where one reads the interrupt status register to learn what was the interrupt reason, and writes it back to the same register in order to clear the interrupts. After fixing that code it turned out that the communication was still unsuccessful. Apparently the USB device was not understanding the host for some reason. That should not happen since the request sent was one of the standard ones implemented by virtually anything with an USB connector, assumed that Poseidon clears the data caches before forwarding the work to the USB drivers but that's the responsibility of the driver itself. The USB device responded and acknowledged the transmission! But why were all the request sent after address change failing with timeout? They should not. Once again, address set is supported just by anything. Tried to contact the device at address 0 once again and there it was, still responding properly. The enlightenment came. The bus address for DMA transmissions was, as it is in many bare metal USB implementations, just the pure memory address of the buffer as seen by the ARM cpu. Have "prefixed" it with the real location of uncached RAM and booted AROS once again. Trident saw this: Product : Hub: Vdr=0424/PID=9514 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 9 SubClass : 0 DevProto : 2 VendorID : 1060 ProductID : 38164 DevVers : 0200 and this: Product : Vendor: Vdr=0424/PID=EC00 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 255 SubClass : 0 DevProto : 1 VendorID : 1060 ProductID : 60416 DevVers : 0200 and even this: Product : Hub: Vdr=0424/PID=9514 Manufacturer: Standard Microsystems Corp. SerialNumber: n/a /Users/michal/git/AROS/rom/USB/poseidon/./poseidon.library.c:psd_20_psdEnumerateDevice/3092: USBVersion: 0200 Class : 9 SubClass : 0 DevProto : 2 VendorID : 1060 ProductID : 38164 DevVers : 0200 What are these things? The first one is USB hub built in the Raspberry. Thanks to this one the Pi machines (with exception of Pi0 and computing modules) have more than just one single USB port. The second one is the network chip in raspberry, the third one is my USB SD card reader which have just connected to see what happens. AROS tried, of course, to boot from it ;) So, the first step towards working USB is done. The control transfers are working as you can see above. Next step is to implement bulk and interrupt transfers, having the basics in place. Finally some error handling will be added and USB for Pi will be as complete as the PC version. [http://www.raspyfi.com/raspberry-pi-usb-audio-fix/ Issue with USB Audio] Audio [https://github.com/raspberrypi/linux/tree/rpi-patches/sound/arm audio] and its [https://github.com/raspberrypi/firmware/issues/2 very high speed message passing interface type of thing VCHI] The Model B+ added an additional voltage regulator for the audio output and an additional output driver to drive low-resistance loads like headphones. However it is still using pulse-width modulation (PWM), which has a major impact on sound quality the old Raspberry Pi used a linear voltage regulator to provide the 3.3V to many of the components on the board while the new one uses a switching regulator. Both can perform reasonably well. However switch mode power supplies often show higher noise figures Analogue audio Audio over HDMI rev 1.3 & 1.4 Ethernet 10/100 BaseT Ethernet RJ45 socket GPIO GPIO shouldn't be too bad but bear in mind it is already accessed in places so they would need to allocate pins etc through it (e.g. sdcard to flicker the activity light, serial debug to output data on the GPIO pins) Probably a resource rather than a device... Started an i2c driver that will need to allocate GPIO pins. Feel free to work on it if you are interested ;p GPU graphics with 2D and 3D acceleration Sadly none yet for 32bit but for 64bit... == References == ===Hosted=== ==== Linux ==== Change lxde to another sudo leafpad /etc/x11/xinit/xinitrc xorg.conf <pre> Section "Screen" Identifier "Default Screen" DefaultDepth 16 SubSection "Display" # Viewport 0 0 Depth 16 Modes "800x600" EndSubsection EndSection Section "Device" Option "Backingstore" Identifier "Card0" EndSection </pre> Will raspberrypi ARM programs run on other ARM archs and vice-versa ? If not I would like to use different cpu names for archs which are incompatible. All code compiled for at most armv6 with softfp float abi will work on all softfp ARM targets, including raspberry. Code compiled for hard-float ABI will not work on any softfp target. But then, hard-float abi uses -armhf- cpu name. keyboard or mouse not functioning or partly working lsmod kernel and modules (stored in /lib/modules/ get from https://github.com/raspberrypi/firmware and click on ZIP button) have to be updated simultaneously sudo Apt-Get Update sudo Apt-Get Install <program > <program > cksfv joystick p7zip-full stopwatch mtpaint searchmonkey zip geany renameutils fbreader unrar-free mhwaveedit xpad milkytracker grafx par2 libreoffice epiphany-browser xbmc ace-of-penguins gweled black-box petris xmahjongg thrust fceu freesci frotz xgammon tuxpuck littlewizard xsoldier micropolis xbubble eboard&xboard (freezes) bomberclone OMXPlayer not responding or working with keyboard or no sound audio through HDMI LXterminal—command "OMXPlayer -o hdmi %f " hdmi issues Setting the hdmi_force_hotplug=1 makes sure the Pi believes the monitor/TV is really there. You might also need to set config_hdmi_boost=4 or even higher (up to 9) if your display needs a stronger signal. If the display is a computer monitor or newer tv, use hdmi_group=1 (auto HDMI use) and if it is an older TV, try hdmi_group=2 (for DMT formats, i.e. for PC monitors) then you HAVE to "set hdmi_drive = 2 to enable HDMI output as this forces HDMI mode rather than DVI mode Do not set hdmi_safe=1 as that overrides many of the previous options. Using a shorter or better quality HDMI cable might help. Make sure your Pi's power supply delivers 1 A and not 500 mA. If you see a problem with the red colour - either absent, or interference - then try a boost composite video changing the RCA cable, then the composite port worked out of the box Boot it as you are doing, without HDMI. If you now plug in the HDMI, do you get the image? In other words, does the Pi think HDMI is connected even when it isn't? Rename all the files in the first partion of the card except bootcode.bin, start.elf and fixup.dat What's the result? Put back config.txt What's the result? for PAL mode sdtv_mode=2 dmi_ignore_hotplug Pretends HDMI hotplug signal is not asserted so it appears a HDMI display is not attached hdmi_ignore_hotplug=1 Use composite mode even if HDMI monitor is detected <pre> # NOOBS Auto-generated Settings: #hdmi_force_hotplug=1 #config_hdmi_boost=4 #overscan_left=24 #overscan_right=24 #overscan_top=16 #overscan_bottom=16 #disable_overscan=0 start_x=1 gpu_mem=128 </pre> tvservice -c "PAL 4:3" <pre> /opt/vc/bin/tvservice -s or tvservice -s state: HPD high|HDMI mode|HDCP off|composite off (0x12001a), 1920x1080 @ 60 Hz, progressive /opt/vc/bin/tvservice -m CEA Group CEA has 1 modes: (native) mode 16: 1920x1080 @ 60 Hz, progressive /opt/vc/bin/tvservice -m DMT Group DMT has 0 modes: </pre> sudo amixer cset numid=3 1 forces the audio to the headphone jack, even with the HDMI video output plugged in config.txt the hdmi_ignore_edid_audio=1 option sems relevant as it should tell ALSA that the only available audio is analog, no matter what the display says There are several different ways that these 4 pole (ring) composite analog cables can be wired up, so some work great in some applications and can be a waste of time in others. What is needed for the Raspberry Pi B+ and above, which like many camcorders needs the ring contact next to the base contact to be the ground. The wiring for the 4 pole are: TIP (LEFT AUDIO CHANNEL) RING 1 (RIGHT AUDIO CHANNEL) RING 2 (GROUND/EARTH) RING 3 BASE/SLEEVE (VIDEO) YELLOW Most Apple based Players and the Microsoft Zune (TM) are wired this way. Most analogue camcorders are wired this way as well, where the ground in on Ring 2 will work with the Pi although you may need to swap your Video plug with the Right Audio plug. Nearly all other MP3 players are not wired this way, the ground is on another ring ie the wrong one. External devices * Camera Module Omnivision ov5647 Sunny 5MP (NoIR version) V1.3 - NoIR at 850&nbsp;nm, peak at 880&nbsp;nm and trails off at 940&nbsp;nm wavelengths * Camera V2 Sony IMX219 V2.1 8mpixel 8MP 8megapixel - 3280 x 2464 pixels - video at 1080p30, 720p60 and 640x480p90 - wider field of view, 62 vs 54 degrees horizontally - * Branded WIFI usb BCM43143 dongle N.B. dreaded error after changing cameras (stupidly without turning off the power first) and lasted through several power cycles. It can be a bad 15-pin FFC ribbon cable, when swapped, camera(s) and the Pi itself are working OK. It can be an instance of a cold solder joint on the CSI connector on the pi board. the camera can be detected (that's done via I2C) but may still not be able to receive image data (done via CSI-2) if something is broken. CSI-2 is uni-directional. Control is generally done via I2C. The CSI-2 receiver always writes to memory, not direct to the ISP. That's the way the Broadcom architecture works as it allows multipass processing easily. GPU memory is accessible from the ARM. Processing using the QPU graphics processors may be possible. currently the only supported sensor is OV5647 and IMX219. The linux drivers are all in the firmware blob, else you'd be looking at at least a man-month of work in a fully fledged imaging lab to do a decent tuning of the camera modules' ISP parameters. Static electricity maybe an issue for the camera module and slightly less for the pi board. * Hosted under ARM Linux which needs to be already installed [http://www.aros.org/nightly1.php current ABIv1] Help building AROS hosted on Linux ARM I was looking a way to use more my Handheld ARM based called Pyra (Dragonbox Pyra) an ARM (Omap5 cpu with 4GB ram) linux based machine (Debian Buster v10 with kernel 5.6.19 adapted) and have a try to compile the latest Aros sources by Deadwood directly on this device. Compilation stops after build libpopupmenu.a and trying to build libatomic have this error: <pre> Configuring build in bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic configure: WARNING: unrecognized options: --disable-nls, --without-x checking for --enable-version-specific-runtime-libs... no checking for --enable-generated-files-in-srcdir... no checking build system type... arm-unknown-linux-gnu checking host system type... arm-unknown-aros checking target system type... arm-unknown-aros checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for arm-aros-strip... /media/farox/pyra2/arosbuilds/toolchain-core-armhf/arm-aros-strip checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking for arm-aros-gcc... /media/farox/pyra2/arosbuilds/toolchain-core-armhf/arm-aros-gcc checking whether the C compiler works... no configure: error: in /media/farox/pyra2/arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic': configure: error: C compiler cannot create executables See config.log' for more details make[2]: *** [mmakefile:4489: /media/farox/pyra2/arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic/.configured] Error 77 [MMAKE] make --no-print-directory TOP=/media/farox/pyra2/arosbuilds/toolchain-core-armhf-build SRCDIR=/media/farox/pyra2/arosbuilds/AROS CURDIR=tools/crosstools/gnu TARGET=tools-crosstools-gcc-libatomic-configure -s --file=mmakefile tools-crosstools-gcc-libatomic-configure failed: 512 [MMAKE] Error: Error while running make in tools/crosstools/gnu: No such file or directory make[1]: *** [Makefile:361: linklibs-libatomic] Error 10 make: *** [Makefile:183: crosstools] Error 2 </pre> looking at config.log on arosbuilds/toolchain-core-armhf-build/bin/linux-arm/gen/host/tools/crosstools/gnu/gcc/arm-aros/libatomic i found that arosbuilds/toolchain-core-armhf/arm-aros-ld: cannot find -laeabi so i do make linklibs-aeabi-arm-quick and the missing lib was built. now the next stop is at fatal error: bits/libc-header-start.h: No such file or directory and fatal error: sys/cdefs.h: No such file or directory in many places so after checking that i have this missing include files i have noted that my include path is a bit different, standard searching path is /usr/arm-linux-gnueabihf but in my system is /usr/include/arm-linux-gnueabihf so if i add my path to some mmakefiles compilation goes on....but is a better way to add this path to avoid every mmakefiles to be changed? i fixed with adding -I/usr/include/arm-linux-gnueabihf to where is missing on mmakefiles like USER_INCLUDES := -isystem $(GENINCDIR) -I/usr/include/arm-linux-gnueabihf $(KERNEL_INCLUDES) P.s. I have changed many mmakefiles and have at least compiled (after many hours) the toolchain doing make every time in arosbuilds/toolchain-core-armhf-build (also have to disable making tests under cplusplus but don't remember the directory ...) but i ask an help to have an automated way to correctly build without modify mmakefiles. Last time I built armhf target was around 2 years ago. At that point I built is via cross-compilation from linux (ubuntu 22.04) using linux armhf crosscompiler (this can explain the path differences you are experiencing) as well as using AROS gcc cross-compiler in version 6.5.0 (build with option 21) in rebuild.sh). Since then AROS GCC has been updated to 10.5.0 and I don't believe anyone tried to build the armhf target again. My suggestion would be to downgrade GCC to 6.5.0 (via editing AROS/config/gcc_def file) and try to first build using cross-compilation from x86_64 linux. Once that works, you will have a "template" to compare to native compilation under arm linux. Thanks for your suggestion...but i think the toolchain with GCC 10.5.0 is compilable if i found a way to pass the path of my system to the script that build (option 21 on rebuild). The other only changes are (but i don't know where to modify...) is to add the build of libaeabi and disable the building of some tests under cplusplus that use exceptions and is not supported under ARM. I'll try to crosscompile with my Linux amd64 PC. For paths look into core-linux-armhf/bin/linux-armhf/gen/config/target.cfg. A number of build-wide variable is set there containing paths to local build system. These variables and the target.cfg file are generated by AROS ./configure script. Thanks compilation now go forward...i changed target.cfg under "toolchain-core-armhf-build/bin/linux-arm/gen/config" and do make on "toolchain-core-armhf-build" dir. Now i need to find where to enable build libaeabi.a so i can build the entire toolchain with option 21 of rebuild.sh I found something that looks like libeabi in AROS/arm-all/arm-aeabi/mmakefile.src. Try adding a third line there: #MM- linklibs-armhd : libklibs-aeabi-arm Though I don't remember needing this library. Possibly the 6.5.0 GCC somehow does this while 10.5.0 is missing this. I try adding this line (and the variant "linklibs-armhf" instead of hd) but it did not solve the automatic building of the missing lib. I must do "linklibs-aeabi-arm-quick". Anyway after have build the aeabi lib i succefully built the toolchain (after many hours...). Smile To test I restarted from selecting option 21 (on rebuild.sh) but after many hours i get the same error of the kernel includes not found...maybe i need to modify the configure script for my case. With the toolchain built i try to build the core-linux-armhf (DEBUG) (option 22) but after a while it stopped with "cannot find -laeabi " so i made it built manually...and now i can continue compiling...i'll let you know if all goes ok. iz4v1w0yyeeujeaabx0rcj2010hqj9v User talk:Revi C. 3 294082 4656023 4592978 2026-08-01T23:03:43Z Pathoschild 13563 global user pages ([[m:Synchbot|requested by Revi C.]]) 4656023 wikitext text/x-wiki __NOINDEX__<div class="mw-content-ltr" lang="en" dir="ltr">[[File:Revi logo (pink).png|thumb|center|<span style="color:red">PLEASE DO NOT LEAVE MESSAGE HERE!</span>]] ''' <span style="color:red"> BEFORE YOU BLOCK MY ACCOUNT: IF MY EDIT SUMMARY INCLUDE PREFIX </span>''(Script)''<span style="color:red">, DON'T BLOCK ME, JUST TELL ME TO SLOW DOWN AT COMMONS' TALK PAGE. IT IS AN AUTOMATED SCRIPT BEING USED ON COMMONS TO MOVE FILES.</span> Instead, please leave your message following site: <br /> [[File:Wikidata-logo-en.svg|45px|link=d:User talk:Revi C.]] [[d:User talk:Revi C.]] for Wikidata (Interwiki links) stuff <!--(I am {{int:Group-sysop}} there)--> <br /> [[File:Commons-logo.svg|45px|link=commons:User talk:Revi C.]] [[commons:User talk:Revi C.]] for renaming stuff or [[User:CommonsDelinker|CommonsDelinker]] action (I am {{int:Group-sysop}} there) <br /> [[File:Wikimedia Community Logo optimized.svg|45px|link=m:User talk:Revi C.]] [[meta:User talk:Revi C.]] for other stuff (User right notification, revert message, etc...) Messages left on this page may be reverted or moved without any response.</div> esxe13mcstpjlux1bt2hqwxr2v8t8mn User:Revi C. 2 294204 4656024 4443646 2026-08-01T23:38:55Z Pathoschild 13563 global user pages ([[m:Synchbot|requested by Revi C.]]) 4656024 wikitext text/x-wiki __NOINDEX__<div class="mw-content-ltr" lang="en" dir="ltr">{{#babel:ko|en-3|}} [[File:Revi wikimedia image.jpg|thumb|center|middle|If you are here to talk about CommonsDelinker removing a deleted image, please [[:c:User talk:Revi C.|go here]].]] Hello! I am [[:m:User:Revi C.|revi]]. I edit to [[m:SWMT|revert vandals]], do Wikidata stuff<!--(I am a Wikidata Admin! <small>([{{fullurl:wikidata:Special:ListUsers/Revi C.|limit=1}} Verify])</small>)-->, or do [[:c:COM:FR|Commons Filemoving stuff]] (I am Commons Admin too! <small>([{{fullurl:c:Special:ListUsers/Revi C.|limit=1}} Verify])</small>). Come to [[:m:User:Revi C.|my Meta userpage]] or [[:c:User:Revi C.|my Commons userpage]] for more information. Thank you.</div> s7l31vm7btg9p7hwj4hy4wj4v6hxgyh Mirad Grammar/Prepositions 0 417650 4656008 4635283 2026-08-01T17:18:52Z Tyoyafud 6233 /* Single-word Prepositions */ 4656008 wikitext text/x-wiki <noinclude>{{status|100%}}</noinclude> : Prepositions are words that connect and show a relationship between a noun or noun phrase and the rest of the sentence. In Mirad, prepositions are simple monosyllables or phrases. Prepositions, as in English, are positioned before the noun or noun phrase they connect. == Single-word Prepositions == [[File:Prepositions of place.svg|thumb|]] : In Mirad, there are '''''single-word prepositions''''' and '''''compound prepositions'''''. : Here is a chart of single-word prepositions. Most are spatial, but some are temporal, relational, or mathematical. :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Simple Prepositions |- ! Positive !! Neutral !! Negative |- ! colspan="3" | Spatial |- | '''ab'''....''on, upon'' || '''eb'''....''between'' || '''ob'''....''off, off of'' |- | '''ayb'''....''over, above'' || '''eyb'''....''among, amid'' || '''oyb'''....''under, below'' |- | '''bu'''....''to'' || '''be'''....''at'' || '''bi'''....''from, of'' |- | '''byu'''....''as far as, up to'' || || '''byi'''....''starting with'' |- | '''ub'''....''toward'' || || '''ib'''....''away from'' |- | '''yub'''....''near'' || '''yeb'''....''in, inside''<br>'''oyeb'''....''outside''|| '''yib'''....''far from'' |- | '''yuz'''....''around'' || '''yez'''....''along'' || '''yiz'''....''beyond'' |- | '''za'''....''in front of'' || '''ze'''....''at the middle of'' || '''zo'''....''behind, in back of'' |- | '''zya'''....''throughout'' || '''zye'''....''through'' || |- | || '''zey'''....''across'' || |- ! colspan="3" | Temporal |- | '''ja'''....''before'' || '''je'''....''during, while'' || '''jo'''....''after'' |- | '''ju'''....''until'' || || '''ji'''....''since'' |- ! colspan="3" | Relational |- | '''av'''....''for'' || '''ev'''....''neither for nor against''<br>'''vyel'''....''than, as, compared to, about'' || '''ov'''....''against'' |- | '''ayv'''....''about'' || || '''oyv'''....''despite'' |- | '''ay'''....''and'' || '''ey'''....''or''<br>'''oey'''....''nor'' || '''oy'''....''but, except'' |- | '''bay'''....''with'' || '''bey'''....''by, via'' || '''boy'''....''without'' |- | || '''gel'''....''like''<br>'''ogel'''....''unlike'' || |- ! colspan="3" | Mathematical |- | || '''ge'''....''equal to''<br>'''oge'''....''unequal to'' || |- | '''gab'''....''plus, <big>+</big>'' || '''gaob'''....''plus or minus'' || '''gob'''....''minus, <big>-</big>'' |- | '''gal'''....''times, <big>×</big>'' || || '''gol'''....''divided by, <big>÷</big>'' |- | '''gar'''....''to the power of, <big>&circ;</big>'' || || '''gor'''....''to the root of, <big>√</big>'' |} : Some of the above prepositions can be negated by prefixing '''lo'''. For example: ::* '''jo'''....''after'' --> '''lojo'''....''no later than, by'' ::* '''ji'''....''since'' --> '''loji'''....''not since'' : The most versatile and useful single-word preposition is '''be''', which means ''at'' as a general locative when used literally, but is used before many nouns and noun phrases when the meaning is idiomatic. Some examples follow: ::* '''Yat se <u>be tam</u>.'''....''We are <u>at home</u>.'' (literal, general locative) ::* '''Yat se <u>be dropek</u>.'''....''We are <u>at war</u>.'' (idiomatic) ::* '''At teata et <u>be yibsin</u>.'''....''I saw you <u>on television</u>.'' (idiomatic) ::* '''<u>Be Ejna York</u> ese mamyabtomi.'''....''<u>In New York</u>, there are skyscrapers.'' (general locative) ::* '''At se <u>be mep</u>.'''....''I am <u>on the way/en route</u>.'' : The preposition '''bi''' can mean ''of'' or ''from''. It is used for possessive (''of'') and ablative (''from'') constructions. Here are some examples: ::* '''Hus se tam <u>bi</u> ifron.'''....''That is a house <u>of</u> worship.'' ::* '''At tyopa <u>bi</u> ha nam bu ata pur.'''....''I walked <u>from</u> the store to my car.'' ::* '''<u>Bi</u> him bu jobuj.'''....''<u>From</u> here to eternity.'' ::* '''Ha tajem <u>bi Tom</u> se him.'''....''<u>Tom's</u> birthplace is here.'' ::* '''His sa ha gwaifwa tuzun <u>bi eta teyd</u>.'''....''This was <u>your mother's</u> favorite piece of art.'' === Simple Preposition Examples === ::* '''Ha dyes se <u>ab</u> ha sem.'''....''The book is <u>on</u> the table.'' ::* '''Von pyosu <u>ob</u> ha abtamas!'''....''Don't fall <u>off</u> the roof!'' ::* '''Ha pati papa <u>ayb</u> ata tam.'''....''The birds flew <u>over</u> my house.'' ::* '''It kosa <u>oyb</u> ha yagsim.'''....''He hid <u>under</u> the bench.'' ::* '''Simbiu <u>eb</u> hut ay at.'''....''Take a seat <u>between</u> that person and me.'' ::* '''Yat teje <u>eyb</u> fiati.'''....''We live <u>among</u> good people.'' ::* '''Duhos se nax <u>bi</u> pop <u>bu</u> ay <u>bi</u> Boston?'''....''What is the cost <u>of</u> a trip <u>to</u> and <u>from</u> Boston?'' ::* '''His se ifek <u>bi</u> kyen.'''....''This is a game <u>of</u> luck.'' ::* '''Duven et sa <u>be</u> hua duzun zomoj?'''....''Were you <u>at</u> that concert last night?'' ::* '''Yit se embwa <u>be</u> ha zenod bi ha mapil.'''....''We are positioned <u>at</u> the hub of this storm.'' ::* '''Iyt tyopa <u>byu</u> ha mes.'''....''She walked <u>up to/as far as</u> the door.'' ::* '''Ha twob tojbwa <u>bey</u> goblar.'''....''The man was killed <u>with/by</u> a knife.'' ::* '''Et xu ga fiay ser <u>bay</u> at vyel <u>boy</u> at.'''....''You would do better to be <u>with</u> me than <u>without</u> me.'' ::* '''Teaxu <u>ib</u> ha amar.'''....''Look <u>away</u> from the sun.'' ::* '''Von teaxu iz <u>ub</u> ha man.'''....''Don't look directly <u>toward</u> the light.'' ::* '''Yibdaliru <u>ub</u> ha uj bi eta pop.'''....''Call me <u>toward</u> the end of your trip.'' ::* '''Emkyoxu eta pur <u>yub</u> ha tam.'''....''Park the car <u>near</u> the house.'' ::* '''At voy se <u>yib</u> et.'''....''I'm not <u>far from</u> you.'' ::* '''Iyt simpa <u>za</u> at.''' ....''She sat <u>in front of</u> me.'' ::* '''Et yeyfe simbier <u>zo</u> hua toyb.'''....''You should sit <u>in back of</u> that woman.'' ::* '''Embu has <u>zu</u> ha mis.'''....''Put it <u>to the left of</u> the door.'' ::* '''At simpo <u>zi</u> et.'''....''I will sit <u>to the right of</u> you.'' ::* '''Ha pat besa <u>ze</u> ha tim.'''....''The bird stayed <u>in the middle of</u> the room.'' ::* '''Mil upeye <u>zye</u> ha yijun.'''....''Water is coming <u>through</u> the opening.'' ::* '''Bikiu je pen <u>zey</u> ha domep.'''.....''Take care when going <u>across</u> the street.'' ::* '''Eso ivan <u>zya</u> ha mir.'''....''There will be happiness <u>throughout</u> the world.'' ::* '''His xwo <u>ja</u> zajub.''' ....''This will happen <u>before</u> tomorrow.'' ::* '''Esa mapil <u>je</u> ha moj.'''....''There was a storm <u>during</u> the night.'' ::* '''<u>Ju</u> zamaj.'''....''<u>Until</u> tomorrow morning.'' ::* '''At voy teataye et <u>ji</u> zoyejub.'''....''I have not seen you <u>since</u> last week.'' ::* '''Diwe xu hes <u>av</u> at.'''....''Please do something <u>for</u> me.'' ::* '''Hia dyes se <u>ayv</u> dalzeyntun.'''....''This book is <u>about</u> linguistics.'' ::* '''Hia dyen se din <u>vyel</u> ewa fiuti.'''....''This book is a story <u>about</u> two lovers.'' ::* '''Datan se ga fia <u>vyel</u> nas.'''....''Friendship is better <u>than</u> money.'' ::* '''Hos se ge fua <u>vyel</u> has hu yat xola zojab.'''....''Nothing is as bad <u>as</u> what we underwent last year.'' ::* '''Yit yexeya <u>ov</u> yat.'''....''They were working <u>against</u> us.'' ::* '''Ha vakdibut dopoxa at <u>oyv</u> ata azovdeyni.'''....''The police officer arrested me <u>despite</u> my protests.'' ::* '''At se <u>ev</u> hua doyafkexut.'''....''I am <u>neither for nor against/neutral toward</u> that candidate.'' ::* '''Et <u>ay</u> Bob yeyfe ser dati.'''....''You <u>and</u> Bob should be friends.'' ::* '''Duhot ako, et <u>ey</u> at?'''....''Who will win, you <u>or</u> I?'' ::* '''Hyat <u>oy</u> hwut ta ha dud.'''....''Everyone <u>but</u> that guy knew the answer.'' ::* '''Esa mag <u>yub</u> at.'''....''There was a fire <u>near</u> me.'':: ::* '''Voy ese fabi <u>yuz</u> ata tam.'''....''There are no trees <u>around</u> my house.'' ::* '''Et yafo tyoper <u>yez</u> ha kunad.'''....''You'll have to walk <u>along</u> the edge.'' ::* '''Ese gla mari <u>yiz</u> yata amar.'''....''There are many stars <u>beyond</u> our sun.'' ::* '''Ha fepet tyopa iz <u>zye</u> hia mes.'''....''The cat walked right <u>through</u> this door.'' ::* '''<u>Boy</u> yombiel, tej voy se fia.'''....''<u>Without</u> ice cream, life is not good.'' ::* '''Et voy se <u>gel</u> at.'''....''You are not <u>like</u> me.'' ::* '''Et se hyagla <u>ogel</u> at.'''....''You are totally <u>unlike</u> me.'' ::* '''Ewa <u>gab</u> ewa gese uwa.'''....''Two <u>plus</u> two equals four.'' ::* '''Uwa <u>gob</u> ewa gese ewa.'''....''Four <u>minus</u> two equals two.'' ::* '''Ewa <u>gal</u> ewa gese uwa.'''....''Two <u>times</u> two equals four.'' ::* '''Ewa <u>gol</u> ewa gese awa.'''....''Two <u>divided by</u> two equals one.'' ::* '''Uwa <u>gar</u> ewa gese asya.'''....''Four squared (4<sup>2</sup>) equals sixteen. (Lit: Four <u>to the power of</u> two...)'' ::* '''Alya <u>gor</u> e gese u.'''....''The square root (√16) of sixteen is four. (Lit: Sixteen <u>to the minus power of</u> two...)'' === Hybridized Prepositions === :: Some of the above prepositions can be hybridized: ::* '''<u>bui</u> taam'''....''<u>to and fro</u> home'' ::* '''<u>zui</u> ha dodalut'''....''<u>to the left and right of</u> the speaker'' ::* '''<u>gaob</u> glos'''....''<u>plus or minus</u> a bit'' ::* '''<u>aov</u> at'''....''<u>for or against</u> me'' ::* '''<u>aoyeb</u> ha tim'''....''<u>in and out of</u> the room'' ::* '''<u>aob</u> ha seem'''....''<u>on and off</u> the counter'' == Compound Prepositions == : '''''Compound prepositions''''' require the use of multiple morphemes, including prepositions, adverbs, and nouns. === Compound Prepositions Using Adverbs === : There are certain directional adverbs that can play a part in forming prepositional phrases, but cannot act as prepositions in and of themselves: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Adverbs Used in Compound Prepositions |- | '''iz'''....''directly, straight'' || '''uz'''....''indirectly, roundabout'' |- | '''yab'''....''up'' || '''yob'''....''down'' |- | '''zay'''....''forward, ahead'' || '''zoy'''....''back'' |- | '''zi'''....''right'' || '''zu'''....''left'' |} : The next chart lists some compound prepositions using the above adverbs or other combinations. Note that when combining two words, if the first word ends in '''b''' and the second begins with '''b''', one of the '''b''' 's is dropped. ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Compound Prepositions Using Adverbs and Other Prepositions |- ! Compound Preposition !! Example |- | '''yabu'''....''up to'' (< '''yab + bu''')|| '''It fu paper <u>yabu</u> ha mam.'''....''He would like to fly <u>up to</u> the sky.'' |- | '''yabi'''....''up from'' (< '''yab + bi''') || '''Su <u>yabi</u> ha sum.'''....''Get <u>up from</u> the bed.'' |- | '''yabey'''....''up (by way of)'' (< '''yab + bey''') || '''Yat tyoyapo <u>yabey</u> ha memyayz.'''....''We will walk <u>up</u> the hill.'' |- | '''yabe'''....''up at'' (< '''yab + be''')|| '''Ha kapet kaxwa <u>yabe</u> ha tam.'''....''The dog was found <u>up at</u> the house.'' |- | '''yabab'''....''up on, upon'' || '''Ha fepet se <u>yabab</u> ha abtamas.'''....''The cat is <u>up o</u>n the roof.'' |- | '''yobu'''....''down to'' (< '''yab + bu''') || '''Igpu <u>yobu</u> ha obmos.'''....''Run <u>down to</u> the cellar.'' |- | '''yobi'''....''down from'' (< '''yab + bi''') || '''Ha tat upa <u>yobi</u> ha mam.'''....''The angel came <u>down from</u> the sky.'' |- | '''yobey'''....''down (by way of)'' || '''Iyt igtyoyapa <u>yobey</u> ha meab.'''....''She ran <u>down</u> the hill.'' |- | '''yobe'''....''down at'' || '''Ha dyes kaxwa <u>yobe</u> ha obem.'''....''The book was found <u>down at</u> the bottom.'' |- | '''yobab'''....''down on'' || '''Has kaxwa <u>yobab</u> eta oybmos.'''....''It was found <u>down on</u> your floor.'' |- | '''yebu'''....''into'' || '''It pusa <u>yebu</u> ha mip.'''....''He jumped <u>into</u> the river.'' |- | '''yebi'''....''in from'' || '''Upu <u>yebi</u> ha oma oyebem.'''....''Come <u>in from</u> the cold outdoors.'' |- | '''oyebe'''....''out in/at'' || '''Ha tudi sa <u>oyebe</u> ha zodeym.'''....''The children were <u>out in</u> the backyard.'' |- | '''oyebi'''....''out from'' || '''Yepu <u>oyebi</u> ha om.'''....''Come in <u>out from</u> the cold.'' |- | '''oyebu'''....''out to'' || '''Yat fu peper <u>oyebu</u> ha meim.'''....''We'd like to ride <u>out to</u> the countryside.'' |- | '''izbu'''....''straight to'' || '''Pu <u>izbu</u> fyomir!''' ....''Go <u>straight to</u> hell!'' |- | '''izoybi'''....''right back from'' || '''It upu <u>izoybi</u> ha yexim.'''....''He came <u>right back from</u> the office.'' |- | '''zaybu'''....''on to, forth to, ahead to'' || '''Ha bixpur popa <u>zaybu</u> zona doym.'''....''The train traveled <u>on to</u> the next town.'' |- | '''zeybi'''....''across from'' || '''At simbeseya <u>zeybi</u> et.'''....''I was sitting <u>across from</u> you.'' |- | '''zoybi'''....''back from'' || '''At se <u>zoybi</u> ha yextim.'''....''I am <u>back from</u> the office.'' |- | '''zoybu'''....''back to'' || '''Pu <u>zoy bu</u> ha nam.'''....''Go <u>back to</u> the store.'' |- | '''zoybe'''....''back at'' || '''Duven et se <u>zoybe</u> tam?'''....''Are you <u>back at</u> home?'' |- | '''zubi'''....''to the left of'' || '''Ata tam se <u>zubi</u> hut.'''....''My house is <u>to the right of</u> that guy's.'' |- | '''zibi'''....''to the right of'' || '''Huta tam se <u>zibi</u> atas.'''....''That guy's house is <u>to the right of</u> mine.'' |} === Prepositional Phrases Using Spatial Nouns === : The following chart shows how prepositions and directional adverbs can be joined with the spatial ending '''-(e)m''' meaning ''place'' (or others) to be form spatial nouns, which, in turn, can be used in idiomatic prepositional phrases: :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Spatial Nouns Built on Prepositions or Adverbs |- | '''ab'''....''on'' || '''abem'''....''top''<br>'''abned'''....''upper surface''<br>'''abmas'''....''roof'' |- | '''eb'''....''between'' || '''ebem'''....''interstice''<br>'''ebjob'''....''interval''<br>'''ebnod'''....''intersection''<br>'''ebmas'''....''partition'' |- | '''ob'''....''off'' || '''obem'''....''bottom''<br>'''obned'''....''lower surface''<br>'''obmas'''....''foundation'' |- | '''ayb'''....''above'' || '''aybem'''....''area above''<br>'''aybmas'''....''ceiling'' |- | '''oyb'''....''below'' || '''oybem'''....''area below''<br>'''oybmas'''....''floor'' |- | '''eyb'''....''among'' || '''eybem'''....''midst'' |- | '''yab'''....''up'' || '''yabem'''....''upstairs, upper area''<br>'''yabneg'''....''top level'' |- | '''yob'''....''down'' || '''yobem'''....''downstairs, lower area''<br>'''yobneg'''....''bottom level'' |- | '''yeb'''....''in'' || '''yebem'''....''inside, interior, indoors''<br>'''yebnig'''....''inner space'' |- | '''oyeb'''....''out'' || '''oyebem'''....''outside, exterior, outdoors'' |- | '''za'''....''in front of'' || '''zam'''....''front, foreground''<br>'''zan'''....''face'' |- | '''ze'''....''in the middle of'' || '''zem'''....''middle''<br>'''zenod'''....''center, hub''<br>'''zen'''....''center''<br>'''zenad'''....''median'' |- | '''zo'''....''behind'' || '''zom'''....''back, rear, background'' |- | '''zi'''....''right'' || '''zim'''....''right area''<br>'''zikum'''....''left side''<br>'''ziizon'''....''right direction''<br>'''imer'''....''east'' |- | '''zu'''....''left'' || '''zum'''....''left area''<br>'''zukum'''....''left side''<br>'''zuizon'''....''left direction''<br>'''umer'''....''west'' |- | '''iz'''....''straight'' || '''izmep'''....''direct route''<br>'''iznad'''....''vector''<br>'''izon'''....''direction'' |- | '''uz'''....''indirectly'' || '''uzmep'''....''detour''<br>'''uznad'''....''curve''<br>'''uzon'''....''deviation'' |- | '''yub'''....''near'' || '''yubem'''....''vicinity''<br>'''yubkum'''....''near side''<br>'''yubaj'''....''recent past'' |- | '''yib'''....''far'' || '''yibem'''....''distance''<br>'''yibkum'''....''far side''<br>'''yibnod'''....''pole''<br>'''yiboj'''....''distant future'' |- | '''yuz'''....''around'' || '''yuzem'''....''perifery''<br>'''yuznad'''....''perimeter''<br>'''yuznig'''....''environment'' |- | '''yiz'''....''beyond'' || '''yizem'''....''area beyond''<br>'''yiznod'''....''extremity'' |} : The following chart shows phrasal prepositions that can be created with the use of the spatial nouns in the previous section or other nouns. These phrases are considered idiomatic, because they are abbreviated by the omission of the definite article '''ha''' in front of the noun: :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Idiomatic Phrasal Prepositions ! At Somewhere !! To Somewhere !! From Somewhere |- | '''be abem bi'''....''at the top of'' || '''bu abem bi'''....''to the top of'' || '''bi abem bi'''....''from the top of'' |- | '''be obem bi'''....''at the bottom of'' || '''bu obem bi'''....''to the bottom of'' || '''bi obem bi'''....''from the top of'' |- | '''be ebem bi'''....''in the area between'' || '''bu ebem bi'''....''to the area between'' || '''bi ebem bi'''....''from the area between'' |- | '''be aybem bi'''....''above, over'' || '''bu aybem bi'''....''to the area above'' || '''bi aybem bi'''....''from the area above'' |- | '''be oybem bi'''....''below, under'' || '''bu oybem bi'''....''to the area below'' || '''bi oybem bi'''....''from the area below'' |- | '''be eybem bi'''....''amid'' || '''zye eybem bi'''....''through the midst of'' || '''bi eybem bi'''....''from the midst of'' |- | '''be zam bi'''....''at the front of'' || '''bu zam bi'''....''to the front of'' || '''bi zam bi'''....''from the front of'' |- | '''be zem bi'''....''at the middle of'' || '''bu zem bi'''....''to the middle of'' || '''bi zem bi'''....''from the middle of'' |- | '''be zom bi'''....''at the back of'' || '''bu zom bi'''....''to the back of'' || '''bi zom bi'''....''from the back of'' |- | '''be zim bi'''....''at the right of'' || '''bu zim bi'''....''to the right of'' || '''bi zim bi'''....''from the right of'' |- | '''be zum bi'''....''at the left of'' || '''bu zum bi'''....''to the left of'' || '''bi zum bi'''....''from the left of'' |- | '''be yubem bi'''....''in the vicinity of'' || '''bu yubem bi'''....''to the vicinity of'' || '''bi yubem bi'''....''from the vicinity of'' |- | '''be yibem bi'''....''at a distance from'' || '''bey azon bi'''....''by dint of'' || '''be avon bi'''....''in favor of'' |- | '''be ubem bi'''....''in the direction of'' || '''bay ux bi'''....''with assistance from'' || '''be byux bay'''....''in touch with'' |- | '''be yabem bi'''....''in the upper reaches of'' || '''be vyen bu'''....''in relation to'' || '''doytaxwa bay'''....''associated with'' |- | '''be yobem bi'''....''in the bottom area of'' || '''be ned bi'''....''on the level of'' || '''be mep bu'''....''on the way to, en route'' |- | '''be yebem bi'''....''on the inside of, inside'' || '''be oyebem bi'''....''on the outside of, outside'' || '''bu oyebem bi'''....''to the exterior of'' |- | '''bey mep bi'''....''by way of, via'' || '''be kum bi'''....''beside, at the side of'' || '''be ij bi'''....''at the start of'' |- | '''be uj bi'''....''at the end of'' || '''bey uxun bi'''....''by means of'' || '''be kunad bi'''....''at the edge of'' |- | '''be nod bi'''....''at the point of'' || '''be yebem bi'''....''at the interior of, inside'' || '''be oyebem bi'''....''at the exterior of, outside'' |- | '''be nad bay'''....''in line with'' || '''be uznod bi'''....''alongside'' || '''be tes bi'''....''in the sense of'' |- | '''be teas bi'''....''in the guise of'' || '''be san bi'''....''in the form of'' || '''be yanx bi'''....''in conjunction with'' |- | '''be bol bi'''....''in support of'' || '''be gab bu'''....''in addition to'' || '''be dyun bi'''....''in the name of'' |- | '''be avson bi'''....''on behalf of'' || '''be vyeson bi'''....''on the subject of'' || '''bay yux bi'''....''with the aid of'' |} == Adjectivized Prepositions == : Simple prepositions can be converted into adjectives by suffixing the adjectival ending '''-a'''. Here are some examples: ::* '''aba'''....''superior'' (ex. '''aba doyevam'''....''superior court'') ::* '''oba'''....''inferior'' ::* '''ayba'''....''upper'' ::* '''oyba'''....''lower'' ::* '''yaba'''....''high'' ::* '''yoba'''....''low'' ::* '''eba'''....''in-between'' ::* '''gaba'''....''additional'' ::* '''goba'''....''subtractive'' ::* '''gala'''....''multiple'' ::* '''gaza'''....''logarithmic'' ::* '''gea'''....''equal'' ::* '''gela'''....''same'' ::* '''iba'''....''away'' ::* '''ogea'''....''unequal'' ::* '''jaa'''....''anterior, prior'' ::* '''jea'''....''present'' ::* '''joa'''....''posterior'' ::* '''ava'''....''in favor, favorable, pro'' ::* '''eva'''....''neutral'' ::* '''ova'''....''against, unfavorable, counter'' ::* '''oyva'''....''opposite, inverse'' ::* '''yeba'''....''inner'' ::* '''oyeba'''....''outer'' ::* '''yeza'''....''flush'' ::* '''yuba'''....''near'' ::* '''yiba'''....''far, distant'' ::* '''yiza'''....''extreme, yonder'' ::* '''yuza'''....''circular'' ::* '''zaa'''....''front, anterior'' ::* '''zea'''....''medial, middle'' ::* '''zoa'''....''rear, back, posterior'' ::* '''zia'''....''left'' ::* '''zua'''....''right'' : A slight nuanced meaning can be achieved by suffixing '''-na''' instead of '''-a'''. ::* '''jana'''....''previous'' ::* '''jona'''....''next'' ::* '''zana'''....''next, anterior'' ::* '''zona'''....''last, posterior'' ::* '''ovna'''....''antithetical'' ::* '''yebna'''....''interior, internal'' ::* '''oyebna'''....''exterior, external'' ::* '''zena'''....''central'' ::* '''ebna'''....''intermediate'' ::* '''yizna'''....''ulterior, extreme'' ::* '''yuzna'''....''peripheral'' ::* '''yubna'''....''proximate'' == Prepositions and Adverbs as Verb Prefixes == : Prepositions and adverbs can be prefixed to verbs to alter their directionality. If such a prefix ends in '''-b''' and the verb begins with '''b''' or '''p''', the final '''b''' of the prefix is dropped. : Let take the verbs '''per''' (''to go'') and '''ber''' (''to put'') as examples: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Prepositional/Adverbial Prefixes on Verbs |- ! Preposition/Adverb !! '''per''' (intr.) !! '''ber''' (tr.) |- | '''ab'''....''on'' || '''aper'''....''to get on, to board'' || '''aber'''....''to put on, apply'' |- | '''ob'''....''off'' || '''oper'''....''to get off, to dismount'' || '''ober'''....''to take off, remove'' |- | '''eb'''....''between'' || '''eper'''....''to intervene'' || '''eber'''....''to block'' |- | '''ib'''....''away'' || '''iper'''....''to go away'' || '''iber'''....''to receive'' |- | '''ub'''....''toward'' || '''uper'''....''to come'' || '''uber'''....''to send'' |- | '''yab'''....''up'' || '''yaper'''....''to get up, to rise, to ascend'' || '''yaber'''....''to raise'' |- | '''yob'''....''down'' || '''yoper'''....''to get down, to descend'' || '''yober'''....''to lower'' |- | '''yeb'''....''in'' || '''yeper'''....''to get in, to enter'' || '''yeber'''....''to put in'' |- | '''oyeb'''....''out'' || '''oyeper'''....''to get out, to exit'' || '''oyeber'''....''to take out'' |- | '''yub'''....''near'' || '''yuper'''....''to get near, to approach'' || '''yuber'''....''to bring'' |- | '''yib'''....''far'' || '''yiper'''....''to retreat, to distance oneself'' || '''yiber'''....''to remove'' |- | '''yiz'''....''beyond'' || '''yizper'''....''to pass, exceed'' || '''yizber'''....''to pass'' |- | '''yuz'''....''around'' || '''yuzper'''....''to go around, to circulate'' || '''yuzber'''....''to encircle'' |- | '''yez'''....''along'' || '''yezper'''....''to go along'' || '''yezber'''....''to set along'' |- | '''yan'''....''together'' || '''yanper'''....''to get together, to meet'' || '''yanber'''....''to join'' |- | '''yon'''....''apart'' || '''yonper'''....''to go apart, to separate''|| '''yonber'''....''to separate'' |- | '''ja'''....''before'' || '''japer'''....''to go before, to precede'' || '''jaber'''....''to prepare'' |- | '''jo'''....''after'' || '''joper'''....''to go after, to follow''|| '''jober'''....''to postpone'' |- | '''za'''....''front'' || '''zaper'''....''to lead, to go in front''|| '''zaber'''....''to put in front'' |- | '''zo'''....''back'' || '''zoper'''....''to lag, to go in back'' || '''zober'''....''to delay'' |- | '''zay'''....''forward'' || '''zayper'''....''to go forward, to advance'' || '''zayber'''....''to put forward'' |- | '''zoy'''....''backward'' || '''zoyper'''....''to go back, to return'' || '''zoyber'''....''to put back'' |- | '''zey'''....''across'' || '''zeyper'''....''to go across, to transit'' || '''zeyber'''....''to transfer'' |} == Separable Verb Prefixes == : Verbal prefixes that are formed from prepositions and adverbs can usually be "unpacked", that is, treated as separate words. This works like separable verbs in German. The following table demonstrates this: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Separable Verb Prefixes |- ! Verb-bound !! Unpacked !! English |- | '''Mapuzlun <u>yuzpa</u> yata tam.''' || '''Mapuzlun <u>pa yuz</u> yata tam.'''||''A tornado circled/went around our house. (= went around)'' |- | '''Ha yux bi calk yeyfe <u>yobnogxwer</u>.''' || '''Ha yux bi cal yeyfe <u>nogxwer yob</u>.'''||''The use of carbon should be downscaled. (= scaled down)'' |- | '''Yat <u>zaybuxo</u> hia dovyabdren.''' || '''Yat <u>buxo</u> hia dovyabdren <u>zay</u>.'''||''We shall advance this legislation. (= push forward)'' |} <noinclude>{{Chapter navigation with TOC|Verbs|Conjunctions}}</noinclude> 7vp5pam7gj1facl6ads2yijs6wsh15u 4656010 4656008 2026-08-01T17:31:20Z Tyoyafud 6233 /* Single-word Prepositions */ 4656010 wikitext text/x-wiki <noinclude>{{status|100%}}</noinclude> : Prepositions are words that connect and show a relationship between a noun or noun phrase and the rest of the sentence. In Mirad, prepositions are simple monosyllables or phrases. Prepositions, as in English, are positioned before the noun or noun phrase they connect. == Single-word Prepositions == [[File:Prepositions of place.svg|thumb|]] : In Mirad, there are '''''single-word prepositions''''' and '''''compound prepositions'''''. : Here is a chart of single-word prepositions. Most are spatial, but some are temporal, relational, or mathematical. :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Simple Prepositions |- ! Positive !! Neutral !! Negative |- ! colspan="3" | Spatial |- | '''ab'''....''on, upon'' || '''eb'''....''between'' || '''ob'''....''off, off of'' |- | '''ayb'''....''over, above'' || '''eyb'''....''among, amid'' || '''oyb'''....''under, below'' |- | '''bu'''....''to'' || '''be'''....''at'' || '''bi'''....''from, of'' |- | '''byu'''....''as far as, up to'' || || '''byi'''....''starting with'' |- | '''ub'''....''toward'' || || '''ib'''....''away from'' |- | '''yub'''....''near'' || '''yeb'''....''in, inside''<br>'''oyeb'''....''outside''|| '''yib'''....''far from'' |- | '''yuz'''....''around'' || '''yez'''....''along'' || '''yiz'''....''beyond'' |- | '''za'''....''in front of'' || '''ze'''....''at the middle of'' || '''zo'''....''behind, in back of'' |- | '''zya'''....''throughout'' || '''zye'''....''through'' || |- | || '''zey'''....''across'' || |- ! colspan="3" | Temporal |- | '''ja'''....''before'' || '''je'''....''during, while'' || '''jo'''....''after'' |- | '''ju'''....''until'' || || '''ji'''....''since'' |- ! colspan="3" | Relational |- | '''av'''....''for'' || '''ev'''....''neither for nor against''<br>'''vyel'''....''than, as, compared to, about'' || '''ov'''....''against'' |- | '''ayv'''....''about'' || || '''oyv'''....''despite'' |- | '''ay'''....''and'' || '''ey'''....''or''<br>'''oey'''....''nor'' || '''oy'''....''but, except'' |- | '''bay'''....''with'' || '''bey'''....''by, via'' || '''boy'''....''without'' |- | || '''gel'''....''like, as''<br>'''ogel'''....''unlike'' || |- ! colspan="3" | Mathematical |- | || '''ge'''....''equal to''<br>'''oge'''....''unequal to'' || |- | '''gab'''....''plus, <big>+</big>'' || '''gaob'''....''plus or minus'' || '''gob'''....''minus, <big>-</big>'' |- | '''gal'''....''times, <big>×</big>'' || || '''gol'''....''divided by, <big>÷</big>'' |- | '''gar'''....''to the power of, <big>&circ;</big>'' || || '''gor'''....''to the root of, <big>√</big>'' |} : Some of the above prepositions can be negated by prefixing '''lo'''. For example: ::* '''jo'''....''after'' --> '''lojo'''....''no later than, by'' ::* '''ji'''....''since'' --> '''loji'''....''not since'' : Some of the above prepositions can be combined to form more complex relationships: ::* '''ab''' + '''bu''' = '''abu'''....''onto'' ::* '''ob''' + '''bi''' = '''obi'''....''off of'' ::* '''yeb''' + '''bu''' = '''yebu'''....''into'' ::* '''yeb''' + '''bi''' = '''yebi'''....''in from'' ::* '''oyeb''' + '''bu''' = '''oyebu'''....''out to'' ::* '''oyeb''' + '''bi''' = '''oyebi'''....''out from'' : The most versatile and useful single-word preposition is '''be''', which means ''at'' as a general locative when used literally, but is used before many nouns and noun phrases when the meaning is idiomatic. Some examples follow: ::* '''Yat se <u>be tam</u>.'''....''We are <u>at home</u>.'' (literal, general locative) ::* '''Yat se <u>be dropek</u>.'''....''We are <u>at war</u>.'' (idiomatic) ::* '''At teata et <u>be yibsin</u>.'''....''I saw you <u>on television</u>.'' (idiomatic) ::* '''<u>Be Ejna York</u> ese mamyabtomi.'''....''<u>In New York</u>, there are skyscrapers.'' (general locative) ::* '''At se <u>be mep</u>.'''....''I am <u>on the way/en route</u>.'' : The preposition '''bi''' can mean ''of'' or ''from''. It is used for possessive (''of'') and ablative (''from'') constructions. Here are some examples: ::* '''Hus se tam <u>bi</u> ifron.'''....''That is a house <u>of</u> worship.'' ::* '''At tyopa <u>bi</u> ha nam bu ata pur.'''....''I walked <u>from</u> the store to my car.'' ::* '''<u>Bi</u> him bu jobuj.'''....''<u>From</u> here to eternity.'' ::* '''Ha tajem <u>bi Tom</u> se him.'''....''<u>Tom's</u> birthplace is here.'' ::* '''His sa ha gwaifwa tuzun <u>bi eta teyd</u>.'''....''This was <u>your mother's</u> favorite piece of art.'' === Simple Preposition Examples === ::* '''Ha dyes se <u>ab</u> ha sem.'''....''The book is <u>on</u> the table.'' ::* '''Von pyosu <u>ob</u> ha abtamas!'''....''Don't fall <u>off</u> the roof!'' ::* '''Ha pati papa <u>ayb</u> ata tam.'''....''The birds flew <u>over</u> my house.'' ::* '''It kosa <u>oyb</u> ha yagsim.'''....''He hid <u>under</u> the bench.'' ::* '''Simbiu <u>eb</u> hut ay at.'''....''Take a seat <u>between</u> that person and me.'' ::* '''Yat teje <u>eyb</u> fiati.'''....''We live <u>among</u> good people.'' ::* '''Duhos se nax <u>bi</u> pop <u>bu</u> ay <u>bi</u> Boston?'''....''What is the cost <u>of</u> a trip <u>to</u> and <u>from</u> Boston?'' ::* '''His se ifek <u>bi</u> kyen.'''....''This is a game <u>of</u> luck.'' ::* '''Duven et sa <u>be</u> hua duzun zomoj?'''....''Were you <u>at</u> that concert last night?'' ::* '''Yit se embwa <u>be</u> ha zenod bi ha mapil.'''....''We are positioned <u>at</u> the hub of this storm.'' ::* '''Iyt tyopa <u>byu</u> ha mes.'''....''She walked <u>up to/as far as</u> the door.'' ::* '''Ha twob tojbwa <u>bey</u> goblar.'''....''The man was killed <u>with/by</u> a knife.'' ::* '''Et xu ga fiay ser <u>bay</u> at vyel <u>boy</u> at.'''....''You would do better to be <u>with</u> me than <u>without</u> me.'' ::* '''Teaxu <u>ib</u> ha amar.'''....''Look <u>away</u> from the sun.'' ::* '''Von teaxu iz <u>ub</u> ha man.'''....''Don't look directly <u>toward</u> the light.'' ::* '''Yibdaliru <u>ub</u> ha uj bi eta pop.'''....''Call me <u>toward</u> the end of your trip.'' ::* '''Emkyoxu eta pur <u>yub</u> ha tam.'''....''Park the car <u>near</u> the house.'' ::* '''At voy se <u>yib</u> et.'''....''I'm not <u>far from</u> you.'' ::* '''Iyt simpa <u>za</u> at.''' ....''She sat <u>in front of</u> me.'' ::* '''Et yeyfe simbier <u>zo</u> hua toyb.'''....''You should sit <u>in back of</u> that woman.'' ::* '''Embu has <u>zu</u> ha mis.'''....''Put it <u>to the left of</u> the door.'' ::* '''At simpo <u>zi</u> et.'''....''I will sit <u>to the right of</u> you.'' ::* '''Ha pat besa <u>ze</u> ha tim.'''....''The bird stayed <u>in the middle of</u> the room.'' ::* '''Mil upeye <u>zye</u> ha yijun.'''....''Water is coming <u>through</u> the opening.'' ::* '''Bikiu je pen <u>zey</u> ha domep.'''.....''Take care when going <u>across</u> the street.'' ::* '''Eso ivan <u>zya</u> ha mir.'''....''There will be happiness <u>throughout</u> the world.'' ::* '''His xwo <u>ja</u> zajub.''' ....''This will happen <u>before</u> tomorrow.'' ::* '''Esa mapil <u>je</u> ha moj.'''....''There was a storm <u>during</u> the night.'' ::* '''<u>Ju</u> zamaj.'''....''<u>Until</u> tomorrow morning.'' ::* '''At voy teataye et <u>ji</u> zoyejub.'''....''I have not seen you <u>since</u> last week.'' ::* '''Diwe xu hes <u>av</u> at.'''....''Please do something <u>for</u> me.'' ::* '''Hia dyes se <u>ayv</u> dalzeyntun.'''....''This book is <u>about</u> linguistics.'' ::* '''Hia dyen se din <u>vyel</u> ewa fiuti.'''....''This book is a story <u>about</u> two lovers.'' ::* '''Datan se ga fia <u>vyel</u> nas.'''....''Friendship is better <u>than</u> money.'' ::* '''Hos se ge fua <u>vyel</u> has hu yat xola zojab.'''....''Nothing is as bad <u>as</u> what we underwent last year.'' ::* '''Yit yexeya <u>ov</u> yat.'''....''They were working <u>against</u> us.'' ::* '''Ha vakdibut dopoxa at <u>oyv</u> ata azovdeyni.'''....''The police officer arrested me <u>despite</u> my protests.'' ::* '''At se <u>ev</u> hua doyafkexut.'''....''I am <u>neither for nor against/neutral toward</u> that candidate.'' ::* '''Et <u>ay</u> Bob yeyfe ser dati.'''....''You <u>and</u> Bob should be friends.'' ::* '''Duhot ako, et <u>ey</u> at?'''....''Who will win, you <u>or</u> I?'' ::* '''Hyat <u>oy</u> hwut ta ha dud.'''....''Everyone <u>but</u> that guy knew the answer.'' ::* '''Esa mag <u>yub</u> at.'''....''There was a fire <u>near</u> me.'':: ::* '''Voy ese fabi <u>yuz</u> ata tam.'''....''There are no trees <u>around</u> my house.'' ::* '''Et yafo tyoper <u>yez</u> ha kunad.'''....''You'll have to walk <u>along</u> the edge.'' ::* '''Ese gla mari <u>yiz</u> yata amar.'''....''There are many stars <u>beyond</u> our sun.'' ::* '''Ha fepet tyopa iz <u>zye</u> hia mes.'''....''The cat walked right <u>through</u> this door.'' ::* '''<u>Boy</u> yombiel, tej voy se fia.'''....''<u>Without</u> ice cream, life is not good.'' ::* '''Et voy se <u>gel</u> at.'''....''You are not <u>like</u> me.'' ::* '''Et se hyagla <u>ogel</u> at.'''....''You are totally <u>unlike</u> me.'' ::* '''Ewa <u>gab</u> ewa gese uwa.'''....''Two <u>plus</u> two equals four.'' ::* '''Uwa <u>gob</u> ewa gese ewa.'''....''Four <u>minus</u> two equals two.'' ::* '''Ewa <u>gal</u> ewa gese uwa.'''....''Two <u>times</u> two equals four.'' ::* '''Ewa <u>gol</u> ewa gese awa.'''....''Two <u>divided by</u> two equals one.'' ::* '''Uwa <u>gar</u> ewa gese asya.'''....''Four squared (4<sup>2</sup>) equals sixteen. (Lit: Four <u>to the power of</u> two...)'' ::* '''Alya <u>gor</u> e gese u.'''....''The square root (√16) of sixteen is four. (Lit: Sixteen <u>to the minus power of</u> two...)'' === Hybridized Prepositions === :: Some of the above prepositions can be hybridized: ::* '''<u>bui</u> taam'''....''<u>to and fro</u> home'' ::* '''<u>zui</u> ha dodalut'''....''<u>to the left and right of</u> the speaker'' ::* '''<u>gaob</u> glos'''....''<u>plus or minus</u> a bit'' ::* '''<u>aov</u> at'''....''<u>for or against</u> me'' ::* '''<u>aoyeb</u> ha tim'''....''<u>in and out of</u> the room'' ::* '''<u>aob</u> ha seem'''....''<u>on and off</u> the counter'' == Compound Prepositions == : '''''Compound prepositions''''' require the use of multiple morphemes, including prepositions, adverbs, and nouns. === Compound Prepositions Using Adverbs === : There are certain directional adverbs that can play a part in forming prepositional phrases, but cannot act as prepositions in and of themselves: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Adverbs Used in Compound Prepositions |- | '''iz'''....''directly, straight'' || '''uz'''....''indirectly, roundabout'' |- | '''yab'''....''up'' || '''yob'''....''down'' |- | '''zay'''....''forward, ahead'' || '''zoy'''....''back'' |- | '''zi'''....''right'' || '''zu'''....''left'' |} : The next chart lists some compound prepositions using the above adverbs or other combinations. Note that when combining two words, if the first word ends in '''b''' and the second begins with '''b''', one of the '''b''' 's is dropped. ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Compound Prepositions Using Adverbs and Other Prepositions |- ! Compound Preposition !! Example |- | '''yabu'''....''up to'' (< '''yab + bu''')|| '''It fu paper <u>yabu</u> ha mam.'''....''He would like to fly <u>up to</u> the sky.'' |- | '''yabi'''....''up from'' (< '''yab + bi''') || '''Su <u>yabi</u> ha sum.'''....''Get <u>up from</u> the bed.'' |- | '''yabey'''....''up (by way of)'' (< '''yab + bey''') || '''Yat tyoyapo <u>yabey</u> ha memyayz.'''....''We will walk <u>up</u> the hill.'' |- | '''yabe'''....''up at'' (< '''yab + be''')|| '''Ha kapet kaxwa <u>yabe</u> ha tam.'''....''The dog was found <u>up at</u> the house.'' |- | '''yabab'''....''up on, upon'' || '''Ha fepet se <u>yabab</u> ha abtamas.'''....''The cat is <u>up o</u>n the roof.'' |- | '''yobu'''....''down to'' (< '''yab + bu''') || '''Igpu <u>yobu</u> ha obmos.'''....''Run <u>down to</u> the cellar.'' |- | '''yobi'''....''down from'' (< '''yab + bi''') || '''Ha tat upa <u>yobi</u> ha mam.'''....''The angel came <u>down from</u> the sky.'' |- | '''yobey'''....''down (by way of)'' || '''Iyt igtyoyapa <u>yobey</u> ha meab.'''....''She ran <u>down</u> the hill.'' |- | '''yobe'''....''down at'' || '''Ha dyes kaxwa <u>yobe</u> ha obem.'''....''The book was found <u>down at</u> the bottom.'' |- | '''yobab'''....''down on'' || '''Has kaxwa <u>yobab</u> eta oybmos.'''....''It was found <u>down on</u> your floor.'' |- | '''yebu'''....''into'' || '''It pusa <u>yebu</u> ha mip.'''....''He jumped <u>into</u> the river.'' |- | '''yebi'''....''in from'' || '''Upu <u>yebi</u> ha oma oyebem.'''....''Come <u>in from</u> the cold outdoors.'' |- | '''oyebe'''....''out in/at'' || '''Ha tudi sa <u>oyebe</u> ha zodeym.'''....''The children were <u>out in</u> the backyard.'' |- | '''oyebi'''....''out from'' || '''Yepu <u>oyebi</u> ha om.'''....''Come in <u>out from</u> the cold.'' |- | '''oyebu'''....''out to'' || '''Yat fu peper <u>oyebu</u> ha meim.'''....''We'd like to ride <u>out to</u> the countryside.'' |- | '''izbu'''....''straight to'' || '''Pu <u>izbu</u> fyomir!''' ....''Go <u>straight to</u> hell!'' |- | '''izoybi'''....''right back from'' || '''It upu <u>izoybi</u> ha yexim.'''....''He came <u>right back from</u> the office.'' |- | '''zaybu'''....''on to, forth to, ahead to'' || '''Ha bixpur popa <u>zaybu</u> zona doym.'''....''The train traveled <u>on to</u> the next town.'' |- | '''zeybi'''....''across from'' || '''At simbeseya <u>zeybi</u> et.'''....''I was sitting <u>across from</u> you.'' |- | '''zoybi'''....''back from'' || '''At se <u>zoybi</u> ha yextim.'''....''I am <u>back from</u> the office.'' |- | '''zoybu'''....''back to'' || '''Pu <u>zoy bu</u> ha nam.'''....''Go <u>back to</u> the store.'' |- | '''zoybe'''....''back at'' || '''Duven et se <u>zoybe</u> tam?'''....''Are you <u>back at</u> home?'' |- | '''zubi'''....''to the left of'' || '''Ata tam se <u>zubi</u> hut.'''....''My house is <u>to the right of</u> that guy's.'' |- | '''zibi'''....''to the right of'' || '''Huta tam se <u>zibi</u> atas.'''....''That guy's house is <u>to the right of</u> mine.'' |} === Prepositional Phrases Using Spatial Nouns === : The following chart shows how prepositions and directional adverbs can be joined with the spatial ending '''-(e)m''' meaning ''place'' (or others) to be form spatial nouns, which, in turn, can be used in idiomatic prepositional phrases: :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Spatial Nouns Built on Prepositions or Adverbs |- | '''ab'''....''on'' || '''abem'''....''top''<br>'''abned'''....''upper surface''<br>'''abmas'''....''roof'' |- | '''eb'''....''between'' || '''ebem'''....''interstice''<br>'''ebjob'''....''interval''<br>'''ebnod'''....''intersection''<br>'''ebmas'''....''partition'' |- | '''ob'''....''off'' || '''obem'''....''bottom''<br>'''obned'''....''lower surface''<br>'''obmas'''....''foundation'' |- | '''ayb'''....''above'' || '''aybem'''....''area above''<br>'''aybmas'''....''ceiling'' |- | '''oyb'''....''below'' || '''oybem'''....''area below''<br>'''oybmas'''....''floor'' |- | '''eyb'''....''among'' || '''eybem'''....''midst'' |- | '''yab'''....''up'' || '''yabem'''....''upstairs, upper area''<br>'''yabneg'''....''top level'' |- | '''yob'''....''down'' || '''yobem'''....''downstairs, lower area''<br>'''yobneg'''....''bottom level'' |- | '''yeb'''....''in'' || '''yebem'''....''inside, interior, indoors''<br>'''yebnig'''....''inner space'' |- | '''oyeb'''....''out'' || '''oyebem'''....''outside, exterior, outdoors'' |- | '''za'''....''in front of'' || '''zam'''....''front, foreground''<br>'''zan'''....''face'' |- | '''ze'''....''in the middle of'' || '''zem'''....''middle''<br>'''zenod'''....''center, hub''<br>'''zen'''....''center''<br>'''zenad'''....''median'' |- | '''zo'''....''behind'' || '''zom'''....''back, rear, background'' |- | '''zi'''....''right'' || '''zim'''....''right area''<br>'''zikum'''....''left side''<br>'''ziizon'''....''right direction''<br>'''imer'''....''east'' |- | '''zu'''....''left'' || '''zum'''....''left area''<br>'''zukum'''....''left side''<br>'''zuizon'''....''left direction''<br>'''umer'''....''west'' |- | '''iz'''....''straight'' || '''izmep'''....''direct route''<br>'''iznad'''....''vector''<br>'''izon'''....''direction'' |- | '''uz'''....''indirectly'' || '''uzmep'''....''detour''<br>'''uznad'''....''curve''<br>'''uzon'''....''deviation'' |- | '''yub'''....''near'' || '''yubem'''....''vicinity''<br>'''yubkum'''....''near side''<br>'''yubaj'''....''recent past'' |- | '''yib'''....''far'' || '''yibem'''....''distance''<br>'''yibkum'''....''far side''<br>'''yibnod'''....''pole''<br>'''yiboj'''....''distant future'' |- | '''yuz'''....''around'' || '''yuzem'''....''perifery''<br>'''yuznad'''....''perimeter''<br>'''yuznig'''....''environment'' |- | '''yiz'''....''beyond'' || '''yizem'''....''area beyond''<br>'''yiznod'''....''extremity'' |} : The following chart shows phrasal prepositions that can be created with the use of the spatial nouns in the previous section or other nouns. These phrases are considered idiomatic, because they are abbreviated by the omission of the definite article '''ha''' in front of the noun: :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Idiomatic Phrasal Prepositions ! At Somewhere !! To Somewhere !! From Somewhere |- | '''be abem bi'''....''at the top of'' || '''bu abem bi'''....''to the top of'' || '''bi abem bi'''....''from the top of'' |- | '''be obem bi'''....''at the bottom of'' || '''bu obem bi'''....''to the bottom of'' || '''bi obem bi'''....''from the top of'' |- | '''be ebem bi'''....''in the area between'' || '''bu ebem bi'''....''to the area between'' || '''bi ebem bi'''....''from the area between'' |- | '''be aybem bi'''....''above, over'' || '''bu aybem bi'''....''to the area above'' || '''bi aybem bi'''....''from the area above'' |- | '''be oybem bi'''....''below, under'' || '''bu oybem bi'''....''to the area below'' || '''bi oybem bi'''....''from the area below'' |- | '''be eybem bi'''....''amid'' || '''zye eybem bi'''....''through the midst of'' || '''bi eybem bi'''....''from the midst of'' |- | '''be zam bi'''....''at the front of'' || '''bu zam bi'''....''to the front of'' || '''bi zam bi'''....''from the front of'' |- | '''be zem bi'''....''at the middle of'' || '''bu zem bi'''....''to the middle of'' || '''bi zem bi'''....''from the middle of'' |- | '''be zom bi'''....''at the back of'' || '''bu zom bi'''....''to the back of'' || '''bi zom bi'''....''from the back of'' |- | '''be zim bi'''....''at the right of'' || '''bu zim bi'''....''to the right of'' || '''bi zim bi'''....''from the right of'' |- | '''be zum bi'''....''at the left of'' || '''bu zum bi'''....''to the left of'' || '''bi zum bi'''....''from the left of'' |- | '''be yubem bi'''....''in the vicinity of'' || '''bu yubem bi'''....''to the vicinity of'' || '''bi yubem bi'''....''from the vicinity of'' |- | '''be yibem bi'''....''at a distance from'' || '''bey azon bi'''....''by dint of'' || '''be avon bi'''....''in favor of'' |- | '''be ubem bi'''....''in the direction of'' || '''bay ux bi'''....''with assistance from'' || '''be byux bay'''....''in touch with'' |- | '''be yabem bi'''....''in the upper reaches of'' || '''be vyen bu'''....''in relation to'' || '''doytaxwa bay'''....''associated with'' |- | '''be yobem bi'''....''in the bottom area of'' || '''be ned bi'''....''on the level of'' || '''be mep bu'''....''on the way to, en route'' |- | '''be yebem bi'''....''on the inside of, inside'' || '''be oyebem bi'''....''on the outside of, outside'' || '''bu oyebem bi'''....''to the exterior of'' |- | '''bey mep bi'''....''by way of, via'' || '''be kum bi'''....''beside, at the side of'' || '''be ij bi'''....''at the start of'' |- | '''be uj bi'''....''at the end of'' || '''bey uxun bi'''....''by means of'' || '''be kunad bi'''....''at the edge of'' |- | '''be nod bi'''....''at the point of'' || '''be yebem bi'''....''at the interior of, inside'' || '''be oyebem bi'''....''at the exterior of, outside'' |- | '''be nad bay'''....''in line with'' || '''be uznod bi'''....''alongside'' || '''be tes bi'''....''in the sense of'' |- | '''be teas bi'''....''in the guise of'' || '''be san bi'''....''in the form of'' || '''be yanx bi'''....''in conjunction with'' |- | '''be bol bi'''....''in support of'' || '''be gab bu'''....''in addition to'' || '''be dyun bi'''....''in the name of'' |- | '''be avson bi'''....''on behalf of'' || '''be vyeson bi'''....''on the subject of'' || '''bay yux bi'''....''with the aid of'' |} == Adjectivized Prepositions == : Simple prepositions can be converted into adjectives by suffixing the adjectival ending '''-a'''. Here are some examples: ::* '''aba'''....''superior'' (ex. '''aba doyevam'''....''superior court'') ::* '''oba'''....''inferior'' ::* '''ayba'''....''upper'' ::* '''oyba'''....''lower'' ::* '''yaba'''....''high'' ::* '''yoba'''....''low'' ::* '''eba'''....''in-between'' ::* '''gaba'''....''additional'' ::* '''goba'''....''subtractive'' ::* '''gala'''....''multiple'' ::* '''gaza'''....''logarithmic'' ::* '''gea'''....''equal'' ::* '''gela'''....''same'' ::* '''iba'''....''away'' ::* '''ogea'''....''unequal'' ::* '''jaa'''....''anterior, prior'' ::* '''jea'''....''present'' ::* '''joa'''....''posterior'' ::* '''ava'''....''in favor, favorable, pro'' ::* '''eva'''....''neutral'' ::* '''ova'''....''against, unfavorable, counter'' ::* '''oyva'''....''opposite, inverse'' ::* '''yeba'''....''inner'' ::* '''oyeba'''....''outer'' ::* '''yeza'''....''flush'' ::* '''yuba'''....''near'' ::* '''yiba'''....''far, distant'' ::* '''yiza'''....''extreme, yonder'' ::* '''yuza'''....''circular'' ::* '''zaa'''....''front, anterior'' ::* '''zea'''....''medial, middle'' ::* '''zoa'''....''rear, back, posterior'' ::* '''zia'''....''left'' ::* '''zua'''....''right'' : A slight nuanced meaning can be achieved by suffixing '''-na''' instead of '''-a'''. ::* '''jana'''....''previous'' ::* '''jona'''....''next'' ::* '''zana'''....''next, anterior'' ::* '''zona'''....''last, posterior'' ::* '''ovna'''....''antithetical'' ::* '''yebna'''....''interior, internal'' ::* '''oyebna'''....''exterior, external'' ::* '''zena'''....''central'' ::* '''ebna'''....''intermediate'' ::* '''yizna'''....''ulterior, extreme'' ::* '''yuzna'''....''peripheral'' ::* '''yubna'''....''proximate'' == Prepositions and Adverbs as Verb Prefixes == : Prepositions and adverbs can be prefixed to verbs to alter their directionality. If such a prefix ends in '''-b''' and the verb begins with '''b''' or '''p''', the final '''b''' of the prefix is dropped. : Let take the verbs '''per''' (''to go'') and '''ber''' (''to put'') as examples: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Prepositional/Adverbial Prefixes on Verbs |- ! Preposition/Adverb !! '''per''' (intr.) !! '''ber''' (tr.) |- | '''ab'''....''on'' || '''aper'''....''to get on, to board'' || '''aber'''....''to put on, apply'' |- | '''ob'''....''off'' || '''oper'''....''to get off, to dismount'' || '''ober'''....''to take off, remove'' |- | '''eb'''....''between'' || '''eper'''....''to intervene'' || '''eber'''....''to block'' |- | '''ib'''....''away'' || '''iper'''....''to go away'' || '''iber'''....''to receive'' |- | '''ub'''....''toward'' || '''uper'''....''to come'' || '''uber'''....''to send'' |- | '''yab'''....''up'' || '''yaper'''....''to get up, to rise, to ascend'' || '''yaber'''....''to raise'' |- | '''yob'''....''down'' || '''yoper'''....''to get down, to descend'' || '''yober'''....''to lower'' |- | '''yeb'''....''in'' || '''yeper'''....''to get in, to enter'' || '''yeber'''....''to put in'' |- | '''oyeb'''....''out'' || '''oyeper'''....''to get out, to exit'' || '''oyeber'''....''to take out'' |- | '''yub'''....''near'' || '''yuper'''....''to get near, to approach'' || '''yuber'''....''to bring'' |- | '''yib'''....''far'' || '''yiper'''....''to retreat, to distance oneself'' || '''yiber'''....''to remove'' |- | '''yiz'''....''beyond'' || '''yizper'''....''to pass, exceed'' || '''yizber'''....''to pass'' |- | '''yuz'''....''around'' || '''yuzper'''....''to go around, to circulate'' || '''yuzber'''....''to encircle'' |- | '''yez'''....''along'' || '''yezper'''....''to go along'' || '''yezber'''....''to set along'' |- | '''yan'''....''together'' || '''yanper'''....''to get together, to meet'' || '''yanber'''....''to join'' |- | '''yon'''....''apart'' || '''yonper'''....''to go apart, to separate''|| '''yonber'''....''to separate'' |- | '''ja'''....''before'' || '''japer'''....''to go before, to precede'' || '''jaber'''....''to prepare'' |- | '''jo'''....''after'' || '''joper'''....''to go after, to follow''|| '''jober'''....''to postpone'' |- | '''za'''....''front'' || '''zaper'''....''to lead, to go in front''|| '''zaber'''....''to put in front'' |- | '''zo'''....''back'' || '''zoper'''....''to lag, to go in back'' || '''zober'''....''to delay'' |- | '''zay'''....''forward'' || '''zayper'''....''to go forward, to advance'' || '''zayber'''....''to put forward'' |- | '''zoy'''....''backward'' || '''zoyper'''....''to go back, to return'' || '''zoyber'''....''to put back'' |- | '''zey'''....''across'' || '''zeyper'''....''to go across, to transit'' || '''zeyber'''....''to transfer'' |} == Separable Verb Prefixes == : Verbal prefixes that are formed from prepositions and adverbs can usually be "unpacked", that is, treated as separate words. This works like separable verbs in German. The following table demonstrates this: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Separable Verb Prefixes |- ! Verb-bound !! Unpacked !! English |- | '''Mapuzlun <u>yuzpa</u> yata tam.''' || '''Mapuzlun <u>pa yuz</u> yata tam.'''||''A tornado circled/went around our house. (= went around)'' |- | '''Ha yux bi calk yeyfe <u>yobnogxwer</u>.''' || '''Ha yux bi cal yeyfe <u>nogxwer yob</u>.'''||''The use of carbon should be downscaled. (= scaled down)'' |- | '''Yat <u>zaybuxo</u> hia dovyabdren.''' || '''Yat <u>buxo</u> hia dovyabdren <u>zay</u>.'''||''We shall advance this legislation. (= push forward)'' |} <noinclude>{{Chapter navigation with TOC|Verbs|Conjunctions}}</noinclude> ajho8zv2mr40qguyepsg4ecj7q1emcb 4656011 4656010 2026-08-01T17:39:31Z Tyoyafud 6233 /* Compound Prepositions Using Adverbs */ 4656011 wikitext text/x-wiki <noinclude>{{status|100%}}</noinclude> : Prepositions are words that connect and show a relationship between a noun or noun phrase and the rest of the sentence. In Mirad, prepositions are simple monosyllables or phrases. Prepositions, as in English, are positioned before the noun or noun phrase they connect. == Single-word Prepositions == [[File:Prepositions of place.svg|thumb|]] : In Mirad, there are '''''single-word prepositions''''' and '''''compound prepositions'''''. : Here is a chart of single-word prepositions. Most are spatial, but some are temporal, relational, or mathematical. :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Simple Prepositions |- ! Positive !! Neutral !! Negative |- ! colspan="3" | Spatial |- | '''ab'''....''on, upon'' || '''eb'''....''between'' || '''ob'''....''off, off of'' |- | '''ayb'''....''over, above'' || '''eyb'''....''among, amid'' || '''oyb'''....''under, below'' |- | '''bu'''....''to'' || '''be'''....''at'' || '''bi'''....''from, of'' |- | '''byu'''....''as far as, up to'' || || '''byi'''....''starting with'' |- | '''ub'''....''toward'' || || '''ib'''....''away from'' |- | '''yub'''....''near'' || '''yeb'''....''in, inside''<br>'''oyeb'''....''outside''|| '''yib'''....''far from'' |- | '''yuz'''....''around'' || '''yez'''....''along'' || '''yiz'''....''beyond'' |- | '''za'''....''in front of'' || '''ze'''....''at the middle of'' || '''zo'''....''behind, in back of'' |- | '''zya'''....''throughout'' || '''zye'''....''through'' || |- | || '''zey'''....''across'' || |- ! colspan="3" | Temporal |- | '''ja'''....''before'' || '''je'''....''during, while'' || '''jo'''....''after'' |- | '''ju'''....''until'' || || '''ji'''....''since'' |- ! colspan="3" | Relational |- | '''av'''....''for'' || '''ev'''....''neither for nor against''<br>'''vyel'''....''than, as, compared to, about'' || '''ov'''....''against'' |- | '''ayv'''....''about'' || || '''oyv'''....''despite'' |- | '''ay'''....''and'' || '''ey'''....''or''<br>'''oey'''....''nor'' || '''oy'''....''but, except'' |- | '''bay'''....''with'' || '''bey'''....''by, via'' || '''boy'''....''without'' |- | || '''gel'''....''like, as''<br>'''ogel'''....''unlike'' || |- ! colspan="3" | Mathematical |- | || '''ge'''....''equal to''<br>'''oge'''....''unequal to'' || |- | '''gab'''....''plus, <big>+</big>'' || '''gaob'''....''plus or minus'' || '''gob'''....''minus, <big>-</big>'' |- | '''gal'''....''times, <big>×</big>'' || || '''gol'''....''divided by, <big>÷</big>'' |- | '''gar'''....''to the power of, <big>&circ;</big>'' || || '''gor'''....''to the root of, <big>√</big>'' |} : Some of the above prepositions can be negated by prefixing '''lo'''. For example: ::* '''jo'''....''after'' --> '''lojo'''....''no later than, by'' ::* '''ji'''....''since'' --> '''loji'''....''not since'' : Some of the above prepositions can be combined to form more complex relationships: ::* '''ab''' + '''bu''' = '''abu'''....''onto'' ::* '''ob''' + '''bi''' = '''obi'''....''off of'' ::* '''yeb''' + '''bu''' = '''yebu'''....''into'' ::* '''yeb''' + '''bi''' = '''yebi'''....''in from'' ::* '''oyeb''' + '''bu''' = '''oyebu'''....''out to'' ::* '''oyeb''' + '''bi''' = '''oyebi'''....''out from'' : The most versatile and useful single-word preposition is '''be''', which means ''at'' as a general locative when used literally, but is used before many nouns and noun phrases when the meaning is idiomatic. Some examples follow: ::* '''Yat se <u>be tam</u>.'''....''We are <u>at home</u>.'' (literal, general locative) ::* '''Yat se <u>be dropek</u>.'''....''We are <u>at war</u>.'' (idiomatic) ::* '''At teata et <u>be yibsin</u>.'''....''I saw you <u>on television</u>.'' (idiomatic) ::* '''<u>Be Ejna York</u> ese mamyabtomi.'''....''<u>In New York</u>, there are skyscrapers.'' (general locative) ::* '''At se <u>be mep</u>.'''....''I am <u>on the way/en route</u>.'' : The preposition '''bi''' can mean ''of'' or ''from''. It is used for possessive (''of'') and ablative (''from'') constructions. Here are some examples: ::* '''Hus se tam <u>bi</u> ifron.'''....''That is a house <u>of</u> worship.'' ::* '''At tyopa <u>bi</u> ha nam bu ata pur.'''....''I walked <u>from</u> the store to my car.'' ::* '''<u>Bi</u> him bu jobuj.'''....''<u>From</u> here to eternity.'' ::* '''Ha tajem <u>bi Tom</u> se him.'''....''<u>Tom's</u> birthplace is here.'' ::* '''His sa ha gwaifwa tuzun <u>bi eta teyd</u>.'''....''This was <u>your mother's</u> favorite piece of art.'' === Simple Preposition Examples === ::* '''Ha dyes se <u>ab</u> ha sem.'''....''The book is <u>on</u> the table.'' ::* '''Von pyosu <u>ob</u> ha abtamas!'''....''Don't fall <u>off</u> the roof!'' ::* '''Ha pati papa <u>ayb</u> ata tam.'''....''The birds flew <u>over</u> my house.'' ::* '''It kosa <u>oyb</u> ha yagsim.'''....''He hid <u>under</u> the bench.'' ::* '''Simbiu <u>eb</u> hut ay at.'''....''Take a seat <u>between</u> that person and me.'' ::* '''Yat teje <u>eyb</u> fiati.'''....''We live <u>among</u> good people.'' ::* '''Duhos se nax <u>bi</u> pop <u>bu</u> ay <u>bi</u> Boston?'''....''What is the cost <u>of</u> a trip <u>to</u> and <u>from</u> Boston?'' ::* '''His se ifek <u>bi</u> kyen.'''....''This is a game <u>of</u> luck.'' ::* '''Duven et sa <u>be</u> hua duzun zomoj?'''....''Were you <u>at</u> that concert last night?'' ::* '''Yit se embwa <u>be</u> ha zenod bi ha mapil.'''....''We are positioned <u>at</u> the hub of this storm.'' ::* '''Iyt tyopa <u>byu</u> ha mes.'''....''She walked <u>up to/as far as</u> the door.'' ::* '''Ha twob tojbwa <u>bey</u> goblar.'''....''The man was killed <u>with/by</u> a knife.'' ::* '''Et xu ga fiay ser <u>bay</u> at vyel <u>boy</u> at.'''....''You would do better to be <u>with</u> me than <u>without</u> me.'' ::* '''Teaxu <u>ib</u> ha amar.'''....''Look <u>away</u> from the sun.'' ::* '''Von teaxu iz <u>ub</u> ha man.'''....''Don't look directly <u>toward</u> the light.'' ::* '''Yibdaliru <u>ub</u> ha uj bi eta pop.'''....''Call me <u>toward</u> the end of your trip.'' ::* '''Emkyoxu eta pur <u>yub</u> ha tam.'''....''Park the car <u>near</u> the house.'' ::* '''At voy se <u>yib</u> et.'''....''I'm not <u>far from</u> you.'' ::* '''Iyt simpa <u>za</u> at.''' ....''She sat <u>in front of</u> me.'' ::* '''Et yeyfe simbier <u>zo</u> hua toyb.'''....''You should sit <u>in back of</u> that woman.'' ::* '''Embu has <u>zu</u> ha mis.'''....''Put it <u>to the left of</u> the door.'' ::* '''At simpo <u>zi</u> et.'''....''I will sit <u>to the right of</u> you.'' ::* '''Ha pat besa <u>ze</u> ha tim.'''....''The bird stayed <u>in the middle of</u> the room.'' ::* '''Mil upeye <u>zye</u> ha yijun.'''....''Water is coming <u>through</u> the opening.'' ::* '''Bikiu je pen <u>zey</u> ha domep.'''.....''Take care when going <u>across</u> the street.'' ::* '''Eso ivan <u>zya</u> ha mir.'''....''There will be happiness <u>throughout</u> the world.'' ::* '''His xwo <u>ja</u> zajub.''' ....''This will happen <u>before</u> tomorrow.'' ::* '''Esa mapil <u>je</u> ha moj.'''....''There was a storm <u>during</u> the night.'' ::* '''<u>Ju</u> zamaj.'''....''<u>Until</u> tomorrow morning.'' ::* '''At voy teataye et <u>ji</u> zoyejub.'''....''I have not seen you <u>since</u> last week.'' ::* '''Diwe xu hes <u>av</u> at.'''....''Please do something <u>for</u> me.'' ::* '''Hia dyes se <u>ayv</u> dalzeyntun.'''....''This book is <u>about</u> linguistics.'' ::* '''Hia dyen se din <u>vyel</u> ewa fiuti.'''....''This book is a story <u>about</u> two lovers.'' ::* '''Datan se ga fia <u>vyel</u> nas.'''....''Friendship is better <u>than</u> money.'' ::* '''Hos se ge fua <u>vyel</u> has hu yat xola zojab.'''....''Nothing is as bad <u>as</u> what we underwent last year.'' ::* '''Yit yexeya <u>ov</u> yat.'''....''They were working <u>against</u> us.'' ::* '''Ha vakdibut dopoxa at <u>oyv</u> ata azovdeyni.'''....''The police officer arrested me <u>despite</u> my protests.'' ::* '''At se <u>ev</u> hua doyafkexut.'''....''I am <u>neither for nor against/neutral toward</u> that candidate.'' ::* '''Et <u>ay</u> Bob yeyfe ser dati.'''....''You <u>and</u> Bob should be friends.'' ::* '''Duhot ako, et <u>ey</u> at?'''....''Who will win, you <u>or</u> I?'' ::* '''Hyat <u>oy</u> hwut ta ha dud.'''....''Everyone <u>but</u> that guy knew the answer.'' ::* '''Esa mag <u>yub</u> at.'''....''There was a fire <u>near</u> me.'':: ::* '''Voy ese fabi <u>yuz</u> ata tam.'''....''There are no trees <u>around</u> my house.'' ::* '''Et yafo tyoper <u>yez</u> ha kunad.'''....''You'll have to walk <u>along</u> the edge.'' ::* '''Ese gla mari <u>yiz</u> yata amar.'''....''There are many stars <u>beyond</u> our sun.'' ::* '''Ha fepet tyopa iz <u>zye</u> hia mes.'''....''The cat walked right <u>through</u> this door.'' ::* '''<u>Boy</u> yombiel, tej voy se fia.'''....''<u>Without</u> ice cream, life is not good.'' ::* '''Et voy se <u>gel</u> at.'''....''You are not <u>like</u> me.'' ::* '''Et se hyagla <u>ogel</u> at.'''....''You are totally <u>unlike</u> me.'' ::* '''Ewa <u>gab</u> ewa gese uwa.'''....''Two <u>plus</u> two equals four.'' ::* '''Uwa <u>gob</u> ewa gese ewa.'''....''Four <u>minus</u> two equals two.'' ::* '''Ewa <u>gal</u> ewa gese uwa.'''....''Two <u>times</u> two equals four.'' ::* '''Ewa <u>gol</u> ewa gese awa.'''....''Two <u>divided by</u> two equals one.'' ::* '''Uwa <u>gar</u> ewa gese asya.'''....''Four squared (4<sup>2</sup>) equals sixteen. (Lit: Four <u>to the power of</u> two...)'' ::* '''Alya <u>gor</u> e gese u.'''....''The square root (√16) of sixteen is four. (Lit: Sixteen <u>to the minus power of</u> two...)'' === Hybridized Prepositions === :: Some of the above prepositions can be hybridized: ::* '''<u>bui</u> taam'''....''<u>to and fro</u> home'' ::* '''<u>zui</u> ha dodalut'''....''<u>to the left and right of</u> the speaker'' ::* '''<u>gaob</u> glos'''....''<u>plus or minus</u> a bit'' ::* '''<u>aov</u> at'''....''<u>for or against</u> me'' ::* '''<u>aoyeb</u> ha tim'''....''<u>in and out of</u> the room'' ::* '''<u>aob</u> ha seem'''....''<u>on and off</u> the counter'' == Compound Prepositions == : '''''Compound prepositions''''' require the use of multiple morphemes, including prepositions, adverbs, and nouns. === Compound Prepositions Using Adverbs === : There are certain directional adverbs that can play a part in forming prepositional phrases, but cannot act as prepositions in and of themselves: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Adverbs Used in Compound Prepositions |- | '''iz'''....''directly, straight'' || '''uz'''....''indirectly, roundabout'' |- | '''yab'''....''up'' || '''yob'''....''down'' |- | '''yan'''....''together'' || '''yon'''....''apart'' |- | '''zay'''....''forward, ahead'' || '''zoy'''....''back'' |- | '''zi'''....''right'' || '''zu'''....''left'' |} : The next chart lists some compound prepositions using the above adverbs or other combinations. Note that when combining two words, if the first word ends in '''b''' and the second begins with '''b''', one of the '''b''' 's is dropped. ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Compound Prepositions Using Adverbs and Other Prepositions |- ! Compound Preposition !! Example |- | '''yabu'''....''up to'' (< '''yab + bu''')|| '''It fu paper <u>yabu</u> ha mam.'''....''He would like to fly <u>up to</u> the sky.'' |- | '''yabi'''....''up from'' (< '''yab + bi''') || '''Su <u>yabi</u> ha sum.'''....''Get <u>up from</u> the bed.'' |- | '''yabey'''....''up (by way of)'' (< '''yab + bey''') || '''Yat tyoyapo <u>yabey</u> ha memyayz.'''....''We will walk <u>up</u> the hill.'' |- | '''yabe'''....''up at'' (< '''yab + be''')|| '''Ha kapet kaxwa <u>yabe</u> ha tam.'''....''The dog was found <u>up at</u> the house.'' |- | '''yab ab'''....''up on, upon'' || '''Ha fepet se <u>yab ab</u> ha abtamas.'''....''The cat is <u>up o</u>n the roof.'' |- | '''yobu'''....''down to'' (< '''yab + bu''') || '''Igpu <u>yobu</u> ha obmos.'''....''Run <u>down to</u> the cellar.'' |- | '''yobi'''....''down from'' (< '''yab + bi''') || '''Ha tat upa <u>yobi</u> ha mam.'''....''The angel came <u>down from</u> the sky.'' |- | '''yobey'''....''down (by way of)'' || '''Iyt igtyoyapa <u>yobey</u> ha meab.'''....''She ran <u>down</u> the hill.'' |- | '''yobe'''....''down at'' || '''Ha dyes kaxwa <u>yobe</u> ha obem.'''....''The book was found <u>down at</u> the bottom.'' |- | '''yob ab'''....''down on'' || '''Has kaxwa <u>yob ab</u> eta oybmos.'''....''It was found <u>down on</u> your floor.'' |- | '''yebu'''....''into'' || '''It pusa <u>yebu</u> ha mip.'''....''He jumped <u>into</u> the river.'' |- | '''yebi'''....''in from'' || '''Upu <u>yebi</u> ha oma oyebem.'''....''Come <u>in from</u> the cold outdoors.'' |- | '''oyebe'''....''out in/at'' || '''Ha tudi sa <u>oyebe</u> ha zodeym.'''....''The children were <u>out in</u> the backyard.'' |- | '''oyebi'''....''out from'' || '''Yepu <u>oyebi</u> ha om.'''....''Come in <u>out from</u> the cold.'' |- | '''oyebu'''....''out to'' || '''Yat fu peper <u>oyebu</u> ha meim.'''....''We'd like to ride <u>out to</u> the countryside.'' |- | '''iz bu'''....''straight to'' || '''Pu <u>iz bu</u> fyomir!''' ....''Go <u>straight to</u> hell!'' |- | '''iz zoy bi'''....''right back from'' || '''It upu <u>iz zoy bi</u> ha yexim.'''....''He came <u>right back from</u> the office.'' |- | '''zay bu'''....''on to, forth to, ahead to'' || '''Ha bixpur popa <u>zay bu</u> zona doym.'''....''The train traveled <u>on to</u> the next town.'' |- | '''zey bi'''....''across from'' || '''At simbeseya <u>zey bi</u> et.'''....''I was sitting <u>across from</u> you.'' |- | '''zoy bi'''....''back from'' || '''At se <u>zoy bi</u> ha yextim.'''....''I am <u>back from</u> the office.'' |- | '''zoy bu'''....''back to'' || '''Pu <u>zoy bu</u> ha nam.'''....''Go <u>back to</u> the store.'' |- | '''zoy be'''....''back at'' || '''Duven et se <u>zoy be</u> tam?'''....''Are you <u>back at</u> home?'' |- | '''zu bi'''....''to the left of'' || '''Ata tam se <u>zu bi</u> hut.'''....''My house is <u>to the right of</u> that guy's.'' |- | '''zi bi'''....''to the right of'' || '''Huta tam se <u>zi bi</u> atas.'''....''That guy's house is <u>to the right of</u> mine.'' |- | '''yan bay'''....''together with'' || '''Wit pa <u>yan</u> bay at bu ha dyezam.'''....''He went <u>together with</u> me to the theater. |- | '''yon bi'''....''apart from'' || '''<u>Yon bi</u> at, hyot ta ha dud.'''....''<u>Apart from</u> me, nobody knew the answer.'' |} === Prepositional Phrases Using Spatial Nouns === : The following chart shows how prepositions and directional adverbs can be joined with the spatial ending '''-(e)m''' meaning ''place'' (or others) to be form spatial nouns, which, in turn, can be used in idiomatic prepositional phrases: :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Spatial Nouns Built on Prepositions or Adverbs |- | '''ab'''....''on'' || '''abem'''....''top''<br>'''abned'''....''upper surface''<br>'''abmas'''....''roof'' |- | '''eb'''....''between'' || '''ebem'''....''interstice''<br>'''ebjob'''....''interval''<br>'''ebnod'''....''intersection''<br>'''ebmas'''....''partition'' |- | '''ob'''....''off'' || '''obem'''....''bottom''<br>'''obned'''....''lower surface''<br>'''obmas'''....''foundation'' |- | '''ayb'''....''above'' || '''aybem'''....''area above''<br>'''aybmas'''....''ceiling'' |- | '''oyb'''....''below'' || '''oybem'''....''area below''<br>'''oybmas'''....''floor'' |- | '''eyb'''....''among'' || '''eybem'''....''midst'' |- | '''yab'''....''up'' || '''yabem'''....''upstairs, upper area''<br>'''yabneg'''....''top level'' |- | '''yob'''....''down'' || '''yobem'''....''downstairs, lower area''<br>'''yobneg'''....''bottom level'' |- | '''yeb'''....''in'' || '''yebem'''....''inside, interior, indoors''<br>'''yebnig'''....''inner space'' |- | '''oyeb'''....''out'' || '''oyebem'''....''outside, exterior, outdoors'' |- | '''za'''....''in front of'' || '''zam'''....''front, foreground''<br>'''zan'''....''face'' |- | '''ze'''....''in the middle of'' || '''zem'''....''middle''<br>'''zenod'''....''center, hub''<br>'''zen'''....''center''<br>'''zenad'''....''median'' |- | '''zo'''....''behind'' || '''zom'''....''back, rear, background'' |- | '''zi'''....''right'' || '''zim'''....''right area''<br>'''zikum'''....''left side''<br>'''ziizon'''....''right direction''<br>'''imer'''....''east'' |- | '''zu'''....''left'' || '''zum'''....''left area''<br>'''zukum'''....''left side''<br>'''zuizon'''....''left direction''<br>'''umer'''....''west'' |- | '''iz'''....''straight'' || '''izmep'''....''direct route''<br>'''iznad'''....''vector''<br>'''izon'''....''direction'' |- | '''uz'''....''indirectly'' || '''uzmep'''....''detour''<br>'''uznad'''....''curve''<br>'''uzon'''....''deviation'' |- | '''yub'''....''near'' || '''yubem'''....''vicinity''<br>'''yubkum'''....''near side''<br>'''yubaj'''....''recent past'' |- | '''yib'''....''far'' || '''yibem'''....''distance''<br>'''yibkum'''....''far side''<br>'''yibnod'''....''pole''<br>'''yiboj'''....''distant future'' |- | '''yuz'''....''around'' || '''yuzem'''....''perifery''<br>'''yuznad'''....''perimeter''<br>'''yuznig'''....''environment'' |- | '''yiz'''....''beyond'' || '''yizem'''....''area beyond''<br>'''yiznod'''....''extremity'' |} : The following chart shows phrasal prepositions that can be created with the use of the spatial nouns in the previous section or other nouns. These phrases are considered idiomatic, because they are abbreviated by the omission of the definite article '''ha''' in front of the noun: :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Idiomatic Phrasal Prepositions ! At Somewhere !! To Somewhere !! From Somewhere |- | '''be abem bi'''....''at the top of'' || '''bu abem bi'''....''to the top of'' || '''bi abem bi'''....''from the top of'' |- | '''be obem bi'''....''at the bottom of'' || '''bu obem bi'''....''to the bottom of'' || '''bi obem bi'''....''from the top of'' |- | '''be ebem bi'''....''in the area between'' || '''bu ebem bi'''....''to the area between'' || '''bi ebem bi'''....''from the area between'' |- | '''be aybem bi'''....''above, over'' || '''bu aybem bi'''....''to the area above'' || '''bi aybem bi'''....''from the area above'' |- | '''be oybem bi'''....''below, under'' || '''bu oybem bi'''....''to the area below'' || '''bi oybem bi'''....''from the area below'' |- | '''be eybem bi'''....''amid'' || '''zye eybem bi'''....''through the midst of'' || '''bi eybem bi'''....''from the midst of'' |- | '''be zam bi'''....''at the front of'' || '''bu zam bi'''....''to the front of'' || '''bi zam bi'''....''from the front of'' |- | '''be zem bi'''....''at the middle of'' || '''bu zem bi'''....''to the middle of'' || '''bi zem bi'''....''from the middle of'' |- | '''be zom bi'''....''at the back of'' || '''bu zom bi'''....''to the back of'' || '''bi zom bi'''....''from the back of'' |- | '''be zim bi'''....''at the right of'' || '''bu zim bi'''....''to the right of'' || '''bi zim bi'''....''from the right of'' |- | '''be zum bi'''....''at the left of'' || '''bu zum bi'''....''to the left of'' || '''bi zum bi'''....''from the left of'' |- | '''be yubem bi'''....''in the vicinity of'' || '''bu yubem bi'''....''to the vicinity of'' || '''bi yubem bi'''....''from the vicinity of'' |- | '''be yibem bi'''....''at a distance from'' || '''bey azon bi'''....''by dint of'' || '''be avon bi'''....''in favor of'' |- | '''be ubem bi'''....''in the direction of'' || '''bay ux bi'''....''with assistance from'' || '''be byux bay'''....''in touch with'' |- | '''be yabem bi'''....''in the upper reaches of'' || '''be vyen bu'''....''in relation to'' || '''doytaxwa bay'''....''associated with'' |- | '''be yobem bi'''....''in the bottom area of'' || '''be ned bi'''....''on the level of'' || '''be mep bu'''....''on the way to, en route'' |- | '''be yebem bi'''....''on the inside of, inside'' || '''be oyebem bi'''....''on the outside of, outside'' || '''bu oyebem bi'''....''to the exterior of'' |- | '''bey mep bi'''....''by way of, via'' || '''be kum bi'''....''beside, at the side of'' || '''be ij bi'''....''at the start of'' |- | '''be uj bi'''....''at the end of'' || '''bey uxun bi'''....''by means of'' || '''be kunad bi'''....''at the edge of'' |- | '''be nod bi'''....''at the point of'' || '''be yebem bi'''....''at the interior of, inside'' || '''be oyebem bi'''....''at the exterior of, outside'' |- | '''be nad bay'''....''in line with'' || '''be uznod bi'''....''alongside'' || '''be tes bi'''....''in the sense of'' |- | '''be teas bi'''....''in the guise of'' || '''be san bi'''....''in the form of'' || '''be yanx bi'''....''in conjunction with'' |- | '''be bol bi'''....''in support of'' || '''be gab bu'''....''in addition to'' || '''be dyun bi'''....''in the name of'' |- | '''be avson bi'''....''on behalf of'' || '''be vyeson bi'''....''on the subject of'' || '''bay yux bi'''....''with the aid of'' |} == Adjectivized Prepositions == : Simple prepositions can be converted into adjectives by suffixing the adjectival ending '''-a'''. Here are some examples: ::* '''aba'''....''superior'' (ex. '''aba doyevam'''....''superior court'') ::* '''oba'''....''inferior'' ::* '''ayba'''....''upper'' ::* '''oyba'''....''lower'' ::* '''yaba'''....''high'' ::* '''yoba'''....''low'' ::* '''eba'''....''in-between'' ::* '''gaba'''....''additional'' ::* '''goba'''....''subtractive'' ::* '''gala'''....''multiple'' ::* '''gaza'''....''logarithmic'' ::* '''gea'''....''equal'' ::* '''gela'''....''same'' ::* '''iba'''....''away'' ::* '''ogea'''....''unequal'' ::* '''jaa'''....''anterior, prior'' ::* '''jea'''....''present'' ::* '''joa'''....''posterior'' ::* '''ava'''....''in favor, favorable, pro'' ::* '''eva'''....''neutral'' ::* '''ova'''....''against, unfavorable, counter'' ::* '''oyva'''....''opposite, inverse'' ::* '''yeba'''....''inner'' ::* '''oyeba'''....''outer'' ::* '''yeza'''....''flush'' ::* '''yuba'''....''near'' ::* '''yiba'''....''far, distant'' ::* '''yiza'''....''extreme, yonder'' ::* '''yuza'''....''circular'' ::* '''zaa'''....''front, anterior'' ::* '''zea'''....''medial, middle'' ::* '''zoa'''....''rear, back, posterior'' ::* '''zia'''....''left'' ::* '''zua'''....''right'' : A slight nuanced meaning can be achieved by suffixing '''-na''' instead of '''-a'''. ::* '''jana'''....''previous'' ::* '''jona'''....''next'' ::* '''zana'''....''next, anterior'' ::* '''zona'''....''last, posterior'' ::* '''ovna'''....''antithetical'' ::* '''yebna'''....''interior, internal'' ::* '''oyebna'''....''exterior, external'' ::* '''zena'''....''central'' ::* '''ebna'''....''intermediate'' ::* '''yizna'''....''ulterior, extreme'' ::* '''yuzna'''....''peripheral'' ::* '''yubna'''....''proximate'' == Prepositions and Adverbs as Verb Prefixes == : Prepositions and adverbs can be prefixed to verbs to alter their directionality. If such a prefix ends in '''-b''' and the verb begins with '''b''' or '''p''', the final '''b''' of the prefix is dropped. : Let take the verbs '''per''' (''to go'') and '''ber''' (''to put'') as examples: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Prepositional/Adverbial Prefixes on Verbs |- ! Preposition/Adverb !! '''per''' (intr.) !! '''ber''' (tr.) |- | '''ab'''....''on'' || '''aper'''....''to get on, to board'' || '''aber'''....''to put on, apply'' |- | '''ob'''....''off'' || '''oper'''....''to get off, to dismount'' || '''ober'''....''to take off, remove'' |- | '''eb'''....''between'' || '''eper'''....''to intervene'' || '''eber'''....''to block'' |- | '''ib'''....''away'' || '''iper'''....''to go away'' || '''iber'''....''to receive'' |- | '''ub'''....''toward'' || '''uper'''....''to come'' || '''uber'''....''to send'' |- | '''yab'''....''up'' || '''yaper'''....''to get up, to rise, to ascend'' || '''yaber'''....''to raise'' |- | '''yob'''....''down'' || '''yoper'''....''to get down, to descend'' || '''yober'''....''to lower'' |- | '''yeb'''....''in'' || '''yeper'''....''to get in, to enter'' || '''yeber'''....''to put in'' |- | '''oyeb'''....''out'' || '''oyeper'''....''to get out, to exit'' || '''oyeber'''....''to take out'' |- | '''yub'''....''near'' || '''yuper'''....''to get near, to approach'' || '''yuber'''....''to bring'' |- | '''yib'''....''far'' || '''yiper'''....''to retreat, to distance oneself'' || '''yiber'''....''to remove'' |- | '''yiz'''....''beyond'' || '''yizper'''....''to pass, exceed'' || '''yizber'''....''to pass'' |- | '''yuz'''....''around'' || '''yuzper'''....''to go around, to circulate'' || '''yuzber'''....''to encircle'' |- | '''yez'''....''along'' || '''yezper'''....''to go along'' || '''yezber'''....''to set along'' |- | '''yan'''....''together'' || '''yanper'''....''to get together, to meet'' || '''yanber'''....''to join'' |- | '''yon'''....''apart'' || '''yonper'''....''to go apart, to separate''|| '''yonber'''....''to separate'' |- | '''ja'''....''before'' || '''japer'''....''to go before, to precede'' || '''jaber'''....''to prepare'' |- | '''jo'''....''after'' || '''joper'''....''to go after, to follow''|| '''jober'''....''to postpone'' |- | '''za'''....''front'' || '''zaper'''....''to lead, to go in front''|| '''zaber'''....''to put in front'' |- | '''zo'''....''back'' || '''zoper'''....''to lag, to go in back'' || '''zober'''....''to delay'' |- | '''zay'''....''forward'' || '''zayper'''....''to go forward, to advance'' || '''zayber'''....''to put forward'' |- | '''zoy'''....''backward'' || '''zoyper'''....''to go back, to return'' || '''zoyber'''....''to put back'' |- | '''zey'''....''across'' || '''zeyper'''....''to go across, to transit'' || '''zeyber'''....''to transfer'' |} == Separable Verb Prefixes == : Verbal prefixes that are formed from prepositions and adverbs can usually be "unpacked", that is, treated as separate words. This works like separable verbs in German. The following table demonstrates this: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Separable Verb Prefixes |- ! Verb-bound !! Unpacked !! English |- | '''Mapuzlun <u>yuzpa</u> yata tam.''' || '''Mapuzlun <u>pa yuz</u> yata tam.'''||''A tornado circled/went around our house. (= went around)'' |- | '''Ha yux bi calk yeyfe <u>yobnogxwer</u>.''' || '''Ha yux bi cal yeyfe <u>nogxwer yob</u>.'''||''The use of carbon should be downscaled. (= scaled down)'' |- | '''Yat <u>zaybuxo</u> hia dovyabdren.''' || '''Yat <u>buxo</u> hia dovyabdren <u>zay</u>.'''||''We shall advance this legislation. (= push forward)'' |} <noinclude>{{Chapter navigation with TOC|Verbs|Conjunctions}}</noinclude> ie20x44ctk1milft0qf0xrtvuw4b4no 4656012 4656011 2026-08-01T17:40:34Z Tyoyafud 6233 /* Single-word Prepositions */ 4656012 wikitext text/x-wiki <noinclude>{{status|100%}}</noinclude> : Prepositions are words that connect and show a relationship between a noun or noun phrase and the rest of the sentence. In Mirad, prepositions are simple monosyllables or phrases. Prepositions, as in English, are positioned before the noun or noun phrase they connect. == Single-word Prepositions == [[File:Prepositions of place.svg|thumb|]] : In Mirad, there are '''''single-word prepositions''''' and '''''compound prepositions'''''. : Here is a chart of single-word prepositions. Most are spatial, but some are temporal, relational, or mathematical. :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Simple Prepositions |- ! Positive !! Neutral !! Negative |- ! colspan="3" | Spatial |- | '''ab'''....''on, upon'' || '''eb'''....''between'' || '''ob'''....''off, off of'' |- | '''ayb'''....''over, above'' || '''eyb'''....''among, amid'' || '''oyb'''....''under, below'' |- | '''bu'''....''to'' || '''be'''....''at'' || '''bi'''....''from, of'' |- | '''byu'''....''as far as, up to'' || || '''byi'''....''starting with'' |- | '''ub'''....''toward'' || || '''ib'''....''away from'' |- | '''yub'''....''near'' || '''yeb'''....''in, inside''<br>'''oyeb'''....''outside''|| '''yib'''....''far from'' |- | '''yuz'''....''around'' || '''yez'''....''along'' || '''yiz'''....''beyond'' |- | '''za'''....''in front of'' || '''ze'''....''at the middle of'' || '''zo'''....''behind, in back of'' |- | '''zya'''....''throughout'' || '''zye'''....''through'' || |- | || '''zey'''....''across'' || |- ! colspan="3" | Temporal |- | '''ja'''....''before'' || '''je'''....''during, while'' || '''jo'''....''after'' |- | '''ju'''....''until'' || || '''ji'''....''since'' |- ! colspan="3" | Relational |- | '''av'''....''for'' || '''ev'''....''neither for nor against''<br>'''vyel'''....''than, as, compared to, about'' || '''ov'''....''against'' |- | '''ayv'''....''about'' || || '''oyv'''....''despite'' |- | '''ay'''....''and'' || '''ey'''....''or''<br>'''oey'''....''nor'' || '''oy'''....''but, except'' |- | '''bay'''....''with'' || '''bey'''....''by, via'' || '''boy'''....''without'' |- | || '''gel'''....''like, as''<br>'''ogel'''....''unlike'' || |- ! colspan="3" | Mathematical |- | || '''ge'''....''equal to''<br>'''oge'''....''unequal to'' || |- | '''gab'''....''plus, <big>+</big>'' || '''gaob'''....''plus or minus'' || '''gob'''....''minus, <big>-</big>'' |- | '''gal'''....''times, <big>×</big>'' || || '''gol'''....''divided by, <big>÷</big>'' |- | '''gar'''....''to the power of, <big>&circ;</big>'' || || '''gor'''....''to the root of, <big>√</big>'' |} : Some of the above prepositions can be negated by prefixing '''lo'''. For example: ::* '''jo'''....''after'' --> '''lojo'''....''no later than, by'' ::* '''ji'''....''since'' --> '''loji'''....''not since'' : The most versatile and useful single-word preposition is '''be''', which means ''at'' as a general locative when used literally, but is used before many nouns and noun phrases when the meaning is idiomatic. Some examples follow: ::* '''Yat se <u>be tam</u>.'''....''We are <u>at home</u>.'' (literal, general locative) ::* '''Yat se <u>be dropek</u>.'''....''We are <u>at war</u>.'' (idiomatic) ::* '''At teata et <u>be yibsin</u>.'''....''I saw you <u>on television</u>.'' (idiomatic) ::* '''<u>Be Ejna York</u> ese mamyabtomi.'''....''<u>In New York</u>, there are skyscrapers.'' (general locative) ::* '''At se <u>be mep</u>.'''....''I am <u>on the way/en route</u>.'' : The preposition '''bi''' can mean ''of'' or ''from''. It is used for possessive (''of'') and ablative (''from'') constructions. Here are some examples: ::* '''Hus se tam <u>bi</u> ifron.'''....''That is a house <u>of</u> worship.'' ::* '''At tyopa <u>bi</u> ha nam bu ata pur.'''....''I walked <u>from</u> the store to my car.'' ::* '''<u>Bi</u> him bu jobuj.'''....''<u>From</u> here to eternity.'' ::* '''Ha tajem <u>bi Tom</u> se him.'''....''<u>Tom's</u> birthplace is here.'' ::* '''His sa ha gwaifwa tuzun <u>bi eta teyd</u>.'''....''This was <u>your mother's</u> favorite piece of art.'' === Simple Preposition Examples === ::* '''Ha dyes se <u>ab</u> ha sem.'''....''The book is <u>on</u> the table.'' ::* '''Von pyosu <u>ob</u> ha abtamas!'''....''Don't fall <u>off</u> the roof!'' ::* '''Ha pati papa <u>ayb</u> ata tam.'''....''The birds flew <u>over</u> my house.'' ::* '''It kosa <u>oyb</u> ha yagsim.'''....''He hid <u>under</u> the bench.'' ::* '''Simbiu <u>eb</u> hut ay at.'''....''Take a seat <u>between</u> that person and me.'' ::* '''Yat teje <u>eyb</u> fiati.'''....''We live <u>among</u> good people.'' ::* '''Duhos se nax <u>bi</u> pop <u>bu</u> ay <u>bi</u> Boston?'''....''What is the cost <u>of</u> a trip <u>to</u> and <u>from</u> Boston?'' ::* '''His se ifek <u>bi</u> kyen.'''....''This is a game <u>of</u> luck.'' ::* '''Duven et sa <u>be</u> hua duzun zomoj?'''....''Were you <u>at</u> that concert last night?'' ::* '''Yit se embwa <u>be</u> ha zenod bi ha mapil.'''....''We are positioned <u>at</u> the hub of this storm.'' ::* '''Iyt tyopa <u>byu</u> ha mes.'''....''She walked <u>up to/as far as</u> the door.'' ::* '''Ha twob tojbwa <u>bey</u> goblar.'''....''The man was killed <u>with/by</u> a knife.'' ::* '''Et xu ga fiay ser <u>bay</u> at vyel <u>boy</u> at.'''....''You would do better to be <u>with</u> me than <u>without</u> me.'' ::* '''Teaxu <u>ib</u> ha amar.'''....''Look <u>away</u> from the sun.'' ::* '''Von teaxu iz <u>ub</u> ha man.'''....''Don't look directly <u>toward</u> the light.'' ::* '''Yibdaliru <u>ub</u> ha uj bi eta pop.'''....''Call me <u>toward</u> the end of your trip.'' ::* '''Emkyoxu eta pur <u>yub</u> ha tam.'''....''Park the car <u>near</u> the house.'' ::* '''At voy se <u>yib</u> et.'''....''I'm not <u>far from</u> you.'' ::* '''Iyt simpa <u>za</u> at.''' ....''She sat <u>in front of</u> me.'' ::* '''Et yeyfe simbier <u>zo</u> hua toyb.'''....''You should sit <u>in back of</u> that woman.'' ::* '''Embu has <u>zu</u> ha mis.'''....''Put it <u>to the left of</u> the door.'' ::* '''At simpo <u>zi</u> et.'''....''I will sit <u>to the right of</u> you.'' ::* '''Ha pat besa <u>ze</u> ha tim.'''....''The bird stayed <u>in the middle of</u> the room.'' ::* '''Mil upeye <u>zye</u> ha yijun.'''....''Water is coming <u>through</u> the opening.'' ::* '''Bikiu je pen <u>zey</u> ha domep.'''.....''Take care when going <u>across</u> the street.'' ::* '''Eso ivan <u>zya</u> ha mir.'''....''There will be happiness <u>throughout</u> the world.'' ::* '''His xwo <u>ja</u> zajub.''' ....''This will happen <u>before</u> tomorrow.'' ::* '''Esa mapil <u>je</u> ha moj.'''....''There was a storm <u>during</u> the night.'' ::* '''<u>Ju</u> zamaj.'''....''<u>Until</u> tomorrow morning.'' ::* '''At voy teataye et <u>ji</u> zoyejub.'''....''I have not seen you <u>since</u> last week.'' ::* '''Diwe xu hes <u>av</u> at.'''....''Please do something <u>for</u> me.'' ::* '''Hia dyes se <u>ayv</u> dalzeyntun.'''....''This book is <u>about</u> linguistics.'' ::* '''Hia dyen se din <u>vyel</u> ewa fiuti.'''....''This book is a story <u>about</u> two lovers.'' ::* '''Datan se ga fia <u>vyel</u> nas.'''....''Friendship is better <u>than</u> money.'' ::* '''Hos se ge fua <u>vyel</u> has hu yat xola zojab.'''....''Nothing is as bad <u>as</u> what we underwent last year.'' ::* '''Yit yexeya <u>ov</u> yat.'''....''They were working <u>against</u> us.'' ::* '''Ha vakdibut dopoxa at <u>oyv</u> ata azovdeyni.'''....''The police officer arrested me <u>despite</u> my protests.'' ::* '''At se <u>ev</u> hua doyafkexut.'''....''I am <u>neither for nor against/neutral toward</u> that candidate.'' ::* '''Et <u>ay</u> Bob yeyfe ser dati.'''....''You <u>and</u> Bob should be friends.'' ::* '''Duhot ako, et <u>ey</u> at?'''....''Who will win, you <u>or</u> I?'' ::* '''Hyat <u>oy</u> hwut ta ha dud.'''....''Everyone <u>but</u> that guy knew the answer.'' ::* '''Esa mag <u>yub</u> at.'''....''There was a fire <u>near</u> me.'':: ::* '''Voy ese fabi <u>yuz</u> ata tam.'''....''There are no trees <u>around</u> my house.'' ::* '''Et yafo tyoper <u>yez</u> ha kunad.'''....''You'll have to walk <u>along</u> the edge.'' ::* '''Ese gla mari <u>yiz</u> yata amar.'''....''There are many stars <u>beyond</u> our sun.'' ::* '''Ha fepet tyopa iz <u>zye</u> hia mes.'''....''The cat walked right <u>through</u> this door.'' ::* '''<u>Boy</u> yombiel, tej voy se fia.'''....''<u>Without</u> ice cream, life is not good.'' ::* '''Et voy se <u>gel</u> at.'''....''You are not <u>like</u> me.'' ::* '''Et se hyagla <u>ogel</u> at.'''....''You are totally <u>unlike</u> me.'' ::* '''Ewa <u>gab</u> ewa gese uwa.'''....''Two <u>plus</u> two equals four.'' ::* '''Uwa <u>gob</u> ewa gese ewa.'''....''Four <u>minus</u> two equals two.'' ::* '''Ewa <u>gal</u> ewa gese uwa.'''....''Two <u>times</u> two equals four.'' ::* '''Ewa <u>gol</u> ewa gese awa.'''....''Two <u>divided by</u> two equals one.'' ::* '''Uwa <u>gar</u> ewa gese asya.'''....''Four squared (4<sup>2</sup>) equals sixteen. (Lit: Four <u>to the power of</u> two...)'' ::* '''Alya <u>gor</u> e gese u.'''....''The square root (√16) of sixteen is four. (Lit: Sixteen <u>to the minus power of</u> two...)'' === Hybridized Prepositions === :: Some of the above prepositions can be hybridized: ::* '''<u>bui</u> taam'''....''<u>to and fro</u> home'' ::* '''<u>zui</u> ha dodalut'''....''<u>to the left and right of</u> the speaker'' ::* '''<u>gaob</u> glos'''....''<u>plus or minus</u> a bit'' ::* '''<u>aov</u> at'''....''<u>for or against</u> me'' ::* '''<u>aoyeb</u> ha tim'''....''<u>in and out of</u> the room'' ::* '''<u>aob</u> ha seem'''....''<u>on and off</u> the counter'' == Compound Prepositions == : '''''Compound prepositions''''' require the use of multiple morphemes, including prepositions, adverbs, and nouns. === Compound Prepositions Using Adverbs === : There are certain directional adverbs that can play a part in forming prepositional phrases, but cannot act as prepositions in and of themselves: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Adverbs Used in Compound Prepositions |- | '''iz'''....''directly, straight'' || '''uz'''....''indirectly, roundabout'' |- | '''yab'''....''up'' || '''yob'''....''down'' |- | '''yan'''....''together'' || '''yon'''....''apart'' |- | '''zay'''....''forward, ahead'' || '''zoy'''....''back'' |- | '''zi'''....''right'' || '''zu'''....''left'' |} : The next chart lists some compound prepositions using the above adverbs or other combinations. Note that when combining two words, if the first word ends in '''b''' and the second begins with '''b''', one of the '''b''' 's is dropped. ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Compound Prepositions Using Adverbs and Other Prepositions |- ! Compound Preposition !! Example |- | '''yabu'''....''up to'' (< '''yab + bu''')|| '''It fu paper <u>yabu</u> ha mam.'''....''He would like to fly <u>up to</u> the sky.'' |- | '''yabi'''....''up from'' (< '''yab + bi''') || '''Su <u>yabi</u> ha sum.'''....''Get <u>up from</u> the bed.'' |- | '''yabey'''....''up (by way of)'' (< '''yab + bey''') || '''Yat tyoyapo <u>yabey</u> ha memyayz.'''....''We will walk <u>up</u> the hill.'' |- | '''yabe'''....''up at'' (< '''yab + be''')|| '''Ha kapet kaxwa <u>yabe</u> ha tam.'''....''The dog was found <u>up at</u> the house.'' |- | '''yab ab'''....''up on, upon'' || '''Ha fepet se <u>yab ab</u> ha abtamas.'''....''The cat is <u>up o</u>n the roof.'' |- | '''yobu'''....''down to'' (< '''yab + bu''') || '''Igpu <u>yobu</u> ha obmos.'''....''Run <u>down to</u> the cellar.'' |- | '''yobi'''....''down from'' (< '''yab + bi''') || '''Ha tat upa <u>yobi</u> ha mam.'''....''The angel came <u>down from</u> the sky.'' |- | '''yobey'''....''down (by way of)'' || '''Iyt igtyoyapa <u>yobey</u> ha meab.'''....''She ran <u>down</u> the hill.'' |- | '''yobe'''....''down at'' || '''Ha dyes kaxwa <u>yobe</u> ha obem.'''....''The book was found <u>down at</u> the bottom.'' |- | '''yob ab'''....''down on'' || '''Has kaxwa <u>yob ab</u> eta oybmos.'''....''It was found <u>down on</u> your floor.'' |- | '''yebu'''....''into'' || '''It pusa <u>yebu</u> ha mip.'''....''He jumped <u>into</u> the river.'' |- | '''yebi'''....''in from'' || '''Upu <u>yebi</u> ha oma oyebem.'''....''Come <u>in from</u> the cold outdoors.'' |- | '''oyebe'''....''out in/at'' || '''Ha tudi sa <u>oyebe</u> ha zodeym.'''....''The children were <u>out in</u> the backyard.'' |- | '''oyebi'''....''out from'' || '''Yepu <u>oyebi</u> ha om.'''....''Come in <u>out from</u> the cold.'' |- | '''oyebu'''....''out to'' || '''Yat fu peper <u>oyebu</u> ha meim.'''....''We'd like to ride <u>out to</u> the countryside.'' |- | '''iz bu'''....''straight to'' || '''Pu <u>iz bu</u> fyomir!''' ....''Go <u>straight to</u> hell!'' |- | '''iz zoy bi'''....''right back from'' || '''It upu <u>iz zoy bi</u> ha yexim.'''....''He came <u>right back from</u> the office.'' |- | '''zay bu'''....''on to, forth to, ahead to'' || '''Ha bixpur popa <u>zay bu</u> zona doym.'''....''The train traveled <u>on to</u> the next town.'' |- | '''zey bi'''....''across from'' || '''At simbeseya <u>zey bi</u> et.'''....''I was sitting <u>across from</u> you.'' |- | '''zoy bi'''....''back from'' || '''At se <u>zoy bi</u> ha yextim.'''....''I am <u>back from</u> the office.'' |- | '''zoy bu'''....''back to'' || '''Pu <u>zoy bu</u> ha nam.'''....''Go <u>back to</u> the store.'' |- | '''zoy be'''....''back at'' || '''Duven et se <u>zoy be</u> tam?'''....''Are you <u>back at</u> home?'' |- | '''zu bi'''....''to the left of'' || '''Ata tam se <u>zu bi</u> hut.'''....''My house is <u>to the right of</u> that guy's.'' |- | '''zi bi'''....''to the right of'' || '''Huta tam se <u>zi bi</u> atas.'''....''That guy's house is <u>to the right of</u> mine.'' |- | '''yan bay'''....''together with'' || '''Wit pa <u>yan</u> bay at bu ha dyezam.'''....''He went <u>together with</u> me to the theater. |- | '''yon bi'''....''apart from'' || '''<u>Yon bi</u> at, hyot ta ha dud.'''....''<u>Apart from</u> me, nobody knew the answer.'' |} === Prepositional Phrases Using Spatial Nouns === : The following chart shows how prepositions and directional adverbs can be joined with the spatial ending '''-(e)m''' meaning ''place'' (or others) to be form spatial nouns, which, in turn, can be used in idiomatic prepositional phrases: :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Spatial Nouns Built on Prepositions or Adverbs |- | '''ab'''....''on'' || '''abem'''....''top''<br>'''abned'''....''upper surface''<br>'''abmas'''....''roof'' |- | '''eb'''....''between'' || '''ebem'''....''interstice''<br>'''ebjob'''....''interval''<br>'''ebnod'''....''intersection''<br>'''ebmas'''....''partition'' |- | '''ob'''....''off'' || '''obem'''....''bottom''<br>'''obned'''....''lower surface''<br>'''obmas'''....''foundation'' |- | '''ayb'''....''above'' || '''aybem'''....''area above''<br>'''aybmas'''....''ceiling'' |- | '''oyb'''....''below'' || '''oybem'''....''area below''<br>'''oybmas'''....''floor'' |- | '''eyb'''....''among'' || '''eybem'''....''midst'' |- | '''yab'''....''up'' || '''yabem'''....''upstairs, upper area''<br>'''yabneg'''....''top level'' |- | '''yob'''....''down'' || '''yobem'''....''downstairs, lower area''<br>'''yobneg'''....''bottom level'' |- | '''yeb'''....''in'' || '''yebem'''....''inside, interior, indoors''<br>'''yebnig'''....''inner space'' |- | '''oyeb'''....''out'' || '''oyebem'''....''outside, exterior, outdoors'' |- | '''za'''....''in front of'' || '''zam'''....''front, foreground''<br>'''zan'''....''face'' |- | '''ze'''....''in the middle of'' || '''zem'''....''middle''<br>'''zenod'''....''center, hub''<br>'''zen'''....''center''<br>'''zenad'''....''median'' |- | '''zo'''....''behind'' || '''zom'''....''back, rear, background'' |- | '''zi'''....''right'' || '''zim'''....''right area''<br>'''zikum'''....''left side''<br>'''ziizon'''....''right direction''<br>'''imer'''....''east'' |- | '''zu'''....''left'' || '''zum'''....''left area''<br>'''zukum'''....''left side''<br>'''zuizon'''....''left direction''<br>'''umer'''....''west'' |- | '''iz'''....''straight'' || '''izmep'''....''direct route''<br>'''iznad'''....''vector''<br>'''izon'''....''direction'' |- | '''uz'''....''indirectly'' || '''uzmep'''....''detour''<br>'''uznad'''....''curve''<br>'''uzon'''....''deviation'' |- | '''yub'''....''near'' || '''yubem'''....''vicinity''<br>'''yubkum'''....''near side''<br>'''yubaj'''....''recent past'' |- | '''yib'''....''far'' || '''yibem'''....''distance''<br>'''yibkum'''....''far side''<br>'''yibnod'''....''pole''<br>'''yiboj'''....''distant future'' |- | '''yuz'''....''around'' || '''yuzem'''....''perifery''<br>'''yuznad'''....''perimeter''<br>'''yuznig'''....''environment'' |- | '''yiz'''....''beyond'' || '''yizem'''....''area beyond''<br>'''yiznod'''....''extremity'' |} : The following chart shows phrasal prepositions that can be created with the use of the spatial nouns in the previous section or other nouns. These phrases are considered idiomatic, because they are abbreviated by the omission of the definite article '''ha''' in front of the noun: :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Idiomatic Phrasal Prepositions ! At Somewhere !! To Somewhere !! From Somewhere |- | '''be abem bi'''....''at the top of'' || '''bu abem bi'''....''to the top of'' || '''bi abem bi'''....''from the top of'' |- | '''be obem bi'''....''at the bottom of'' || '''bu obem bi'''....''to the bottom of'' || '''bi obem bi'''....''from the top of'' |- | '''be ebem bi'''....''in the area between'' || '''bu ebem bi'''....''to the area between'' || '''bi ebem bi'''....''from the area between'' |- | '''be aybem bi'''....''above, over'' || '''bu aybem bi'''....''to the area above'' || '''bi aybem bi'''....''from the area above'' |- | '''be oybem bi'''....''below, under'' || '''bu oybem bi'''....''to the area below'' || '''bi oybem bi'''....''from the area below'' |- | '''be eybem bi'''....''amid'' || '''zye eybem bi'''....''through the midst of'' || '''bi eybem bi'''....''from the midst of'' |- | '''be zam bi'''....''at the front of'' || '''bu zam bi'''....''to the front of'' || '''bi zam bi'''....''from the front of'' |- | '''be zem bi'''....''at the middle of'' || '''bu zem bi'''....''to the middle of'' || '''bi zem bi'''....''from the middle of'' |- | '''be zom bi'''....''at the back of'' || '''bu zom bi'''....''to the back of'' || '''bi zom bi'''....''from the back of'' |- | '''be zim bi'''....''at the right of'' || '''bu zim bi'''....''to the right of'' || '''bi zim bi'''....''from the right of'' |- | '''be zum bi'''....''at the left of'' || '''bu zum bi'''....''to the left of'' || '''bi zum bi'''....''from the left of'' |- | '''be yubem bi'''....''in the vicinity of'' || '''bu yubem bi'''....''to the vicinity of'' || '''bi yubem bi'''....''from the vicinity of'' |- | '''be yibem bi'''....''at a distance from'' || '''bey azon bi'''....''by dint of'' || '''be avon bi'''....''in favor of'' |- | '''be ubem bi'''....''in the direction of'' || '''bay ux bi'''....''with assistance from'' || '''be byux bay'''....''in touch with'' |- | '''be yabem bi'''....''in the upper reaches of'' || '''be vyen bu'''....''in relation to'' || '''doytaxwa bay'''....''associated with'' |- | '''be yobem bi'''....''in the bottom area of'' || '''be ned bi'''....''on the level of'' || '''be mep bu'''....''on the way to, en route'' |- | '''be yebem bi'''....''on the inside of, inside'' || '''be oyebem bi'''....''on the outside of, outside'' || '''bu oyebem bi'''....''to the exterior of'' |- | '''bey mep bi'''....''by way of, via'' || '''be kum bi'''....''beside, at the side of'' || '''be ij bi'''....''at the start of'' |- | '''be uj bi'''....''at the end of'' || '''bey uxun bi'''....''by means of'' || '''be kunad bi'''....''at the edge of'' |- | '''be nod bi'''....''at the point of'' || '''be yebem bi'''....''at the interior of, inside'' || '''be oyebem bi'''....''at the exterior of, outside'' |- | '''be nad bay'''....''in line with'' || '''be uznod bi'''....''alongside'' || '''be tes bi'''....''in the sense of'' |- | '''be teas bi'''....''in the guise of'' || '''be san bi'''....''in the form of'' || '''be yanx bi'''....''in conjunction with'' |- | '''be bol bi'''....''in support of'' || '''be gab bu'''....''in addition to'' || '''be dyun bi'''....''in the name of'' |- | '''be avson bi'''....''on behalf of'' || '''be vyeson bi'''....''on the subject of'' || '''bay yux bi'''....''with the aid of'' |} == Adjectivized Prepositions == : Simple prepositions can be converted into adjectives by suffixing the adjectival ending '''-a'''. Here are some examples: ::* '''aba'''....''superior'' (ex. '''aba doyevam'''....''superior court'') ::* '''oba'''....''inferior'' ::* '''ayba'''....''upper'' ::* '''oyba'''....''lower'' ::* '''yaba'''....''high'' ::* '''yoba'''....''low'' ::* '''eba'''....''in-between'' ::* '''gaba'''....''additional'' ::* '''goba'''....''subtractive'' ::* '''gala'''....''multiple'' ::* '''gaza'''....''logarithmic'' ::* '''gea'''....''equal'' ::* '''gela'''....''same'' ::* '''iba'''....''away'' ::* '''ogea'''....''unequal'' ::* '''jaa'''....''anterior, prior'' ::* '''jea'''....''present'' ::* '''joa'''....''posterior'' ::* '''ava'''....''in favor, favorable, pro'' ::* '''eva'''....''neutral'' ::* '''ova'''....''against, unfavorable, counter'' ::* '''oyva'''....''opposite, inverse'' ::* '''yeba'''....''inner'' ::* '''oyeba'''....''outer'' ::* '''yeza'''....''flush'' ::* '''yuba'''....''near'' ::* '''yiba'''....''far, distant'' ::* '''yiza'''....''extreme, yonder'' ::* '''yuza'''....''circular'' ::* '''zaa'''....''front, anterior'' ::* '''zea'''....''medial, middle'' ::* '''zoa'''....''rear, back, posterior'' ::* '''zia'''....''left'' ::* '''zua'''....''right'' : A slight nuanced meaning can be achieved by suffixing '''-na''' instead of '''-a'''. ::* '''jana'''....''previous'' ::* '''jona'''....''next'' ::* '''zana'''....''next, anterior'' ::* '''zona'''....''last, posterior'' ::* '''ovna'''....''antithetical'' ::* '''yebna'''....''interior, internal'' ::* '''oyebna'''....''exterior, external'' ::* '''zena'''....''central'' ::* '''ebna'''....''intermediate'' ::* '''yizna'''....''ulterior, extreme'' ::* '''yuzna'''....''peripheral'' ::* '''yubna'''....''proximate'' == Prepositions and Adverbs as Verb Prefixes == : Prepositions and adverbs can be prefixed to verbs to alter their directionality. If such a prefix ends in '''-b''' and the verb begins with '''b''' or '''p''', the final '''b''' of the prefix is dropped. : Let take the verbs '''per''' (''to go'') and '''ber''' (''to put'') as examples: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Prepositional/Adverbial Prefixes on Verbs |- ! Preposition/Adverb !! '''per''' (intr.) !! '''ber''' (tr.) |- | '''ab'''....''on'' || '''aper'''....''to get on, to board'' || '''aber'''....''to put on, apply'' |- | '''ob'''....''off'' || '''oper'''....''to get off, to dismount'' || '''ober'''....''to take off, remove'' |- | '''eb'''....''between'' || '''eper'''....''to intervene'' || '''eber'''....''to block'' |- | '''ib'''....''away'' || '''iper'''....''to go away'' || '''iber'''....''to receive'' |- | '''ub'''....''toward'' || '''uper'''....''to come'' || '''uber'''....''to send'' |- | '''yab'''....''up'' || '''yaper'''....''to get up, to rise, to ascend'' || '''yaber'''....''to raise'' |- | '''yob'''....''down'' || '''yoper'''....''to get down, to descend'' || '''yober'''....''to lower'' |- | '''yeb'''....''in'' || '''yeper'''....''to get in, to enter'' || '''yeber'''....''to put in'' |- | '''oyeb'''....''out'' || '''oyeper'''....''to get out, to exit'' || '''oyeber'''....''to take out'' |- | '''yub'''....''near'' || '''yuper'''....''to get near, to approach'' || '''yuber'''....''to bring'' |- | '''yib'''....''far'' || '''yiper'''....''to retreat, to distance oneself'' || '''yiber'''....''to remove'' |- | '''yiz'''....''beyond'' || '''yizper'''....''to pass, exceed'' || '''yizber'''....''to pass'' |- | '''yuz'''....''around'' || '''yuzper'''....''to go around, to circulate'' || '''yuzber'''....''to encircle'' |- | '''yez'''....''along'' || '''yezper'''....''to go along'' || '''yezber'''....''to set along'' |- | '''yan'''....''together'' || '''yanper'''....''to get together, to meet'' || '''yanber'''....''to join'' |- | '''yon'''....''apart'' || '''yonper'''....''to go apart, to separate''|| '''yonber'''....''to separate'' |- | '''ja'''....''before'' || '''japer'''....''to go before, to precede'' || '''jaber'''....''to prepare'' |- | '''jo'''....''after'' || '''joper'''....''to go after, to follow''|| '''jober'''....''to postpone'' |- | '''za'''....''front'' || '''zaper'''....''to lead, to go in front''|| '''zaber'''....''to put in front'' |- | '''zo'''....''back'' || '''zoper'''....''to lag, to go in back'' || '''zober'''....''to delay'' |- | '''zay'''....''forward'' || '''zayper'''....''to go forward, to advance'' || '''zayber'''....''to put forward'' |- | '''zoy'''....''backward'' || '''zoyper'''....''to go back, to return'' || '''zoyber'''....''to put back'' |- | '''zey'''....''across'' || '''zeyper'''....''to go across, to transit'' || '''zeyber'''....''to transfer'' |} == Separable Verb Prefixes == : Verbal prefixes that are formed from prepositions and adverbs can usually be "unpacked", that is, treated as separate words. This works like separable verbs in German. The following table demonstrates this: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Separable Verb Prefixes |- ! Verb-bound !! Unpacked !! English |- | '''Mapuzlun <u>yuzpa</u> yata tam.''' || '''Mapuzlun <u>pa yuz</u> yata tam.'''||''A tornado circled/went around our house. (= went around)'' |- | '''Ha yux bi calk yeyfe <u>yobnogxwer</u>.''' || '''Ha yux bi cal yeyfe <u>nogxwer yob</u>.'''||''The use of carbon should be downscaled. (= scaled down)'' |- | '''Yat <u>zaybuxo</u> hia dovyabdren.''' || '''Yat <u>buxo</u> hia dovyabdren <u>zay</u>.'''||''We shall advance this legislation. (= push forward)'' |} <noinclude>{{Chapter navigation with TOC|Verbs|Conjunctions}}</noinclude> snsyq587kxtc5cu5d0h4spwfk1us04v 4656013 4656012 2026-08-01T17:55:32Z Tyoyafud 6233 /* Prepositions and Adverbs as Verb Prefixes */ 4656013 wikitext text/x-wiki <noinclude>{{status|100%}}</noinclude> : Prepositions are words that connect and show a relationship between a noun or noun phrase and the rest of the sentence. In Mirad, prepositions are simple monosyllables or phrases. Prepositions, as in English, are positioned before the noun or noun phrase they connect. == Single-word Prepositions == [[File:Prepositions of place.svg|thumb|]] : In Mirad, there are '''''single-word prepositions''''' and '''''compound prepositions'''''. : Here is a chart of single-word prepositions. Most are spatial, but some are temporal, relational, or mathematical. :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Simple Prepositions |- ! Positive !! Neutral !! Negative |- ! colspan="3" | Spatial |- | '''ab'''....''on, upon'' || '''eb'''....''between'' || '''ob'''....''off, off of'' |- | '''ayb'''....''over, above'' || '''eyb'''....''among, amid'' || '''oyb'''....''under, below'' |- | '''bu'''....''to'' || '''be'''....''at'' || '''bi'''....''from, of'' |- | '''byu'''....''as far as, up to'' || || '''byi'''....''starting with'' |- | '''ub'''....''toward'' || || '''ib'''....''away from'' |- | '''yub'''....''near'' || '''yeb'''....''in, inside''<br>'''oyeb'''....''outside''|| '''yib'''....''far from'' |- | '''yuz'''....''around'' || '''yez'''....''along'' || '''yiz'''....''beyond'' |- | '''za'''....''in front of'' || '''ze'''....''at the middle of'' || '''zo'''....''behind, in back of'' |- | '''zya'''....''throughout'' || '''zye'''....''through'' || |- | || '''zey'''....''across'' || |- ! colspan="3" | Temporal |- | '''ja'''....''before'' || '''je'''....''during, while'' || '''jo'''....''after'' |- | '''ju'''....''until'' || || '''ji'''....''since'' |- ! colspan="3" | Relational |- | '''av'''....''for'' || '''ev'''....''neither for nor against''<br>'''vyel'''....''than, as, compared to, about'' || '''ov'''....''against'' |- | '''ayv'''....''about'' || || '''oyv'''....''despite'' |- | '''ay'''....''and'' || '''ey'''....''or''<br>'''oey'''....''nor'' || '''oy'''....''but, except'' |- | '''bay'''....''with'' || '''bey'''....''by, via'' || '''boy'''....''without'' |- | || '''gel'''....''like, as''<br>'''ogel'''....''unlike'' || |- ! colspan="3" | Mathematical |- | || '''ge'''....''equal to''<br>'''oge'''....''unequal to'' || |- | '''gab'''....''plus, <big>+</big>'' || '''gaob'''....''plus or minus'' || '''gob'''....''minus, <big>-</big>'' |- | '''gal'''....''times, <big>×</big>'' || || '''gol'''....''divided by, <big>÷</big>'' |- | '''gar'''....''to the power of, <big>&circ;</big>'' || || '''gor'''....''to the root of, <big>√</big>'' |} : Some of the above prepositions can be negated by prefixing '''lo'''. For example: ::* '''jo'''....''after'' --> '''lojo'''....''no later than, by'' ::* '''ji'''....''since'' --> '''loji'''....''not since'' : The most versatile and useful single-word preposition is '''be''', which means ''at'' as a general locative when used literally, but is used before many nouns and noun phrases when the meaning is idiomatic. Some examples follow: ::* '''Yat se <u>be tam</u>.'''....''We are <u>at home</u>.'' (literal, general locative) ::* '''Yat se <u>be dropek</u>.'''....''We are <u>at war</u>.'' (idiomatic) ::* '''At teata et <u>be yibsin</u>.'''....''I saw you <u>on television</u>.'' (idiomatic) ::* '''<u>Be Ejna York</u> ese mamyabtomi.'''....''<u>In New York</u>, there are skyscrapers.'' (general locative) ::* '''At se <u>be mep</u>.'''....''I am <u>on the way/en route</u>.'' : The preposition '''bi''' can mean ''of'' or ''from''. It is used for possessive (''of'') and ablative (''from'') constructions. Here are some examples: ::* '''Hus se tam <u>bi</u> ifron.'''....''That is a house <u>of</u> worship.'' ::* '''At tyopa <u>bi</u> ha nam bu ata pur.'''....''I walked <u>from</u> the store to my car.'' ::* '''<u>Bi</u> him bu jobuj.'''....''<u>From</u> here to eternity.'' ::* '''Ha tajem <u>bi Tom</u> se him.'''....''<u>Tom's</u> birthplace is here.'' ::* '''His sa ha gwaifwa tuzun <u>bi eta teyd</u>.'''....''This was <u>your mother's</u> favorite piece of art.'' === Simple Preposition Examples === ::* '''Ha dyes se <u>ab</u> ha sem.'''....''The book is <u>on</u> the table.'' ::* '''Von pyosu <u>ob</u> ha abtamas!'''....''Don't fall <u>off</u> the roof!'' ::* '''Ha pati papa <u>ayb</u> ata tam.'''....''The birds flew <u>over</u> my house.'' ::* '''It kosa <u>oyb</u> ha yagsim.'''....''He hid <u>under</u> the bench.'' ::* '''Simbiu <u>eb</u> hut ay at.'''....''Take a seat <u>between</u> that person and me.'' ::* '''Yat teje <u>eyb</u> fiati.'''....''We live <u>among</u> good people.'' ::* '''Duhos se nax <u>bi</u> pop <u>bu</u> ay <u>bi</u> Boston?'''....''What is the cost <u>of</u> a trip <u>to</u> and <u>from</u> Boston?'' ::* '''His se ifek <u>bi</u> kyen.'''....''This is a game <u>of</u> luck.'' ::* '''Duven et sa <u>be</u> hua duzun zomoj?'''....''Were you <u>at</u> that concert last night?'' ::* '''Yit se embwa <u>be</u> ha zenod bi ha mapil.'''....''We are positioned <u>at</u> the hub of this storm.'' ::* '''Iyt tyopa <u>byu</u> ha mes.'''....''She walked <u>up to/as far as</u> the door.'' ::* '''Ha twob tojbwa <u>bey</u> goblar.'''....''The man was killed <u>with/by</u> a knife.'' ::* '''Et xu ga fiay ser <u>bay</u> at vyel <u>boy</u> at.'''....''You would do better to be <u>with</u> me than <u>without</u> me.'' ::* '''Teaxu <u>ib</u> ha amar.'''....''Look <u>away</u> from the sun.'' ::* '''Von teaxu iz <u>ub</u> ha man.'''....''Don't look directly <u>toward</u> the light.'' ::* '''Yibdaliru <u>ub</u> ha uj bi eta pop.'''....''Call me <u>toward</u> the end of your trip.'' ::* '''Emkyoxu eta pur <u>yub</u> ha tam.'''....''Park the car <u>near</u> the house.'' ::* '''At voy se <u>yib</u> et.'''....''I'm not <u>far from</u> you.'' ::* '''Iyt simpa <u>za</u> at.''' ....''She sat <u>in front of</u> me.'' ::* '''Et yeyfe simbier <u>zo</u> hua toyb.'''....''You should sit <u>in back of</u> that woman.'' ::* '''Embu has <u>zu</u> ha mis.'''....''Put it <u>to the left of</u> the door.'' ::* '''At simpo <u>zi</u> et.'''....''I will sit <u>to the right of</u> you.'' ::* '''Ha pat besa <u>ze</u> ha tim.'''....''The bird stayed <u>in the middle of</u> the room.'' ::* '''Mil upeye <u>zye</u> ha yijun.'''....''Water is coming <u>through</u> the opening.'' ::* '''Bikiu je pen <u>zey</u> ha domep.'''.....''Take care when going <u>across</u> the street.'' ::* '''Eso ivan <u>zya</u> ha mir.'''....''There will be happiness <u>throughout</u> the world.'' ::* '''His xwo <u>ja</u> zajub.''' ....''This will happen <u>before</u> tomorrow.'' ::* '''Esa mapil <u>je</u> ha moj.'''....''There was a storm <u>during</u> the night.'' ::* '''<u>Ju</u> zamaj.'''....''<u>Until</u> tomorrow morning.'' ::* '''At voy teataye et <u>ji</u> zoyejub.'''....''I have not seen you <u>since</u> last week.'' ::* '''Diwe xu hes <u>av</u> at.'''....''Please do something <u>for</u> me.'' ::* '''Hia dyes se <u>ayv</u> dalzeyntun.'''....''This book is <u>about</u> linguistics.'' ::* '''Hia dyen se din <u>vyel</u> ewa fiuti.'''....''This book is a story <u>about</u> two lovers.'' ::* '''Datan se ga fia <u>vyel</u> nas.'''....''Friendship is better <u>than</u> money.'' ::* '''Hos se ge fua <u>vyel</u> has hu yat xola zojab.'''....''Nothing is as bad <u>as</u> what we underwent last year.'' ::* '''Yit yexeya <u>ov</u> yat.'''....''They were working <u>against</u> us.'' ::* '''Ha vakdibut dopoxa at <u>oyv</u> ata azovdeyni.'''....''The police officer arrested me <u>despite</u> my protests.'' ::* '''At se <u>ev</u> hua doyafkexut.'''....''I am <u>neither for nor against/neutral toward</u> that candidate.'' ::* '''Et <u>ay</u> Bob yeyfe ser dati.'''....''You <u>and</u> Bob should be friends.'' ::* '''Duhot ako, et <u>ey</u> at?'''....''Who will win, you <u>or</u> I?'' ::* '''Hyat <u>oy</u> hwut ta ha dud.'''....''Everyone <u>but</u> that guy knew the answer.'' ::* '''Esa mag <u>yub</u> at.'''....''There was a fire <u>near</u> me.'':: ::* '''Voy ese fabi <u>yuz</u> ata tam.'''....''There are no trees <u>around</u> my house.'' ::* '''Et yafo tyoper <u>yez</u> ha kunad.'''....''You'll have to walk <u>along</u> the edge.'' ::* '''Ese gla mari <u>yiz</u> yata amar.'''....''There are many stars <u>beyond</u> our sun.'' ::* '''Ha fepet tyopa iz <u>zye</u> hia mes.'''....''The cat walked right <u>through</u> this door.'' ::* '''<u>Boy</u> yombiel, tej voy se fia.'''....''<u>Without</u> ice cream, life is not good.'' ::* '''Et voy se <u>gel</u> at.'''....''You are not <u>like</u> me.'' ::* '''Et se hyagla <u>ogel</u> at.'''....''You are totally <u>unlike</u> me.'' ::* '''Ewa <u>gab</u> ewa gese uwa.'''....''Two <u>plus</u> two equals four.'' ::* '''Uwa <u>gob</u> ewa gese ewa.'''....''Four <u>minus</u> two equals two.'' ::* '''Ewa <u>gal</u> ewa gese uwa.'''....''Two <u>times</u> two equals four.'' ::* '''Ewa <u>gol</u> ewa gese awa.'''....''Two <u>divided by</u> two equals one.'' ::* '''Uwa <u>gar</u> ewa gese asya.'''....''Four squared (4<sup>2</sup>) equals sixteen. (Lit: Four <u>to the power of</u> two...)'' ::* '''Alya <u>gor</u> e gese u.'''....''The square root (√16) of sixteen is four. (Lit: Sixteen <u>to the minus power of</u> two...)'' === Hybridized Prepositions === :: Some of the above prepositions can be hybridized: ::* '''<u>bui</u> taam'''....''<u>to and fro</u> home'' ::* '''<u>zui</u> ha dodalut'''....''<u>to the left and right of</u> the speaker'' ::* '''<u>gaob</u> glos'''....''<u>plus or minus</u> a bit'' ::* '''<u>aov</u> at'''....''<u>for or against</u> me'' ::* '''<u>aoyeb</u> ha tim'''....''<u>in and out of</u> the room'' ::* '''<u>aob</u> ha seem'''....''<u>on and off</u> the counter'' == Compound Prepositions == : '''''Compound prepositions''''' require the use of multiple morphemes, including prepositions, adverbs, and nouns. === Compound Prepositions Using Adverbs === : There are certain directional adverbs that can play a part in forming prepositional phrases, but cannot act as prepositions in and of themselves: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Adverbs Used in Compound Prepositions |- | '''iz'''....''directly, straight'' || '''uz'''....''indirectly, roundabout'' |- | '''yab'''....''up'' || '''yob'''....''down'' |- | '''yan'''....''together'' || '''yon'''....''apart'' |- | '''zay'''....''forward, ahead'' || '''zoy'''....''back'' |- | '''zi'''....''right'' || '''zu'''....''left'' |} : The next chart lists some compound prepositions using the above adverbs or other combinations. Note that when combining two words, if the first word ends in '''b''' and the second begins with '''b''', one of the '''b''' 's is dropped. ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Compound Prepositions Using Adverbs and Other Prepositions |- ! Compound Preposition !! Example |- | '''yabu'''....''up to'' (< '''yab + bu''')|| '''It fu paper <u>yabu</u> ha mam.'''....''He would like to fly <u>up to</u> the sky.'' |- | '''yabi'''....''up from'' (< '''yab + bi''') || '''Su <u>yabi</u> ha sum.'''....''Get <u>up from</u> the bed.'' |- | '''yabey'''....''up (by way of)'' (< '''yab + bey''') || '''Yat tyoyapo <u>yabey</u> ha memyayz.'''....''We will walk <u>up</u> the hill.'' |- | '''yabe'''....''up at'' (< '''yab + be''')|| '''Ha kapet kaxwa <u>yabe</u> ha tam.'''....''The dog was found <u>up at</u> the house.'' |- | '''yab ab'''....''up on, upon'' || '''Ha fepet se <u>yab ab</u> ha abtamas.'''....''The cat is <u>up o</u>n the roof.'' |- | '''yobu'''....''down to'' (< '''yab + bu''') || '''Igpu <u>yobu</u> ha obmos.'''....''Run <u>down to</u> the cellar.'' |- | '''yobi'''....''down from'' (< '''yab + bi''') || '''Ha tat upa <u>yobi</u> ha mam.'''....''The angel came <u>down from</u> the sky.'' |- | '''yobey'''....''down (by way of)'' || '''Iyt igtyoyapa <u>yobey</u> ha meab.'''....''She ran <u>down</u> the hill.'' |- | '''yobe'''....''down at'' || '''Ha dyes kaxwa <u>yobe</u> ha obem.'''....''The book was found <u>down at</u> the bottom.'' |- | '''yob ab'''....''down on'' || '''Has kaxwa <u>yob ab</u> eta oybmos.'''....''It was found <u>down on</u> your floor.'' |- | '''yebu'''....''into'' || '''It pusa <u>yebu</u> ha mip.'''....''He jumped <u>into</u> the river.'' |- | '''yebi'''....''in from'' || '''Upu <u>yebi</u> ha oma oyebem.'''....''Come <u>in from</u> the cold outdoors.'' |- | '''oyebe'''....''out in/at'' || '''Ha tudi sa <u>oyebe</u> ha zodeym.'''....''The children were <u>out in</u> the backyard.'' |- | '''oyebi'''....''out from'' || '''Yepu <u>oyebi</u> ha om.'''....''Come in <u>out from</u> the cold.'' |- | '''oyebu'''....''out to'' || '''Yat fu peper <u>oyebu</u> ha meim.'''....''We'd like to ride <u>out to</u> the countryside.'' |- | '''iz bu'''....''straight to'' || '''Pu <u>iz bu</u> fyomir!''' ....''Go <u>straight to</u> hell!'' |- | '''iz zoy bi'''....''right back from'' || '''It upu <u>iz zoy bi</u> ha yexim.'''....''He came <u>right back from</u> the office.'' |- | '''zay bu'''....''on to, forth to, ahead to'' || '''Ha bixpur popa <u>zay bu</u> zona doym.'''....''The train traveled <u>on to</u> the next town.'' |- | '''zey bi'''....''across from'' || '''At simbeseya <u>zey bi</u> et.'''....''I was sitting <u>across from</u> you.'' |- | '''zoy bi'''....''back from'' || '''At se <u>zoy bi</u> ha yextim.'''....''I am <u>back from</u> the office.'' |- | '''zoy bu'''....''back to'' || '''Pu <u>zoy bu</u> ha nam.'''....''Go <u>back to</u> the store.'' |- | '''zoy be'''....''back at'' || '''Duven et se <u>zoy be</u> tam?'''....''Are you <u>back at</u> home?'' |- | '''zu bi'''....''to the left of'' || '''Ata tam se <u>zu bi</u> hut.'''....''My house is <u>to the right of</u> that guy's.'' |- | '''zi bi'''....''to the right of'' || '''Huta tam se <u>zi bi</u> atas.'''....''That guy's house is <u>to the right of</u> mine.'' |- | '''yan bay'''....''together with'' || '''Wit pa <u>yan</u> bay at bu ha dyezam.'''....''He went <u>together with</u> me to the theater. |- | '''yon bi'''....''apart from'' || '''<u>Yon bi</u> at, hyot ta ha dud.'''....''<u>Apart from</u> me, nobody knew the answer.'' |} === Prepositional Phrases Using Spatial Nouns === : The following chart shows how prepositions and directional adverbs can be joined with the spatial ending '''-(e)m''' meaning ''place'' (or others) to be form spatial nouns, which, in turn, can be used in idiomatic prepositional phrases: :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Spatial Nouns Built on Prepositions or Adverbs |- | '''ab'''....''on'' || '''abem'''....''top''<br>'''abned'''....''upper surface''<br>'''abmas'''....''roof'' |- | '''eb'''....''between'' || '''ebem'''....''interstice''<br>'''ebjob'''....''interval''<br>'''ebnod'''....''intersection''<br>'''ebmas'''....''partition'' |- | '''ob'''....''off'' || '''obem'''....''bottom''<br>'''obned'''....''lower surface''<br>'''obmas'''....''foundation'' |- | '''ayb'''....''above'' || '''aybem'''....''area above''<br>'''aybmas'''....''ceiling'' |- | '''oyb'''....''below'' || '''oybem'''....''area below''<br>'''oybmas'''....''floor'' |- | '''eyb'''....''among'' || '''eybem'''....''midst'' |- | '''yab'''....''up'' || '''yabem'''....''upstairs, upper area''<br>'''yabneg'''....''top level'' |- | '''yob'''....''down'' || '''yobem'''....''downstairs, lower area''<br>'''yobneg'''....''bottom level'' |- | '''yeb'''....''in'' || '''yebem'''....''inside, interior, indoors''<br>'''yebnig'''....''inner space'' |- | '''oyeb'''....''out'' || '''oyebem'''....''outside, exterior, outdoors'' |- | '''za'''....''in front of'' || '''zam'''....''front, foreground''<br>'''zan'''....''face'' |- | '''ze'''....''in the middle of'' || '''zem'''....''middle''<br>'''zenod'''....''center, hub''<br>'''zen'''....''center''<br>'''zenad'''....''median'' |- | '''zo'''....''behind'' || '''zom'''....''back, rear, background'' |- | '''zi'''....''right'' || '''zim'''....''right area''<br>'''zikum'''....''left side''<br>'''ziizon'''....''right direction''<br>'''imer'''....''east'' |- | '''zu'''....''left'' || '''zum'''....''left area''<br>'''zukum'''....''left side''<br>'''zuizon'''....''left direction''<br>'''umer'''....''west'' |- | '''iz'''....''straight'' || '''izmep'''....''direct route''<br>'''iznad'''....''vector''<br>'''izon'''....''direction'' |- | '''uz'''....''indirectly'' || '''uzmep'''....''detour''<br>'''uznad'''....''curve''<br>'''uzon'''....''deviation'' |- | '''yub'''....''near'' || '''yubem'''....''vicinity''<br>'''yubkum'''....''near side''<br>'''yubaj'''....''recent past'' |- | '''yib'''....''far'' || '''yibem'''....''distance''<br>'''yibkum'''....''far side''<br>'''yibnod'''....''pole''<br>'''yiboj'''....''distant future'' |- | '''yuz'''....''around'' || '''yuzem'''....''perifery''<br>'''yuznad'''....''perimeter''<br>'''yuznig'''....''environment'' |- | '''yiz'''....''beyond'' || '''yizem'''....''area beyond''<br>'''yiznod'''....''extremity'' |} : The following chart shows phrasal prepositions that can be created with the use of the spatial nouns in the previous section or other nouns. These phrases are considered idiomatic, because they are abbreviated by the omission of the definite article '''ha''' in front of the noun: :{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Idiomatic Phrasal Prepositions ! At Somewhere !! To Somewhere !! From Somewhere |- | '''be abem bi'''....''at the top of'' || '''bu abem bi'''....''to the top of'' || '''bi abem bi'''....''from the top of'' |- | '''be obem bi'''....''at the bottom of'' || '''bu obem bi'''....''to the bottom of'' || '''bi obem bi'''....''from the top of'' |- | '''be ebem bi'''....''in the area between'' || '''bu ebem bi'''....''to the area between'' || '''bi ebem bi'''....''from the area between'' |- | '''be aybem bi'''....''above, over'' || '''bu aybem bi'''....''to the area above'' || '''bi aybem bi'''....''from the area above'' |- | '''be oybem bi'''....''below, under'' || '''bu oybem bi'''....''to the area below'' || '''bi oybem bi'''....''from the area below'' |- | '''be eybem bi'''....''amid'' || '''zye eybem bi'''....''through the midst of'' || '''bi eybem bi'''....''from the midst of'' |- | '''be zam bi'''....''at the front of'' || '''bu zam bi'''....''to the front of'' || '''bi zam bi'''....''from the front of'' |- | '''be zem bi'''....''at the middle of'' || '''bu zem bi'''....''to the middle of'' || '''bi zem bi'''....''from the middle of'' |- | '''be zom bi'''....''at the back of'' || '''bu zom bi'''....''to the back of'' || '''bi zom bi'''....''from the back of'' |- | '''be zim bi'''....''at the right of'' || '''bu zim bi'''....''to the right of'' || '''bi zim bi'''....''from the right of'' |- | '''be zum bi'''....''at the left of'' || '''bu zum bi'''....''to the left of'' || '''bi zum bi'''....''from the left of'' |- | '''be yubem bi'''....''in the vicinity of'' || '''bu yubem bi'''....''to the vicinity of'' || '''bi yubem bi'''....''from the vicinity of'' |- | '''be yibem bi'''....''at a distance from'' || '''bey azon bi'''....''by dint of'' || '''be avon bi'''....''in favor of'' |- | '''be ubem bi'''....''in the direction of'' || '''bay ux bi'''....''with assistance from'' || '''be byux bay'''....''in touch with'' |- | '''be yabem bi'''....''in the upper reaches of'' || '''be vyen bu'''....''in relation to'' || '''doytaxwa bay'''....''associated with'' |- | '''be yobem bi'''....''in the bottom area of'' || '''be ned bi'''....''on the level of'' || '''be mep bu'''....''on the way to, en route'' |- | '''be yebem bi'''....''on the inside of, inside'' || '''be oyebem bi'''....''on the outside of, outside'' || '''bu oyebem bi'''....''to the exterior of'' |- | '''bey mep bi'''....''by way of, via'' || '''be kum bi'''....''beside, at the side of'' || '''be ij bi'''....''at the start of'' |- | '''be uj bi'''....''at the end of'' || '''bey uxun bi'''....''by means of'' || '''be kunad bi'''....''at the edge of'' |- | '''be nod bi'''....''at the point of'' || '''be yebem bi'''....''at the interior of, inside'' || '''be oyebem bi'''....''at the exterior of, outside'' |- | '''be nad bay'''....''in line with'' || '''be uznod bi'''....''alongside'' || '''be tes bi'''....''in the sense of'' |- | '''be teas bi'''....''in the guise of'' || '''be san bi'''....''in the form of'' || '''be yanx bi'''....''in conjunction with'' |- | '''be bol bi'''....''in support of'' || '''be gab bu'''....''in addition to'' || '''be dyun bi'''....''in the name of'' |- | '''be avson bi'''....''on behalf of'' || '''be vyeson bi'''....''on the subject of'' || '''bay yux bi'''....''with the aid of'' |} == Adjectivized Prepositions == : Simple prepositions can be converted into adjectives by suffixing the adjectival ending '''-a'''. Here are some examples: ::* '''aba'''....''superior'' (ex. '''aba doyevam'''....''superior court'') ::* '''oba'''....''inferior'' ::* '''ayba'''....''upper'' ::* '''oyba'''....''lower'' ::* '''yaba'''....''high'' ::* '''yoba'''....''low'' ::* '''eba'''....''in-between'' ::* '''gaba'''....''additional'' ::* '''goba'''....''subtractive'' ::* '''gala'''....''multiple'' ::* '''gaza'''....''logarithmic'' ::* '''gea'''....''equal'' ::* '''gela'''....''same'' ::* '''iba'''....''away'' ::* '''ogea'''....''unequal'' ::* '''jaa'''....''anterior, prior'' ::* '''jea'''....''present'' ::* '''joa'''....''posterior'' ::* '''ava'''....''in favor, favorable, pro'' ::* '''eva'''....''neutral'' ::* '''ova'''....''against, unfavorable, counter'' ::* '''oyva'''....''opposite, inverse'' ::* '''yeba'''....''inner'' ::* '''oyeba'''....''outer'' ::* '''yeza'''....''flush'' ::* '''yuba'''....''near'' ::* '''yiba'''....''far, distant'' ::* '''yiza'''....''extreme, yonder'' ::* '''yuza'''....''circular'' ::* '''zaa'''....''front, anterior'' ::* '''zea'''....''medial, middle'' ::* '''zoa'''....''rear, back, posterior'' ::* '''zia'''....''left'' ::* '''zua'''....''right'' : A slight nuanced meaning can be achieved by suffixing '''-na''' instead of '''-a'''. ::* '''jana'''....''previous'' ::* '''jona'''....''next'' ::* '''zana'''....''next, anterior'' ::* '''zona'''....''last, posterior'' ::* '''ovna'''....''antithetical'' ::* '''yebna'''....''interior, internal'' ::* '''oyebna'''....''exterior, external'' ::* '''zena'''....''central'' ::* '''ebna'''....''intermediate'' ::* '''yizna'''....''ulterior, extreme'' ::* '''yuzna'''....''peripheral'' ::* '''yubna'''....''proximate'' == Prepositions and Adverbs as Verb Prefixes == : Prepositions and adverbs can be prefixed to verbs to alter their directionality. If such a prefix ends in '''-b''' and the verb is a form of '''ber''' (''to put'') or '''per''' (''to go''), the final '''b''' of the prefix is dropped. : Let take the verbs '''per''' (''to go'') and '''ber''' (''to put'') as examples: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Prepositional/Adverbial Prefixes on Verbs |- ! Preposition/Adverb !! '''per''' (intr.) !! '''ber''' (tr.) |- | '''ab'''....''on'' || '''aper'''....''to get on, to board'' || '''aber'''....''to put on, apply'' |- | '''ob'''....''off'' || '''oper'''....''to get off, to dismount'' || '''ober'''....''to take off, remove'' |- | '''eb'''....''between'' || '''eper'''....''to intervene'' || '''eber'''....''to block'' |- | '''ib'''....''away'' || '''iper'''....''to go away'' || '''iber'''....''to receive'' |- | '''ub'''....''toward'' || '''uper'''....''to come'' || '''uber'''....''to send'' |- | '''yab'''....''up'' || '''yaper'''....''to get up, to rise, to ascend'' || '''yaber'''....''to raise'' |- | '''yob'''....''down'' || '''yoper'''....''to get down, to descend'' || '''yober'''....''to lower'' |- | '''yeb'''....''in'' || '''yeper'''....''to get in, to enter'' || '''yeber'''....''to put in'' |- | '''oyeb'''....''out'' || '''oyeper'''....''to get out, to exit'' || '''oyeber'''....''to take out'' |- | '''yub'''....''near'' || '''yuper'''....''to get near, to approach'' || '''yuber'''....''to bring'' |- | '''yib'''....''far'' || '''yiper'''....''to retreat, to distance oneself'' || '''yiber'''....''to remove'' |- | '''yiz'''....''beyond'' || '''yizper'''....''to pass, exceed'' || '''yizber'''....''to pass'' |- | '''yuz'''....''around'' || '''yuzper'''....''to go around, to circulate'' || '''yuzber'''....''to encircle'' |- | '''yez'''....''along'' || '''yezper'''....''to go along'' || '''yezber'''....''to set along'' |- | '''yan'''....''together'' || '''yanper'''....''to get together, to meet'' || '''yanber'''....''to join'' |- | '''yon'''....''apart'' || '''yonper'''....''to go apart, to separate''|| '''yonber'''....''to separate'' |- | '''ja'''....''before'' || '''japer'''....''to go before, to precede'' || '''jaber'''....''to prepare'' |- | '''jo'''....''after'' || '''joper'''....''to go after, to follow''|| '''jober'''....''to postpone'' |- | '''za'''....''front'' || '''zaper'''....''to lead, to go in front''|| '''zaber'''....''to put in front'' |- | '''zo'''....''back'' || '''zoper'''....''to lag, to go in back'' || '''zober'''....''to delay'' |- | '''zay'''....''forward'' || '''zayper'''....''to go forward, to advance'' || '''zayber'''....''to put forward'' |- | '''zoy'''....''backward'' || '''zoyper'''....''to go back, to return'' || '''zoyber'''....''to put back'' |- | '''zey'''....''across'' || '''zeyper'''....''to go across, to transit'' || '''zeyber'''....''to transfer'' |} : If the verb to which a prefixed preposition ending in '''-b''' is attached begins in a '''b''', but a verb other than '''ber''', the '''b''' of the prefix remains. If the stem begins in '''p''', the '''b''' of the prefixed preposition is dropped. ::* '''ab''' + '''byexer'''....''to strike'') => '''abbyexer'''....''to pat'' ::* '''ab''' + '''pyexer'''....''to hit'') => '''apyexer'''....''to attack'' : The above rule is applied, because otherwise, ambiguities could arise. For example, '''abyexer''' could be analyzed as '''ab+byexer''' (''to hit on = to pat'') or '''ab+yexer''' (''to work on''). == Separable Verb Prefixes == : Verbal prefixes that are formed from prepositions and adverbs can usually be "unpacked", that is, treated as separate words. This works like separable verbs in German. The following table demonstrates this: ::{| class="wikitable" style="background:lightyellow; font-size:smaller;" |+ Separable Verb Prefixes |- ! Verb-bound !! Unpacked !! English |- | '''Mapuzlun <u>yuzpa</u> yata tam.''' || '''Mapuzlun <u>pa yuz</u> yata tam.'''||''A tornado circled/went around our house. (= went around)'' |- | '''Ha yux bi calk yeyfe <u>yobnogxwer</u>.''' || '''Ha yux bi cal yeyfe <u>nogxwer yob</u>.'''||''The use of carbon should be downscaled. (= scaled down)'' |- | '''Yat <u>zaybuxo</u> hia dovyabdren.''' || '''Yat <u>buxo</u> hia dovyabdren <u>zay</u>.'''||''We shall advance this legislation. (= push forward)'' |} <noinclude>{{Chapter navigation with TOC|Verbs|Conjunctions}}</noinclude> 1mgz3ain7qwd6eu7hf4f8oduvaojzzd Maxima/Operators 0 438289 4655995 4655970 2026-08-01T14:32:03Z Idavidmiller 3577687 /* Object Operators: */ Work in progress. Saving Changes. 4655995 wikitext text/x-wiki == Maxima Operators == <blockquote>''"Standards are great! That's why there are so many of them, and they change so often."'' ''"What once was forbidden is now required."'' – Unknown</blockquote> === Mathematical Notation and Operators === Mathematical notation was conceived of by different contributors and adopted over a period of time until the present . Standards are important. They help ensure that efforts are consistent and predictable. But if there are standards for notation, then these tend to be ''de facto'' in the absence of some imposed or adopted contextual guidance. Notation is important as this is the means by which mathematical expressions are composed. Much of what is now considered "standard" notation was in use before the advent of computers and programming software. Software such as Maxima that has as its purpose "doing" at least some of what is meant by "mathematics," must provide the means by which mathematical expressions can be composed. Standard or conventional mathematical notation in general is not well-suited for this purpose. Hence, there has been the effort to "shoe horn" expressions into a form that is better suited for composing expressions that conforms to software programming syntax, instead of developing software systems that can compose and interpret the full spectrum of existing mathematical expressions, presumably because the former is technically simpler. There has been more success in the form of output expressions in terms of conforming to standard mathematical notation. Object OperatorsMaxima is mostly about mathematical expressions, and these expressions are composed of operators and atoms. Atoms are relatively the simpler ingredient for use in composing expressions – numerical and string data types, but also identifiers, especially those that are not assigned a value, and hence may be considered variables. Operators are the ingredient where much of the "heavy lifting" occurs with respect to expression composition, and operators need some means to be expressed. Maxima operators are all some sort of "function" (or in Lisp, a procedure) in the programming language sense of the word. This is important to understand. Even something as simple as the expression of a sum is a based on a function. For example, consider the Maxima expressions:<syntaxhighlight lang="maxima"> (%i1) e+3; (%o1) e+3 (%i2) :lisp #$[e+3]$ ((MLIST SIMP) ((MPLUS SIMP) 3 $E)) </syntaxhighlight> Notice that a sum is simply the Lisp procedure <code>MPLUS</code>. What is true here for the <code>+</code> operator is true in general – operators are either implicitly or explicitly a function in the programming sense of the word. For those used to conventional mathematical notation, this fact can take some getting used to. What this means in practice when composing Maxima expressions is that the form of the input may often not resemble what looks like conventional mathematical notation regardless of how well the output or value of the expressions represents the form of conventional mathematical notation. Maxima user interfaces such as ''wxMaxima'' and ''GNU TeXmacs'' are capable of rendering the output of Maxima expressions in a way that represents conventional mathematical notation quite well. However, once again, the input expressions in these and similar user interfaces always are explicitly and literally composed of Maxima atoms and operators. There is a sense in which then, Maxima imposes an alternative form of mathematical notation for input purposes. This quite simply put is the current state of affairs with respect to doing what Maxima does using a language and syntax that is compatible with computers. Maxima users have to get used to the fact that, in general, they are in a sense constrained to use a different species of mathematical notation for composing input expressions. Operators are the ingredient where this fact becomes most obvious. There is a last subsection of this section that provides some insight into the issue of conventional mathematical notation and mathematical computer software systems such as Maxima. This subsection is included for those that have an interest. === Maxima Operators === Maxima operators can be considered as belonging to the same categories as expressions: * Mathematical operators * Programming operators * Object operators The technical details for some of these operators are found in sections of this book devoted to each of these categories of expressions. It is worth repeating that built-in Maxima operators and operators defined in packages are, for better or worse, often referred to as ''functions'' and not ''operators''. This practice can lead to some confusion as there are also user-defined functions in the programming sense of the word, and then there is the mathematical concept of a function. For the sake of clarity and simplicity, in this book, Maxima operators and operators defined in packages are referred to simply as ''operators''. Having made that point, it should be noted that users can define new operators with specified precedence, <code>remove</code> or <code>kill</code> existing operator properties, or redefine the precedence of existing operators. Refer to the Maxima Documentation (section '''9.1 Introduction to operators''') for more information. The general form of most Maxima operators is: <code>foo (args)</code> where <code>args</code> is a comma separated sequence of ''arguments'' – zero, one or many. For example:<syntaxhighlight lang="maxima">(%i3) to_lisp (); /* an operator with zero arguments */ Type (to-maxima) to restart, ($quit) to quit Maxima. :LISP-QUIET NIL MAXIMA> (to-maxima) Returning to Maxima (%o3) true (%i4) op ([1,arg]); /* an operator with one argument - a list object */ (%o4) [ (%i5) apply(f, [a1, a2, a3]); /* an operator with multiple arguments */ (%o5) f(a1,a2,a3) /* A list operator ( [ ) with two operators (op and args) as arguments */ (%i6) [op (%i5), args (%i5)]; (%o6) [apply,[f,[a1,a2,a3]]]</syntaxhighlight>The operators <code>op(expr)</code> and <code>args(expr)</code> can be useful for checking the "main" operator of expressions and the arguments of expressions. +.+ === Some Typical Categories, Descriptions and Examples of Maxima Operators === Maxima often-used operators include a colon ( <code>:</code> ) for assignment, <code>:=</code> and <code>define()</code> for function definitions, and <code>block()</code> for multi-line code. Examples include '''assignments''', '''function definitions''', '''loops''' '''or conditionals, and object expressions''', as exemplified below: [1, 2, 3] ===== Variable Assignment and Basic Math Expression Operators: ===== * <code>a : 5;</code> — assigns the value <code>5</code> to the name <code>a</code> using a single colon. * <code>poly : expand((x + y)^3);</code> — expands a binomial expression and assigns the value to the name <code>poly</code>. * <code>subst(</code><code>x = 2, x^2 + y);</code> — substitutes a value into an algebraic expression. [1, 2, 7] ===== User-Defined Functions and Built-In Operator Expressions: ===== * <code>f(x) := x^2 - 3*x + 2;</code> — defines a single-line function using the <code>:=</code> operator. * <code>integrate(f(x), x, 0, 1);</code> — the definite integral of the expression <code>f(x)</code> from <code>0</code> to <code>1</code>. * <code>diff(f(x), x, 2);</code> — calculates the second derivative of <code>f(x)</code> with respect to <code>x</code>. [1, 8, 9, 10] ===== Control Flow and Block Programming Operator Expressions: ===== * <code>if x > 0 then print("Positive") else print("Non-positive");</code>— conditional branching expression. * <code>for i : 1 thru 5 do display(i^2);</code> — a standard loop iterating from <code>1</code> to <code>5</code>. * <code>block([s : 0], for i : 1 thru 10 do s : s + i, s);</code> — a local variable <code>block</code> operator that sums numbers from <code>1</code> to <code>10</code> and returns the final value <code>s</code> . [1, 2, 3, 11] ===== Object Operator Expressions: ===== * '''Lists''' '''and Sets:''' <code>[1, 2, x, y]</code> builds a list object, while <code>{a, b, c}</code> denotes a set object. * '''Matrices:''' <code>matrix([1, 2], [3, 4])</code> defines a 2x2 matrix object using nested rows of list objects. [12, 13, 14, 15, 16] [1] <nowiki>https://mathblog.com/a-10-minute-tutorial-for-solving-math-problems-with-maxima/</nowiki> [2] <nowiki>https://docs.stack-assessment.org/en/CAS/Maxima_background/</nowiki> [3] <nowiki>https://maxima.sourceforge.io/docs/tutorial/en/gaertner-tutorial-revision/Pages/Programming0002.htm</nowiki> [4] <nowiki>https://maxima.sourceforge.io/documentation.html</nowiki> [5] <nowiki>https://staff.tu.kielce.pl/sk/media/downloads/pi/pi-maxima-calculus-i.pdf</nowiki> [6] <nowiki>http://michel.gosse.free.fr/documentation/fichiers/maxima_sg.pdf</nowiki> [7] <nowiki>https://maxima.sourceforge.io/docs/manual/intromax.html</nowiki> [8] <nowiki>https://maxima.sourceforge.io/docs/manual/intromax.pdf</nowiki> [9] <nowiki>https://medium.com/@bragadeeshs/how-to-navigate-maxima-and-minima-in-machine-learning-optimization-5eee9bc67303</nowiki> [10] <nowiki>https://blogs.sas.com/content/sgf/2018/11/13/customize-your-casl-code-with-built-in-and-user-defined-functions/</nowiki> [11] <nowiki>https://maths.cnam.fr/Membres/wilk/MathMax/help/Maxima/maxima_6.html</nowiki> [12] <nowiki>https://moodle.hft-stuttgart.de/question/type/stack/doc/doc.php/CAS/Maxima_background.md</nowiki> [13] <nowiki>https://docs.stack-assessment.org/en/CAS/Maxima_background/</nowiki> [14] <nowiki>https://maths.cnam.fr/Membres/wilk/MathMax/help/Maxima/maxima_6.html</nowiki> [15] <nowiki>https://maxima.sourceforge.io/docs/manual/Expressions.html</nowiki> [16] <nowiki>https://maxima.sourceforge.io/docs/tutorial/en/minimal-maxima.pdf</nowiki> === Some Additional Examples of Maxima Operators === ==== <u>Mathematical Operators</u>: ==== <syntaxhighlight lang="maxima"> (%i7) subst(x = 2, x^2 + y); (%o7) y+4 (%i8) 40^40/100^20; (%o8) 1208925819614629174706176 (%i9) factor(%); (%o9) 2^80 (%i10) diff((a+2)/(a+x),x,1); (%o10) -((a+2)/(x+a)^2) (%i11) %,x=2; (%o11) -(1/(a+2)) (%i12) simp:false; (simp) false (%i13) %e^(%i*%pi)+1=0; (%o13) %e^(%i*%pi)+1=0 (%i14) simp:true; (simp) true (%i15) 'integrate(%e^(-x^2),x); (%o15) integrate(%e^(-x^2),x) (%i16) test(f):=block([u],u:integrate(f,x),ratsimp(f-diff(u,x))) (%o16) test(f):=block([u],u:integrate(f,x),ratsimp(f-'diff(u,x))) (%i17) test(sin(x)) (%o17) 0 (%i18) test(1/(1+x)) (%o18) 0 (%i19) test(1/(1+x^2)) (%o19) 0 (%i20) integrate(sin(x)^3,x) (%o20) cos(x)^3/3-cos(x) (%i21) kill(q)$ (%i22) integrate(%e^x/(%e^x+2),x) (%o22) log(%e^x+2) (%i23) integrate(1/(x*log(x)),x) (%o23) log(log(x)) (%i24) integrate(sin(2*x+3),x) (%o24) -(cos(2*x+3)/2) (%i25) integrate(%e^x*erf(x),x) (%o25) %e^x*erf(x)-%e^(1/4)*erf(x-1/2) (%i26) integrate(x/(x^3+1),x) (%o26) log(x^2-x+1)/6+atan((2*x-1)/sqrt(3))/sqrt(3)-log(x+1)/3 (%i27) diff(%,x) (%o27) 2/(3*((2*x-1)^2/3+1))+(2*x-1)/(6*(x^2-x+1))-1/(3*(x+1)) (%i28) ratsimp(%) (%o28) x/(x^3+1) (%i29) integrate(x^(5/4)/(x+1)^(5/2),x,0,inf) (%o29) beta(1/4,9/4) (%i30) gradef(q(x),sin(x^2)) (%o30) q(x) (%i31) diff(log(q(r(x))),x) (%o31) (('diff(r(x),x))*sin(r(x)^2))/q(r(x)) (%i32) integrate(%,x) (%o32) log(q(r(x))) </syntaxhighlight> ==== <u>Programming Operators</u>: ==== <syntaxhighlight lang="maxima">(%i33) for c:2 next 3*c thru 20 do display (c)$ c=2 c=6 c=18 (%i34) for i:1 thru 10 do if i=3 then return(i); (%o34) 3 (%i35) t:0$ (%i36) for i:1 while i <= 15 do t:2*t+i; (%o36) done (%i37) t; (%o37) 65519 (%i52) example(If); (%i53) fib[n]:=if n = 1 or n = 2 then 1 else fib[n-1]+fib[n-2] (%o53) fib[n]:=if n=1 or n=2 then 1 else fib[n-1]+fib[n-2] (%i54) fib[1]+fib[2] (%o54) 2 (%i55) fib[3] (%o55) 2 (%i56) fib[5] (%o56) 5 (%i57) eta(mu,nu):=if mu = nu then mu else (if mu > nu then mu-nu else mu+nu) (%o57) eta(mu,nu):=if mu=nu then mu else if mu>nu then mu-nu else mu+nu (%i58) eta(5,6) (%o58) 11 (%i59) eta(eta(7,7),eta(1,2)) (%o59) 4 (%i60) if not 5 >= 2 and 6 <= 5 or 4+1 > 3 then a else b (%o60) a (%o60) done </syntaxhighlight> ==== <u>Object Operators</u>: ==== Official documentation and guides for operators are available through the Maxima Manual and the Maxima SourceForge Documentation Hub. [4, 5, 6] === Some Information Related to Mathematical Notation === There is no single, universal standard that dictates mathematical notation across all branches of math. Instead, notation varies by discipline, publisher, and sub-field. There are widely accepted conventions and formal frameworks that serve as references. The general topic of mathematical notation is beyond the scope of this book. However, mathematical notation does have some relevance in the context of Maxima as a computer algebra system. Stephen Wolfram’s perspective in ''Mathematical Notation: Past and Future'' traces how symbols evolved from static, human-readable shorthand into active, executable computational language. The historical development moved from additive numerals and natural language prose toward structured operators and variables, while the future shifts toward programmatic, interactive, and "computable" expressions. [1, 2, 3, 4] ===== <u>The Past of Mathematical Notation</u>: ===== * '''Evolution of Symbols:''' Early counting relied on unary notches and additive systems (like Egyptian hieroglyphs), eventually shifting to Hindu-Arabic base-10 positional numerals. * '''Introduction of Operators:''' Algebraic variables, plus/minus signs, and calculus notations (such as Leibniz's <math display="inline">\operatorname{d}\!y/\operatorname{d}\!x </math> and <math display="inline">\int</math> ) emerged primarily during the 16th and 17th centuries to replace cumbersome natural language descriptions. * '''Standardization Limits:''' Traditional notation worked well for manual formula writing, but lacked any native capability to generalize into automated, multi-step computations or algorithmic processes. [3, 7] ===== <u>The Future of Mathematical Notation:</u> ===== * '''Computational Language:''' Transitioning from passive text on paper to active, uniform symbolic structures. * '''Programmatic Models:''' Replacing traditional passive equations with active programs capable of executing models across physics, biology, and social sciences. * '''Universal Access:''' Utilizing interactive, graphical, and automated systems to democratize complex technical thinking much like mass literacy changed society centuries ago. [1, 4] [1] <nowiki>https://www.stephenwolfram.com/publications/mathematical-notation-past-future/</nowiki> [2] <nowiki>https://lukegilson.co/2020/04/05/quick-notes-on-wolframs-mathematic-notation-past-and-future/</nowiki> [3] <nowiki>https://www.wolframscience.com/nks/notes-12-10--mathematical-notation/</nowiki> [4] <nowiki>https://writings.stephenwolfram.com/2020/10/our-mission-and-the-opportunity-of-artifacts-from-the-future/</nowiki> [5] <nowiki>https://library.wolfram.com/infocenter/Demos/4952/</nowiki> [6] <nowiki>https://writings.stephenwolfram.com/2013/05/dropping-in-on-gottfried-leibniz/</nowiki> [7] <nowiki>https://sites.math.rutgers.edu/~zeilberg/Opinion64.html</nowiki> [8] <nowiki>https://physicsworld.com/a/exploring-the-computational-universe-with-stephen-wolfram/</nowiki> '''The Future of Notation:''' Read Stephen Wolfram's ''Mathematical Notation: Past and Future'' to learn how the history of notation shapes modern computation. [1]<blockquote> ''"Now I have to tell you that I had always assumed that mathematical notation was too haphazard to be used as any kind of thing that a computer could reasonably interpret in a rigorous way. But at the beginning of the 1990s we got interested in making Mathematica be able to interact with mathematical notation. And so we realized that we really had to figure out what was going on with mathematical notation.'' ''Neil Soiffer had spent quite a number of years working on editing and interpreting mathematical notation, and when he joined our company in 1991, he started trying to convince me that one really could work with mathematical notation in a reasonable way, for both output and input.'' ''The output side was pretty straightforward: after all, TROFF and TeX already did a moderately good job with that.'' ''The issue was input.'' ''Well, actually, one already learned something from output. One learned that at least at some level, a lot of mathematical notation could be represented in some kind of context-free form. Because one knew that in TeX, for instance, one could set things up in a tree of nested boxes.'' ''But how about input? Well, one of the biggest things was something that always comes up in parsing: if you have a string of text, with operands and operators, how do you tell what groups with what?"<br />'' – Stephen Wolfram</blockquote>{{Bookcat}} {{Status|0%}} l16knufwyz3fqhnm0rsxlsl3psqudg7 4655998 4655995 2026-08-01T15:15:05Z Idavidmiller 3577687 Work in progress. Saving Changes. 4655998 wikitext text/x-wiki == Maxima Operators == <blockquote>''"Standards are great! That's why there are so many of them, and they change so often."'' ''"What once was forbidden is now required."'' – Unknown</blockquote> === Mathematical Notation and Operators === Mathematical notation was conceived of by different contributors and adopted over a period of time until the present . Standards are important. They help ensure that efforts are consistent and predictable. But if there are standards for notation, then these tend to be ''de facto'' in the absence of some imposed or adopted contextual guidance. Notation is important as this is the means by which mathematical expressions are composed. Much of what is now considered "standard" notation was in use before the advent of computers and programming software. Software such as Maxima that has as its purpose "doing" at least some of what is meant by "mathematics," must provide the means by which mathematical expressions can be composed. Standard or conventional mathematical notation in general is not well-suited for this purpose. Hence, there has been the effort to "shoe horn" expressions into a form that is better suited for composing expressions that conforms to software programming syntax, instead of developing software systems that can compose and interpret the full spectrum of existing mathematical expressions, presumably because the former is technically simpler. There has been more success in the form of output expressions in terms of conforming to standard mathematical notation. Object OperatorsMaxima is mostly about mathematical expressions, and these expressions are composed of operators and atoms. Atoms are relatively the simpler ingredient for use in composing expressions – numerical and string data types, but also identifiers, especially those that are not assigned a value, and hence may be considered variables. Operators are the ingredient where much of the "heavy lifting" occurs with respect to expression composition, and operators need some means to be expressed. Maxima operators are all some sort of "function" (or in Lisp, a procedure) in the programming language sense of the word. This is important to understand. Even something as simple as the expression of a sum is a based on a function. For example, consider the Maxima expressions:<syntaxhighlight lang="maxima"> (%i1) e+3; (%o1) e+3 (%i2) :lisp #$[e+3]$ ((MLIST SIMP) ((MPLUS SIMP) 3 $E)) </syntaxhighlight> Notice that a sum is simply the Lisp procedure <code>MPLUS</code>. What is true here for the <code>+</code> operator is true in general – operators are either implicitly or explicitly a function in the programming sense of the word. For those used to conventional mathematical notation, this fact can take some getting used to. What this means in practice when composing Maxima expressions is that the form of the input may often not resemble what looks like conventional mathematical notation regardless of how well the output or value of the expressions represents the form of conventional mathematical notation. Maxima user interfaces such as ''wxMaxima'' and ''GNU TeXmacs'' are capable of rendering the output of Maxima expressions in a way that represents conventional mathematical notation quite well. However, once again, the input expressions in these and similar user interfaces always are explicitly and literally composed of Maxima atoms and operators. There is a sense in which then, Maxima imposes an alternative form of mathematical notation for input purposes. This quite simply put is the current state of affairs with respect to doing what Maxima does using a language and syntax that is compatible with computers. Maxima users have to get used to the fact that, in general, they are in a sense constrained to use a different species of mathematical notation for composing input expressions. Operators are the ingredient where this fact becomes most obvious. There is a last subsection of this section that provides some insight into the issue of conventional mathematical notation and mathematical computer software systems such as Maxima. This subsection is included for those that have an interest. === Maxima Operators === Maxima operators can be considered as belonging to the same categories as expressions: * Mathematical operators * Programming operators * Object operators The technical details for some of these operators are found in sections of this book devoted to each of these categories of expressions. It is worth repeating that built-in Maxima operators and operators defined in packages are, for better or worse, often referred to as ''functions'' and not ''operators''. This practice can lead to some confusion as there are also user-defined functions in the programming sense of the word, and then there is the mathematical concept of a function. For the sake of clarity and simplicity, in this book, Maxima operators and operators defined in packages are referred to simply as ''operators''. Having made that point, it should be noted that users can define new operators with specified precedence, <code>remove</code> or <code>kill</code> existing operator properties, or redefine the precedence of existing operators. Refer to the Maxima Documentation (section '''9.1 Introduction to operators''') for more information. The general form of most Maxima operators is: <code>foo (args)</code> where <code>args</code> is a comma separated sequence of ''arguments'' – zero, one or many. For example:<syntaxhighlight lang="maxima">(%i3) to_lisp (); /* an operator with zero arguments */ Type (to-maxima) to restart, ($quit) to quit Maxima. :LISP-QUIET NIL MAXIMA> (to-maxima) Returning to Maxima (%o3) true (%i4) op ([1,arg]); /* an operator with one argument - a list object */ (%o4) [ (%i5) apply(f, [a1, a2, a3]); /* an operator with multiple arguments */ (%o5) f(a1,a2,a3) /* A list operator ( [ ) with two operators (op and args) as arguments */ (%i6) [op (%i5), args (%i5)]; (%o6) [apply,[f,[a1,a2,a3]]]</syntaxhighlight>The operators <code>op(expr)</code> and <code>args(expr)</code> can be useful for checking the "main" operator of expressions and the arguments of expressions. +.+ === Some Typical Categories, Descriptions and Examples of Maxima Operators === Maxima often-used operators include a colon ( <code>:</code> ) for assignment, <code>:=</code> and <code>define()</code> for function definitions, and <code>block()</code> for multi-line code. Examples include '''assignments''', '''function definitions''', '''loops''' '''or conditionals, and object expressions''', as exemplified below: [1, 2, 3] ===== Variable Assignment and Basic Math Expression Operators: ===== * <code>a : 5;</code> — assigns the value <code>5</code> to the name <code>a</code> using a single colon. * <code>poly : expand((x + y)^3);</code> — expands a binomial expression and assigns the value to the name <code>poly</code>. * <code>subst(</code><code>x = 2, x^2 + y);</code> — substitutes a value into an algebraic expression. [1, 2, 7] ===== User-Defined Functions and Built-In Operator Expressions: ===== * <code>f(x) := x^2 - 3*x + 2;</code> — defines a single-line function using the <code>:=</code> operator. * <code>integrate(f(x), x, 0, 1);</code> — the definite integral of the expression <code>f(x)</code> from <code>0</code> to <code>1</code>. * <code>diff(f(x), x, 2);</code> — calculates the second derivative of <code>f(x)</code> with respect to <code>x</code>. [1, 8, 9, 10] ===== Control Flow and Block Programming Operator Expressions: ===== * <code>if x > 0 then print("Positive") else print("Non-positive");</code>— conditional branching expression. * <code>for i : 1 thru 5 do display(i^2);</code> — a standard loop iterating from <code>1</code> to <code>5</code>. * <code>block([s : 0], for i : 1 thru 10 do s : s + i, s);</code> — a local variable <code>block</code> operator that sums numbers from <code>1</code> to <code>10</code> and returns the final value <code>s</code> . [1, 2, 3, 11] ===== Object Operator Expressions: ===== * '''Lists''' '''and Sets:''' <code>[1, 2, x, y]</code> builds a list object, while <code>{a, b, c}</code> denotes a set object. * '''Matrices:''' <code>matrix([1, 2], [3, 4])</code> defines a 2x2 matrix object using nested rows of list objects. [12, 13, 14, 15, 16] [1] <nowiki>https://mathblog.com/a-10-minute-tutorial-for-solving-math-problems-with-maxima/</nowiki> [2] <nowiki>https://docs.stack-assessment.org/en/CAS/Maxima_background/</nowiki> [3] <nowiki>https://maxima.sourceforge.io/docs/tutorial/en/gaertner-tutorial-revision/Pages/Programming0002.htm</nowiki> [4] <nowiki>https://maxima.sourceforge.io/documentation.html</nowiki> [5] <nowiki>https://staff.tu.kielce.pl/sk/media/downloads/pi/pi-maxima-calculus-i.pdf</nowiki> [6] <nowiki>http://michel.gosse.free.fr/documentation/fichiers/maxima_sg.pdf</nowiki> [7] <nowiki>https://maxima.sourceforge.io/docs/manual/intromax.html</nowiki> [8] <nowiki>https://maxima.sourceforge.io/docs/manual/intromax.pdf</nowiki> [9] <nowiki>https://medium.com/@bragadeeshs/how-to-navigate-maxima-and-minima-in-machine-learning-optimization-5eee9bc67303</nowiki> [10] <nowiki>https://blogs.sas.com/content/sgf/2018/11/13/customize-your-casl-code-with-built-in-and-user-defined-functions/</nowiki> [11] <nowiki>https://maths.cnam.fr/Membres/wilk/MathMax/help/Maxima/maxima_6.html</nowiki> [12] <nowiki>https://moodle.hft-stuttgart.de/question/type/stack/doc/doc.php/CAS/Maxima_background.md</nowiki> [13] <nowiki>https://docs.stack-assessment.org/en/CAS/Maxima_background/</nowiki> [14] <nowiki>https://maths.cnam.fr/Membres/wilk/MathMax/help/Maxima/maxima_6.html</nowiki> [15] <nowiki>https://maxima.sourceforge.io/docs/manual/Expressions.html</nowiki> [16] <nowiki>https://maxima.sourceforge.io/docs/tutorial/en/minimal-maxima.pdf</nowiki> === Some Additional Examples of Maxima Operators === ==== <u>Mathematical Operators</u>: ==== <syntaxhighlight lang="maxima"> (%i7) subst(x = 2, x^2 + y); (%o7) y+4 (%i8) 40^40/100^20; (%o8) 1208925819614629174706176 (%i9) factor(%); (%o9) 2^80 (%i10) diff((a+2)/(a+x),x,1); (%o10) -((a+2)/(x+a)^2) (%i11) %,x=2; (%o11) -(1/(a+2)) (%i12) simp:false; (simp) false (%i13) %e^(%i*%pi)+1=0; (%o13) %e^(%i*%pi)+1=0 (%i14) simp:true; (simp) true (%i15) 'integrate(%e^(-x^2),x); (%o15) integrate(%e^(-x^2),x) (%i16) test(f):=block([u],u:integrate(f,x),ratsimp(f-diff(u,x))) (%o16) test(f):=block([u],u:integrate(f,x),ratsimp(f-'diff(u,x))) (%i17) test(sin(x)) (%o17) 0 (%i18) test(1/(1+x)) (%o18) 0 (%i19) test(1/(1+x^2)) (%o19) 0 (%i20) integrate(sin(x)^3,x) (%o20) cos(x)^3/3-cos(x) (%i21) kill(q)$ (%i22) integrate(%e^x/(%e^x+2),x) (%o22) log(%e^x+2) (%i23) integrate(1/(x*log(x)),x) (%o23) log(log(x)) (%i24) integrate(sin(2*x+3),x) (%o24) -(cos(2*x+3)/2) (%i25) integrate(%e^x*erf(x),x) (%o25) %e^x*erf(x)-%e^(1/4)*erf(x-1/2) (%i26) integrate(x/(x^3+1),x) (%o26) log(x^2-x+1)/6+atan((2*x-1)/sqrt(3))/sqrt(3)-log(x+1)/3 (%i27) diff(%,x) (%o27) 2/(3*((2*x-1)^2/3+1))+(2*x-1)/(6*(x^2-x+1))-1/(3*(x+1)) (%i28) ratsimp(%) (%o28) x/(x^3+1) (%i29) integrate(x^(5/4)/(x+1)^(5/2),x,0,inf) (%o29) beta(1/4,9/4) (%i30) gradef(q(x),sin(x^2)) (%o30) q(x) (%i31) diff(log(q(r(x))),x) (%o31) (('diff(r(x),x))*sin(r(x)^2))/q(r(x)) (%i32) integrate(%,x) (%o32) log(q(r(x))) </syntaxhighlight> ==== <u>Programming Operators</u>: ==== <syntaxhighlight lang="maxima">(%i33) for c:2 next 3*c thru 20 do display (c)$ c=2 c=6 c=18 (%i34) for i:1 thru 10 do if i=3 then return(i); (%o34) 3 (%i35) t:0$ (%i36) for i:1 while i <= 15 do t:2*t+i; (%o36) done (%i37) t; (%o37) 65519 (%i38) fib[n]:=if n=1 or n=2 then 1 else fib[n-1]+fib[n-2]; (%o38) fib[n]:=if n=1 or n=2 then 1 else fib[n-1]+fib[n-2] (%i38) fib[1]+fib[2]; (%o38) 2 (%i39) fib[3]; (%o39) 2 (%i40) fib[5]; (%o40) 5 (%i41) eta(mu,nu):=if mu=nu then mu else (if mu>nu then mu-nu else mu+nu); (%o41) eta(mu,nu):=if mu=nu then mu else if mu>nu then mu-nu else mu+nu (%i42) eta(5,6); (%o42) 11 (%i43) eta(eta(7,7),eta(1,2)); (%o43) 4 (%i44) if not 5 >= 2 and 6 <= 5 or 4+1 > 3 then a else b; (%o44) a </syntaxhighlight> ==== <u>Object Operators</u>: ==== Official documentation and guides for operators are available through the Maxima Manual and the Maxima SourceForge Documentation Hub. [4, 5, 6] === Some Information Related to Mathematical Notation === There is no single, universal standard that dictates mathematical notation across all branches of math. Instead, notation varies by discipline, publisher, and sub-field. There are widely accepted conventions and formal frameworks that serve as references. The general topic of mathematical notation is beyond the scope of this book. However, mathematical notation does have some relevance in the context of Maxima as a computer algebra system. Stephen Wolfram’s perspective in ''Mathematical Notation: Past and Future'' traces how symbols evolved from static, human-readable shorthand into active, executable computational language. The historical development moved from additive numerals and natural language prose toward structured operators and variables, while the future shifts toward programmatic, interactive, and "computable" expressions. [1, 2, 3, 4] ===== <u>The Past of Mathematical Notation</u>: ===== * '''Evolution of Symbols:''' Early counting relied on unary notches and additive systems (like Egyptian hieroglyphs), eventually shifting to Hindu-Arabic base-10 positional numerals. * '''Introduction of Operators:''' Algebraic variables, plus/minus signs, and calculus notations (such as Leibniz's <math display="inline">\operatorname{d}\!y/\operatorname{d}\!x </math> and <math display="inline">\int</math> ) emerged primarily during the 16th and 17th centuries to replace cumbersome natural language descriptions. * '''Standardization Limits:''' Traditional notation worked well for manual formula writing, but lacked any native capability to generalize into automated, multi-step computations or algorithmic processes. [3, 7] ===== <u>The Future of Mathematical Notation:</u> ===== * '''Computational Language:''' Transitioning from passive text on paper to active, uniform symbolic structures. * '''Programmatic Models:''' Replacing traditional passive equations with active programs capable of executing models across physics, biology, and social sciences. * '''Universal Access:''' Utilizing interactive, graphical, and automated systems to democratize complex technical thinking much like mass literacy changed society centuries ago. [1, 4] [1] <nowiki>https://www.stephenwolfram.com/publications/mathematical-notation-past-future/</nowiki> [2] <nowiki>https://lukegilson.co/2020/04/05/quick-notes-on-wolframs-mathematic-notation-past-and-future/</nowiki> [3] <nowiki>https://www.wolframscience.com/nks/notes-12-10--mathematical-notation/</nowiki> [4] <nowiki>https://writings.stephenwolfram.com/2020/10/our-mission-and-the-opportunity-of-artifacts-from-the-future/</nowiki> [5] <nowiki>https://library.wolfram.com/infocenter/Demos/4952/</nowiki> [6] <nowiki>https://writings.stephenwolfram.com/2013/05/dropping-in-on-gottfried-leibniz/</nowiki> [7] <nowiki>https://sites.math.rutgers.edu/~zeilberg/Opinion64.html</nowiki> [8] <nowiki>https://physicsworld.com/a/exploring-the-computational-universe-with-stephen-wolfram/</nowiki> '''The Future of Notation:''' Read Stephen Wolfram's ''Mathematical Notation: Past and Future'' to learn how the history of notation shapes modern computation. [1]<blockquote> ''"Now I have to tell you that I had always assumed that mathematical notation was too haphazard to be used as any kind of thing that a computer could reasonably interpret in a rigorous way. But at the beginning of the 1990s we got interested in making Mathematica be able to interact with mathematical notation. And so we realized that we really had to figure out what was going on with mathematical notation.'' ''Neil Soiffer had spent quite a number of years working on editing and interpreting mathematical notation, and when he joined our company in 1991, he started trying to convince me that one really could work with mathematical notation in a reasonable way, for both output and input.'' ''The output side was pretty straightforward: after all, TROFF and TeX already did a moderately good job with that.'' ''The issue was input.'' ''Well, actually, one already learned something from output. One learned that at least at some level, a lot of mathematical notation could be represented in some kind of context-free form. Because one knew that in TeX, for instance, one could set things up in a tree of nested boxes.'' ''But how about input? Well, one of the biggest things was something that always comes up in parsing: if you have a string of text, with operands and operators, how do you tell what groups with what?"<br />'' – Stephen Wolfram</blockquote>{{Bookcat}} {{Status|0%}} 2j84u17j33od1yp3ggmf8cv1bpu34ob Chess Opening Theory/1. e4/1...c6/2. Nc3/2...d5/3. Nf3 0 443138 4655999 4466884 2026-08-01T15:34:47Z Greenman 7490 No need 4655999 wikitext text/x-wiki {{Chess Opening Theory/Position|= |Caro-Kann Defence: Two Knights Attack| |eco=[[Chess/ECOB|B10]] }} = Caro-Kann Defence: Two Knights Attack = Black's two most common moves in this position are 3...Bg4 (the Mindeno Variation) and 3...dxe4. ==Theory table== {{Chess Opening Theory/Table}} '''1. e4 c6 2. Nc3 d5 3. Nf3''' <table border="0" cellspacing="0" cellpadding="4"> <tr> <th></th> <th align="left">3</th> <th align="left">4</th> <th align="left">5</th> <th align="left">6</th> <th align="left">7</th> </tr> <tr> <th align="right">Mindeno Variation</th> <td>...<br>[[/3...Bg4|Bg4]]</td> <td>h3<br>Bxf3</td> <td>Qxf3<br></td> <td>{{chesspunc|equal}}</td> </tr> <tr> <th align="right"></th> <td>...<br>[[/3...dxe4|dxe4]]</td> <td>Nxe4<br>Nf6</td> <td>Qe2<br>Nxe4</td> <td>Qxe4<br>Nd7</td> <td>[[/3...dxe4/4. Nxe4/4...Nf6/5. Qe2/5...Nxe4/6. Qxe4/6...Nd7/7. d4|d4]]<br></td> <td>{{chesspunc|equal}}</td> </tr> <tr> <th align="right"></th> <td>...<br>[[/3...Nf6|Nf6]]</td> <td>e5<br>Ne4</td> <td>Ne2<br>Qb6</td> <td>d4<br>e6</td> <td>{{chesspunc|+1}}</td> </tr> </table> {{Wikipedia|Caro-Kann}} {{ChessMid}} {{Chess Opening Theory/Footer}} mv35klf7wj33ujyuadrzi2ibsqf8w28 4656000 4655999 2026-08-01T15:39:50Z Greenman 7490 /* Theory table */ template 4656000 wikitext text/x-wiki {{Chess Opening Theory/Position|= |Caro-Kann Defence: Two Knights Attack| |eco=[[Chess/ECOB|B10]] }} = Caro-Kann Defence: Two Knights Attack = Black's two most common moves in this position are 3...Bg4 (the Mindeno Variation) and 3...dxe4. ==Theory table== {{ChessTable}} {{Chess/theory table |name1= |line1=3... Bg4 4. h3 Bxf3 5. Qxf3 |eval1= = |name2= |line2=3... dxe4 4. Nxe4 Nf6 5. Qe2 Nxe4 6. Qxe4 Nd7 7. d4 |eval2= = |name3= |line3=3... Nf6 4. e5 Ne4 5. Ne2 Qb6 6. d4 e6 |eval3= ⩲ }} {{Wikipedia|Caro-Kann}} {{ChessMid}} {{Chess Opening Theory/Footer}} n7ljmp3ekb9aof53qkege91j5khncf0 Chess Opening Theory/1. e4/1...d6/2. d4/2...Nf6/3. Nc3/3...c6 0 474916 4656016 4655986 2026-08-01T22:35:36Z Greenman 7490 ce 4656016 wikitext text/x-wiki {{Chess Opening Theory/Position |Czech Defense |parent=[[../|Pirc Defense]] }} =Czech Defense= ===3...c6=== The Czech Defense is a flexible and multipurpose system within the Pirc family. The move 3...c6 serves several key functions: it supports control over critical squares b5 and d5, helping to prevent White’s knight or bishop from infiltrating there. Additionally, it opens up possibilities for Black’s queen to develop actively with ...Qa5 or ...Qb6. Black often follows with ...Qc7, ...Nbd7, and ...Be7, aiming for a solid but dynamic structure where ...e5 or ...d5 can be played at the right moment. While the setup may look somewhat restrained, it provides Black with flexible counterplay options, including queenside expansion or timely central breaks. It is considered a good counter-attack against openings such as London System and can break the preparation of your opponent, and is a highly attacking opening. ==Theory table== :'''1. e4 d6 2. d4 Nf6 3. Nc3 c6''' {{ChessMid}} ==References== {{reflist}} {{BCO2}} {{Chess Opening Theory/Footer}} 2c0qh7fazp94y8r3m6b0e3ce50r18ge 4656017 4656016 2026-08-01T22:35:56Z Greenman 7490 /* Czech Defense */ ce 4656017 wikitext text/x-wiki {{Chess Opening Theory/Position |Czech Defense |parent=[[../|Pirc Defense]] }} =Czech Defense= ===3...c6=== The Czech Defense is a flexible and multipurpose system within the Pirc family. The move 3...c6 serves several key functions: it supports control over critical squares b5 and d5, helping to prevent White’s knight or bishop from infiltrating there. Additionally, it opens up possibilities for Black’s queen to develop actively with ...Qa5 or ...Qb6. Black often follows with ...Qc7, ...Nbd7, and ...Be7, aiming for a solid but dynamic structure where ...e5 or ...d5 can be played at the right moment. While the setup may look somewhat restrained, it provides Black with flexible counterplay options, including queenside expansion or timely central breaks. It is considered a good counter-attack against openings such as the London System and can break the preparation of your opponent, and is a highly attacking opening. ==Theory table== :'''1. e4 d6 2. d4 Nf6 3. Nc3 c6''' {{ChessMid}} ==References== {{reflist}} {{BCO2}} {{Chess Opening Theory/Footer}} 8nr8trc55z97n4j2dq48hv4d2d00jqi Short guide to the use of laser cutting machines/Laboratory/Object design using straight and curved lines and laser-cut testing on paper 0 483325 4656007 4636584 2026-08-01T16:52:03Z ~2026-42674-82 3618514 /* Using Universal Laser Cutter */ 4656007 wikitext text/x-wiki In this tutorial we will learn to design objects using the pen tool and the curvature tool, after this, the object designed will be cut in paper. == Object design == First have and idea of any design you would like to create, could be a square, a circle, a moon, etc. === Using straight lines and the Pen tool === If the object to draw has only straight lines use the pen tool, and make as many dots as desired, close the shape if needed clicking the last dot over the first dot. Inkscape and Illustrator function in the same way, select the pen tool, click on the canvas to start the line, click in another space to complete the line. To make more lines keep making more clicks on the canvas.. if you want to complete the object or close it, click in the first dot. If you do not want to close the object (example an square), double click the last dot in inkscape or press esc on Illustrator. Use ctrl + if needed to zoom into the image. === Using straight lines and curved lines === Inkscape and Illustrator use the pen tool for straight lines. The pen tool in both applications can be used to make curves, for this click to make the second dot and keeping the click pressed move the mouse to expand the curve length and angle. Illustrator also has a second tool for curve making, the curvature tool, this tool also can make curves, and auto correct the curves in relation to the dots or shapes selected. If the object has straight lines and curves, use the curvature tool, if the first line is straight press and hold the alt key (in the keyboard), after the straight line is draw continue making more dots (curved lines), use alt again if another straight line is needed and release again to draw curved lines, click over the first dot to complete the object. When completed the image, select the direct selection tool to modify the position of both the straight and the curve lines, and to modify the angle or curve of the curved lines. When the object is completed press ctrl+p to see in the ULS cutting machine or export to use in Glowforge. To speed the process, many objects can be copied in different sizes in the same canvas, this will allow to choose the right size, and save you time (you will not need to modify o resize and print too many times). == Cutting the design over paper == Once the design is completed, and is loaded into the printer software, place a paper sheet (could be copier paper, old newspaper, etc).. === Using Universal Laser Cutter === {{Main|Short_guide_to_the_use_of_laser_cutting_machines/Use_of_Universal_Laser_Systems_cutting_machines}} In ULS click settings, then select material natural, paper, copier paper. Use 0.01” as thickness. From the cut objects, choose the one with the best size for your project. This can be done in newspaper and copier paper, since they are disposable if modifications are needed, just adjust the dots and angles in the original design, cardboard also can be used to test shapes in place, and when the shape is the desired use the final material. === Using Glowforge === {{Main|Short_guide_to_the_use_of_laser_cutting_machines/Use_of_Glowforge_cutting_machines}} Load the design to glowforge and cut the objetc. === Further steps === Once your design is complete, and has the desired shape, it could be cut if desired over plywood, acrylic, etc. Measure the thickness of the material, choose the material on the laser cutter, type the thickness and print your final project. ==See also== [[Short guide to the use of laser cutting machines/Use of Inkscape for Laser Cutting]] [[Short guide to the use of laser cutting machines/Use of Adobe Illustrator for Laser Cutting]] [[Short_guide_to_the_use_of_laser_cutting_machines/Laboratory/Cut_of_cursive_letters_for_display]] [[Short_guide_to_the_use_of_laser_cutting_machines/Tool_making_with_laser_cutting_machines]] {{BookCat}} 1p97f0qs0ovqo3td0n1co63cbn3r7os Taking Bearings: Artificial Intelligence in Knowledge Platforms and Open, Social Scholarship/AI and Scholarship 0 483639 4656014 4642178 2026-08-01T21:44:28Z CorreiaA 3614427 4656014 wikitext text/x-wiki == Research Methods and Practices == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Arnett, Catherine, Eliot Jones, Ivan P. Yamshchikov, and Pierre-Carl Langlais. 2024. “Toxicity of the Commons: Curating Open-Source Pre-Training Data.” Preprint, ''arXiv'', October 29. https://doi.org/10.48550/arXiv.2410.22587.''' </div> Open-source pretraining data is increasingly treated as a shared resource for building “open” language models, yet it can embed and reproduce harmful speech patterns at scale. Arnett, Jones, Yamshchikov, and Langlais argue that reducing toxic model behaviour requires intervening upstream in data, and they focus specifically on the distinctive constraints of public-domain corpora (including historical documents and OCR-derived text) where standard web-text toxicity filters can be impractical or ill-suited. They propose a fully open-source curation pipeline designed for these conditions and present three concrete contributions: (1) ToxicCommons, a custom-labelled dataset organized across five toxicity dimensions (racial/origin-based, gender/sex-based, religious, ability-based discrimination, and violence); (2) Celadon, a classifier trained on that dataset to detect toxic content more efficiently at scale in open data; and (3) a “balanced” filtration strategy that explicitly trades off safety filtering against retaining sufficient training material. The paper’s core claim is that open-data model development needs domain-attuned, auditable curation methods paired with task-specific classifiers, so that openness in data does not automatically translate into avoidable harms in downstream model outputs. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bail, Christopher A. “Can Generative Artificial Intelligence Improve Social Science?” https://www.semanticscholar.org/paper/Can-Generative-Artificial-Intelligence-Improve-Bail/6206cc77bb3a3c0b6b9fce1ad68a8b1786a56941<nowiki/>.''' </div> Bail (2023) provides a critical evaluation of how Generative Artificial Intelligence (AI), particularly Large Language Models (LLMs), might fundamentally transform computational social science. Moving beyond superficial administrative use cases, Bail examines the potential of LLMs to simulate complex human behaviours. He suggests that Generative AI could revolutionize agent-based modelling by replacing simplistic, rule-bound agents with dynamic, memory-equipped "silicon samples" capable of emergent group behaviours. While acknowledging the utility of AI for automated content analysis and expanding programming accessibility, Bail rigorously details the methodological and ethical perils of these largely opaque systems. He warns that the proprietary fine-tuning of commercial LLMs introduces severe demographic biases—often skewing toward highly educated, liberal perspectives—which threatens the external validity of AI-assisted research. Furthermore, Bail highlights the "Stack Overflow Problem," cautioning that the unchecked proliferation of AI-generated "junk science" could contaminate future training data and degrade the broader scientific ecosystem. Ultimately, Bail argues that social scientists must not remain passive "end-users" of corporate AI. Instead, they must actively collaborate with computer scientists to reverse-engineer the "social sense" into AI models, ensuring the development of open-source, reproducible infrastructures that genuinely advance the study of human behaviour. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bakharia, Aneesha, Antonette Shibani, Lisa-Angelique Lim, Trish McCluskey, and Simon Buckingham Shum. 2025. “From Transcripts to Themes: A Trustworthy Workflow for Qualitative Analysis Using Large Language Models.” In ''Joint Proceedings of LAK 2025 Workshops, co-located with the 15th International Conference on Learning Analytics and Knowledge (LAK 2025)''. Dublin, Ireland: CEUR-WS.org. https://ceur-ws.org/Vol-3995/LLMQUAL_paper1.pdf.''' </div> Bakharia et al. explore the use of AI in qualitative, rather than quantitative, research in education. The authors define “minimum requirements that an LLM-supported qualitative analysis workflow must satisfy” and present a “LLM-based workflow that derives an initial set of themes” from text data that is “transferable to other LA [learning analytics] contexts performing qualitative analysis of open-ended text.” The authors define two requirements for “LLM-generated inductive coding”: first, it must verify “coded textual extracts… against source data” to make sure the quotes are accurate (i.e., verbatim and not hallucinated) and verify those extracts “are meaningfully classified under the assigned code.” Second, in the interest of transparency, it must “explain that rationale for each code” and “trace every code, whatever level of abstraction, back to its source data.” The article outlines and describes the proposed workflow in detail, including its being built in Python with a Jupyter notebook and Flask application. While they acknowledge challenges and problems in their research (e.g., LLM bias, the lack of comparable human analysis, the risk of alienating the human quality of qualitative research), Bakharia et al. ultimately advocate their approach as one that “improves transparency, verifiability, and interpretability, while addressing limitations of previous methods and enhancing researcher processes in qualitative thematic analysis" (9). By adapting their minimum requirements and workflow, the authors argue, researchers can engage more effectively in LLM-driven qualitative research. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Dennstädt, Fabio, Cedric Sivert Möller, Tim Fellerhoff, Felix Busch, Oke Gerke, André Karch, and Oliver Krause. 2024. “Title and Abstract Screening for Literature Reviews Using Large Language Models: An Exploratory Study in the Biomedical Domain.” ''Systematic Reviews'' 13 (1): 158. https://doi.org/10.1186/s13643-024-02575-4<nowiki/>.''' </div> Dennstädt et al. perform a study in which they attempt to determine the viability of using LLMs to automate scholarly literature surveys. The researchers developed a method for using LLMs to perform the title and abstract screenings of a systematic literature review method and applied that method with four LLMs across eleven datasets in biomedical literature. A key advantage of implementing LLMs in this process is that it escapes the need to train the machine via pre-selection. Researchers have developed automated and semi-automated processes for systematic literature reviews in the past, but this requires a human agent to provide training data or a corpus of example texts that tell the system what to look for. LLMs do not require this step. Instead, the researchers used a Python script that prompts the LLM “to evaluate the relevance of a scientific publication for inclusion into an SLR,” providing the LLM with both abstract and title, request for a numbered score indicating the relevance of the publication, and a numerical threshold that defines whether a score makes the given publication relevant. The authors characterize the results of the study as “promising” but also “far from perfect,” identifying that such applications could be helpful to researchers and are widely applicable without special training for data or user, even if “fully automated systems… still fail to differentiate… near the level of human evaluation.” The authors conclude that more research into the use of LLMs to automate systematic literature reviews is needed, but it seems very likely that scholars will employ LLMs into this integral research task with greater frequency in the future. How well LLMs will continue to perform in this task is unclear, especially in new research, and Dennstädt et al. clearly state, “we cannot answer the question of to what extent LLMs should be used for conducting literature reviews and for doing research.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Montague-Hellen, Beth. 2024. “Empowering Knowledge through AI: Open Scholarship Proactively Supporting Well Trained Generative AI.” ''Insights'' 37 (1). https://doi.org/10.1629/uksg.649.''' </div> Generative AI is becoming a dominant interface for finding, summarizing, and producing academic information, with consequences for what counts as authoritative knowledge online. Montague-Hellen argues that, rather than focusing primarily on misuse, job displacement, or defensive copyright disputes, scholarly communications actors should actively encourage the inclusion of scholarly literature in generative AI training data to improve reliability and ensure research is represented in emerging discovery platforms. The article develops two main pathways for doing this: making scholarly outputs more machine-actionable and “crawlable” (especially through better linkage, metadata, and structured HTML rather than PDF-only dissemination) and making permissions unambiguous by explicitly addressing AI training in licences and related signals. It foregrounds “garbage in, garbage out” to claim that while libraries and publishers cannot remove low-quality web content from training corpora, they can tilt the balance by lowering friction for high-quality, curated research to be ingested legally. Montague-Hellen also highlights unresolved tensions around attribution and consent under common Creative Commons licences, suggesting that clearer, more specific permission frameworks (or new licensing patterns) may be needed to distinguish human reading from machine training and to communicate “enthusiastic consent” where desired. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Mugaanyi, Joseph, Christoph Lehner, and Lia M. Bally. 2024. “Evaluation of Large Language Model Performance and Reliability for Citation Generation Across Scientific Disciplines.” ''Journal of Medical Internet Research'' 26: e52935. https://doi.org/10.2196/52935<nowiki/>.''' </div> Mugaanyi, Lehner, and Bally perform a study aimed at gauging the accuracy and reliability of citations generated by ChatGPT (GPT 3.5) in both the natural sciences and humanities. The authors emphasize that “Citations and references serve as the backbone of scholarly communication, providing the necessary context, evidence, and credit to prior works… ensuring the integrity of the research process.” With this in mind, the article frames the related study as aiding researchers in determining whether LLMs are viable as writing assistants in scholarly writing. In short, if an LLM cannot be relied upon to accurately cite and reference sources, it poses a risk to the integrity of research when incorporated into scholarly writing. The study found that ChatGPT hallucinated over a quarter of its references, with a slightly higher margin in the natural sciences. Furthermore, not all of those citations that did exist were accurate, and the LLM hallucinated DOIs for nearly 90% of the references it cited, real or otherwise, in the humanities. The issue, as the authors describe it, is that “in the current iteration of LLMs, since the training is geared toward generalization and the models are probabilistic, they tend to interpolate and fill in the missing information with synthetic text.” The authors conclude that, while domain-specific models may improve performance and reliability, in its current, generic form, researchers need to contemplate whether the strengths of ChatGPT’s reference generation justify its demonstrable limitations and “the importance of robust validation processes to ensure the accuracy and reliability of generated content.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Schroeder, Hope, Marianne Aubin Le Quéré, Casey Randazzo, David Mimno, and Sarita Schoenebeck. 2024. “Large Language Models in Qualitative Research: Uses, Tensions, and Intentions.” Preprint, ''arXiv'', October 9. https://arxiv.org/abs/2410.07362<nowiki/>.''' </div> Schroder et al. perform interviews with twenty qualitative researchers in human computer interaction (HCI) and qualitative research to gauge how researchers are actually using LLMs and concerns over the incorporation of LLMs at different stages of research; the authors also provide a survey of the rise of LLMs and flag potential concerns, using both interviews and survey as a launchpad to outline suggestions and recommendations for researchers in the field contemplating the use of LLMs in their research. The authors are concerned that “the speed of LLM development has outpaced guidance on their ethical use” and “the HCI community is contending with the need for developed policies that tackle how to use AI ethically in research.” The most prominent concerns that the article raises relate to “ethics, unequal adoption of new technologies, model bias, and performance” as well as “concerns regarding participant privacy,” but there is also a larger issue within the field of HCI that “LLMs may lend the impression that qualitative inquiry can be automated, and their integration into Quantitative Data Analysis (QDA) software may increasingly impose positivist approaches that conflict with interpretivist traditions.” Key findings from the interviews are that most researchers are open to responsible use of LLMs but have concerns about established guidelines and norms for its implementation. Additionally, many are already using LLMs “to generate recruitment materials,” “speed up qualitative coding,” and “for ideation and feedback,” even as they acknowledge tensions between the qualitative nature of their work and the prospect of automation. The most significant recommendations that Schroder et al. make include updating consent forms, using dedicated tools rather than defaulting to Chat-GPT, and implementing design decisions specifically for LLM-incorporating methodologies that reconsider “participant privacy,” LLM’s “intentional use,” “transparency and validation,” “researcher context,” “deep engagement with data” despite this automation, and ways “to consider participant perspectives and interests” given “the variable performance LLMs have across contexts, knowledge domains, cultures, and languages.” The authors hope that incorporating these considerations will “empower qualitative researchers to leverage LLMs confidently, and even creatively, for their work.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Tumadóttir, Anna. 2024. “Questions for Consideration on AI & the Commons.” ''Creative Commons'', July 24. https://creativecommons.org/2024/07/24/preferencesignals/.''' </div> Tumadóttir talks about CC, license, tools, and policy and discusses the way to foster a healthy commons environment in the digital era. She points out how the introduction of the CC license enhanced Creative Commons by giving the creators choice over usage of their works. However, it is now a question if the same healthy commons can be maintained today because of rapid technological development. Preference signals for AI is a notion to give an agent (creator, rights holder, entity of some kind) more flexibility on how they want their work to be used for AI model training. However, the choice is still binary which is offering all or nothing. After consultations, it is found that people want more control over their work and if not, they might not share their work at all. Therefore, it is important to identify the right type of preference signals for it to be useful to benefit the public interest. During this process, we need to keep in mind its effect and variation on cultural heritage, different education sectors, and regions. Moreover, to make the preference signals effective, we need to examine its structure as well as whether legal enforcement is necessary. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Yue, Yongjie, Maosong Zheng, Jiahui Liu, Zhimin Wang, and Chenhui Mao. 2025. “A Practical Guide and Assessment on Using ChatGPT to Conduct Grounded Theory Studies: Step-by-Step Reporting of the Data Analysis Process.” ''Journal of Medical Internet Research'' 27: e70122. https://doi.org/10.2196/70122<nowiki/>.''' </div> Yue et al. employ a study that entailed researchers using either manual coding or coding assisted by ChatGPT to perform data analysis on a 40,000 word dataset made up of interviews with 8 players of Listen and Play in Jianghu, a Chinese MMORPG designed for the blind. The study’s aim was to “provide detailed guidelines for using ChatGPT in grounded theory within the Chinese context,” “evaluate the effectiveness of ChatGPT coding” in this context, and “explore the broader implications and future directions of ChatGPT in qualitative research.” The article goes into great detail as to the process for generating open code with ChatGPT. The results of the study show that, although manual coding performed slightly better than ChatGPT-assisted coding, the “difference was not statistically significant” in its production of nodes and reference points. However, during axial coding, the categories and subcategories generated through these respective processes was significantly different, with only half of the categories semantically matching between manual and ChatGPT-assisted methods. The authors conclude that, while ChatGPT 4-Turbo “enhanced the diversity and efficiency of coding... it struggled with depth, context, subtle nuances, connections, and coding organization.” Nevertheless Yue et al. see great potential in the application of GenAI-assisted coding in grounded theory, especially as the technology develops. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Zhu, Wenhao, Hongyi Liu, Qingxiu Dong, Jingjing Xu, Shujian Huang, Lingpeng Kong, Jiajun Chen, and Lei Li. 2023. “Multilingual Machine Translation with Large Language Models: Empirical Results and Analysis.” Preprint, ''arXiv'', April 10. https://arxiv.org/abs/2304.04675<nowiki/>.''' </div> Zhu et al. perform an empirical study that tests the multilingual translation performance of eight popular LLMs on 102 languages. As the authors explain, this is a particularly difficult task as it requires “semantic alignment between languages.” While LLMs tend to perform surprisingly well at translation, “it is also unclear [sic] how LLM acquires translation ability and which factors affect LLM’s translation ability.” This study in multilingual machine translation (MMT) therefore seeks to answer two questions: how do LLMs perform MMT over massive languages and what factors affect their performance? The results of the study suggest that GPT-4 generally outperforms its competitors but still falls short of Google Translate in some tests. Two key takeaways from this study are that “exemplars in the tail of the prompt have larger influence on an LLM’s behaviour,” meaning that the order in which exemplars are given within a prompt matter, and that cross-lingual translation pairs are particularly helpful exemplars to LLMs. The authors ultimately conclude that an “LLM can acquire translation ability in a resource-efficient way, which indicates [a] promising future of LLM in multilingual machine translation” as the technology evolves. ''NB: As this research was conducted prior to Google’s implementation of GenAI/LLMs into Google Translate in 2024, it sometimes uses Google Translate as a baseline/comparison point for LLM-powered translation that can be confusing without that context.'' == Forms of Research Output == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bozkurt, Aras. 2024. “GenAI et al.: Cocreation, Authorship, Ownership, Academic Ethics and Integrity in a Time of Generative AI.” ''Open Praxis'' 16 (1): 1–10. https://doi.org/10.55982/openpraxis.16.1.654<nowiki/>.''' </div> Bozkurt’s essay seeks “to undertake a critical examination of the use of generative AI in academic contexts… examining its implications and exploring the nuances of its integration.” He begins with an assertion of technological determinism, stating “This technological shift… is not just a transient trend but a symbol of the inescapable change… marking the onset of an AI-dominated age and initiating profound and inevitable shifts in our academic and educational paradigms.” The author makes the argument that the advent of AI “requires us to critically reconsider concepts such as cocreation, ownership, and authorship in academic writing processes.” For instance, in exploring the concept of ownership, he briefly notes the ethical concerns of whether those who created the content upon which AI was trained might claim ownership of AI-generated content and explores the notions of AI or even its programmers acting as a co-author. Bozkurt himself takes the explicit stance that GenAI ought not be credited as a co-author. The paper also provides suggestions related to the ethics of AI use and transparency: “In some cases, merely reporting… is inadequate. A more nuanced approach involves providing multilayered statements acknowledging and benchmarking the use of [GenAI], specifying where, when, in which sections, and for what purposes it is employed.” Bozkurt reiterates that responsibility ultimately belongs to the human author, and provides the aiTARAS (Academic Integrity and Transparency in AI-assisted Research and Specification) Framework for this purpose. Bozkurt ends his essay by identifying further problems beyond the scope of the article, including “reimagining of assessment and evaluation,” our overfocus on ChatGPT and English language in this field of study, and the inaccuracy of AI detection software. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Colbert-Lewis, Danielle, Lawrence Maminta, Kelly McElroy, Graeme Slaght, and Mark Swartz. 2024. “The Citation Economy as a Site of Extraction for Surveillance Publishing.” ''Canadian Journal of Academic Librarianship'' 10 (December): 1–22. https://doi.org/10.33137/cjal-rcbu.v10.43293.''' </div> Colbert-Lewis et al. (2024) examine the extractive nature of the modern "citation economy," arguing that academic publishing has evolved into a powerful mechanism for surveillance and data commodification. The authors detail how a consolidated group of dominant publishers capture surplus value from the academic lifecycle by extracting free scholarly labour, research data, and personal information. Crucially, these corporations are transitioning from traditional information vendors into technology-driven data brokers. The extracted data is reinvested into proprietary analytics products that are then sold back to universities to evaluate and surveil faculty performance, relying on opaque metrics that threaten academic freedom. Furthermore, the authors highlight the severe ethical compromises inherent in this system, noting that academics inadvertently fuel data infrastructures that these same parent companies sell to external industries, including law enforcement and advertising. To combat the rise of "surveillance publishing," the article concludes with actionable recommendations for scholars and librarians to resist exploitative practices and build ethical infrastructures, alongside a supplementary mini-zine designed to raise awareness about the hidden costs of participating in the citation economy. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Frangou, Sophia, Umberto Volpe, and Andrea Fiorillo. 2025. “AI in scientific writing and publishing: A call for critical engagement.” ''European Psychiatry'' 68 (1): e98. https://doi.org/10.1192/j.eurpsy.2025.10061<nowiki/>.''' </div> Frangou, Volpe, and Fiorillo provide a succinct summary of the benefits of implementing AI in scientific writing and publishing, before turning to the challenges and risks posed toward the use of such technology. Finally, they end by posing ethical frameworks for the use of AI in both publishing and writing. In publishing, the authors identify tools that can aid in tasks ranging from copyediting to finding reviewers and claim that for both “high-volume publications” and “resource-constrained journals… AI can serve as a force multiplier, expanding what editorial teams can accomplish without compromising the centrality of human discretion and responsibility.” In writing, the article notes that “AI-powered applications offer a suite of tools that, when used judiciously, can enhance the quality, efficiency, and inclusivity of the scholarly communication process,” placing such tools along the trajectory of preexisting aids like EndNote and Zotero, which have also now incorporated AI. Frangou, Volpe, and Fiorillo argue that AI can help scholars identify relevant literature they might otherwise have trouble finding, reduce the linguistic bias encountered by scholars for whom English is not their first language, and aid scholars in navigating the publishing landscape so their work can find the best possible fit. Finally, the authors acknowledge the epistemic and ethical risks of AI: inconsistency and irreproducibility, transparency, informed consent, and data privacy are all core concerns. Key components in the article’s ethical frameworks for publishers and authors include transparency and disclosure, human accountability, and training and skill development. The authors hope that “these principles articulate a shared responsibility for shaping the role of AI in scientific publishing” and AI’s “adoption reinforces the foundational values that give scientific communication its trustworthiness and legitimacy.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Graßhoff, Gerd. 2024. “AI-Reporter: A Path to a New Genre of Scientific Communication.” Preprint, ''arXiv'', July 8. https://arxiv.org/abs/2507.05903. ''' </div> Graßhoff introduces a new tool, the AI-Reporter, that aims “to fundamentally expand scientific communication for the new era…”; according to Graßhoff, the AI-Reporter “creates a sustainable, referenceable, and expandable knowledge base that captures not just content but the living essence of scientific discourse.” In short, Graßhoff proposes a tool that will adapt a scientific presentation into a “public-ready chapter” in about three minutes with “only the author’s consent.” The majority of the article is dedicated to a tech-oriented breakdown of the methodology and workflow of the AI-Reporter, namely the semantic analysis and translation of a recorded slide presentation—consisting of the presentation as a PDF, video recording, and basic metadata—into a publication-ready chapter. Graßhoff’s tool is an attempt to solve what he identifies as a core problem of modern scholarly communication, namely that “knowledge is increasingly presented in dynamic, multimodal formats” that are ultimately ephemeral and content is often lost (14). He aims to refine this tool to enable real-time processing, multilingual support, interactive multimedia components, “optimization for academic disciplines,” and more to this project. He advocates the AI-Reporter as nothing less than “a vision for the future of scientific communication.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Jiang, Jialei. 2024. “When generative artificial intelligence meets multimodal composition: Rethinking the composition process through an AI-assisted design project.” ''Computers and Composition'' 74: 102883. DOI: https://doi.org/10.1016/j.compcom.2024.102883<nowiki/>.''' </div> Jiang conducts a study in which GenAI is integrated into students’ composition of multimodal texts, then interviewed on their experience. Jiang’s states her aim as follows: “Through examining writing students use of GenAI tools in multimodal composition, this study seeks to unravel how GenAi technologies influence students’ design choices, problem-solving approaches, and the overall composition process.” In particular, Jiang is interested in “potential opportunities and challenges of incorporating GenAI into students’ multimodal composition process.” Jiang frames the article within composition and writing studies and the theory behind multimodal composition. She builds upon recent pedagogical best practices put forward by Burriss and Leander (2024) that “call upon teachers and educators to engage in the development of an emergent pedagogy of critical AI that “teach[es] about/with AI in emergent, flexible, and speculative ways.” The results of the study emphasize that, while GenAI can streamline workflow and provide examples from which students can build using their own creativity, there were clear limitations to the technology. Of course, students’ realization of these limitations is a success of the course’s pedagogy. The article also provides three case studies of the student compositions as exemplars of the outcome. Jiang concludes with a recommendation “that researchers and educators engage in meaningful dialogues with students about their uses of GenAI during composition practices.” She quotes her own earlier work (Jiang et al. 2024), where she writes that to keep AI out of the classroom “is not only idealistic and impossible... it is actually completely disengaged from the realities of the changing technological landscape students are already facing.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Mehlenbacher, Brad, Ana Patricia Balbon, and Ashley Rose Mehlenbacher. 2024. “Synthetic Genres: Expert Genres, Non-Specialist Audiences, and Misinformation in the Artificial Intelligence Age.” ''Journal of Technical Writing and Communication'', January 31. https://doi.org/10.1177/00472816231226249.''' </div> Genre theorists Mehlenbacher et al. examine which AI-generated texts are “good enough” to pass as “bona fide” (already a “very good” standard). They argue AI-generated text produces misinformation, pushes apart definitions of “information” and “knowledge,” and necessitates rhetorical understanding. The authors therefore believe “synthetic genres” will emerge, departing in situation, form, and even “the very concept of genre users” based on recursive and “poisoned” outputs. In reviewing literature, the authors spotlight AI-generated disinformation’s suasive (instead of propagandistic or accurate) potential, and argue that AI-generated text can be suasive by appearing both “timely” and “appropriate.” However, this “fraudoscientific” text can never be truly “timely” or “appropriate,” as it is always constrained in past work, and only responds to prompts, not situations. Despite this, AI-generated text generated on specialist subjects can still be effectively suasive—and even when identified as AI—because its authority is difficult to challenge. Mehlenbacher et al. therefore conduct two studies of AI-generated outputs, focussing on how they may be deceptive or detected. They first prompted GPT-3 to emulate rhetorical research abstracts by generating a range of definitions alongside text to emulate research processes. Next, they conducted a genre analysis, generating text on controversial topics and prioritizing suasiveness over ability to pass a theoretical “Genre Turing Test.” Based on their results, Mehlenbacher et al. suggest AI-generated text should be cross examined with specialist texts to identify where they need additional development, presenting a valuable teaching opportunity which supports “a powerful way to introduce the epistemic functions of writing.” Non-specialists should also develop tools to identify the source and quality of content, including diverse genre perspectives. The authors conclude by arguing genre scholars should further consider AI-generated texts and emphasizing the importance of genre users. This is because “genre must be understood in a rhetorical context,” while “synthetic genres” can only act as “statistical simulacrum.” == Teaching and Pedagogy == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Adewumi, Tosin, Lama Alkhaled, Christopher Buck, Sergio Hernandez, Sofia Brilioth, Memoona Kekung, Yasmin Ragimov, and Emily Barney. 2023. “ProCoT: Stimulating Critical Thinking and Writing of Students through Engagement with Large Language Models (LLMs).” Preprint, ''arXiv'', December 15. https://doi.org/10.48550/arXiv.2312.09801<nowiki/>.''' </div> Adewumi et al.'s Probing Chain-of-Thought (ProCoT) methodology represents a pedagogical approach that transforms LLM interaction from potential academic dishonesty into an active learning process centred on critical evaluation and evidence-based reasoning. ProCoT requires students to generate initial outputs using LLMs, then systematically affirm or refute each claim using peer-reviewed references, effectively making the AI output a provisional hypothesis to be tested rather than a final answer to be submitted. This approach directly addresses the section's themes of process transparency (the method makes visible each stage of knowledge construction, from initial AI generation through source verification to synthesis) and ethical reflection (students must grapple with AI limitations including hallucination, bias, and lack of disciplinary nuance). The authors' finding that student outputs using ProCoT were significantly more concise than LLM-generated text (208 vs. 391 words on average) while demonstrating enhanced critical thinking suggests that the method trains students to distill and synthesize rather than accept verbose AI output uncritically. ProCoT leverages AI's epistemological weaknesses as pedagogical strengths—the fact that ChatGPT cannot reliably cite sources becomes an opportunity for students to develop information literacy by finding and evaluating primary literature. The method's anti-cheating design is secondary to its pedagogical value: by requiring iterative engagement with AI outputs and scholarly sources, ProCoT embeds the kind of metacognitive reflection (What did the AI get right? What did it miss? How do I know?) that is of significance to pedagogy in the AI era. The authors' evidence from 65 students across disciplines demonstrates feasibility across contexts, emphasizing cross-disciplinary rather than field-specific approaches to AI-entangled pedagogy. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Berry, David M. 2023. “AI, Ethics, and Digital Humanities.” In ''The Bloomsbury Handbook to the Digital Humanities'', edited by James O’Sullivan, 445–57. Bloomsbury Academic. https://recoveryhub.siue.edu/wp-content/uploads/2024/10/AI-Ethics-and-Digital-Humanities-.pdf<nowiki/>.''' </div> Berry emphasizes that AI’s use in the field of Digital Humanities raises major ethical questions despite it being an apparent evolution of the field’s traditional utilization of technology to augment human research capabilities. Berry outlines this issue by comparing the modern rise of AI to Digital Humanities’ early history, highlighting that digital humanists operated as coders until they began to “'black box' the computational aspects of doing digital humanities,” thus enabling non-programmers to participate. Since AI “automating processes might cover over ethical issues by transferring them into the hashtables of the machine-learning system,” Berry argues uncritical reliance on AI tools by inexpert modern humanists risks the “algorithmization” and imposition of hierarchical, quantitative frameworks upon Digital Humanities studies. He further identifies that the field of Digital Humanities is “on the cusp of a new set of packages that will further democratize access to machine learning,” a noble goal, but one which will bring these issues to the forefront. For this reason, Berry argues a reconsideration of ethics within Digital Humanities is desperately required on both organizational and individual levels. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Brown, Richard. 2023. ''The AI Generation: How Universities Can Prepare Students for the Changing World''. DEMOS and University of London report. https://demos.co.uk/wp-content/uploads/2023/11/The-AI-Generation-2.pdf<nowiki/>.''' </div> Brown argues AI will inevitably and dramatically impact all fields of education, and therefore encourages universities to seize the opportunity to lead these changes instead of merely reacting to them. His voice is echoed by esteemed organizations DEMOS and the University of London, indicating that this shift in the academic environment is already beginning. Brown argues this shift is required due to the developing capacity of AI for automating low-skilled professional tasks, an ability which risks decimating the available number of entry-level graduate positions. As a result, how employers value the workplace skills taught by current curriculums will change drastically, meaning universities must revolutionize their approach to education. Brown provides a blueprint for how universities can adapt to these changes by championing education’s prioritization of “GRASP” (General Relational, Analytic, Social, and Personal) skills as an alternative, advising universities to focus on teaching high-level and tailored skills to students instead of the generic. Universities can do this by practising “active learning” over traditional lecture formats as well as fostering extracurricular and work experience opportunities for their students. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Deng, Ruiqi, Maoli Jiang, Xinlu Yu, Yuyan Lu, and Shasha Liu. 2025. “Does ChatGPT Enhance Student Learning? A Systematic Review and Meta-Analysis of Experimental Studies.” ''Computers & Education'' 227. https://doi.org/10.1016/j.compedu.2024.105224<nowiki/>.''' </div> Deng and colleagues' meta-analysis of 69 experimental studies provides empirical grounding for claims about ChatGPT's pedagogical impact, revealing both opportunities and methodological challenges in assessing AI-enhanced learning. Their finding that ChatGPT interventions improve academic performance, affective-motivational states, and higher-order thinking propensities while reducing mental effort speaks directly to how assessment must shift when AI augments cognition—if mental effort decreases but learning outcomes improve, traditional measures of "effort" or "struggle" as proxies for learning may require recalibration. In their critique of current assessment methodologies the authors demonstrate that most studies evaluate only final outputs (essay quality, test scores) rather than learning processes, missing opportunities to examine how students interact with AI, what metacognitive strategies they develop, and whether AI use builds transferable skills or creates dependency. Deng et al.'s four methodological propositions—using complex project-based assessments that reveal process, evaluating long-term rather than novelty effects, prioritizing objective over self-reported measures of higher-order thinking, and employing adequate statistical power—provide a research agenda for pedagogy–AI scholarship that centres process evidence. Their documentation of disciplinary variation (language education dominates current research) while calling for cross-disciplinary synthesis focuses on avoiding discipline-specific approaches. The meta-analysis also reveals gaps in understanding collaboration (few studies examine peer learning dynamics when AI is present) and metacognition (limited research on whether students develop awareness of their own and AI's knowledge boundaries), highlighting the resulting pedagogical transformations. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Grigoli, L. Renato. 2023. “Ghosts in the Machine.” ''American Historical Association'' 61 (3). https://www.historians.org/wp-content/uploads/2024/07/Perspectives_61N3.pdf<nowiki/>.''' </div> Grigoli dismisses fears of AI generated essays threatening academic integrity by arguing that “if the development of artificial intelligence results in the death of the humanities, then it will be because it will have shown that the emperor has no clothes.” He uses ChatGPT to demonstrate that although AI responses appear competent at a passing glance, they lack valuable substance, simply arranging facts in a way that “tricks the reader into… doing all the analytical work.” Clear critical analysis should be the core component of a successful humanities essay, making well-designed assessments of this field far more reliable than those focussed on information retention (like engineering). Therefore, AI is not a real threat, but a valuable pedagogical tool which can demonstrate examples of clean prose and prompt students to critically analyse what constitutes critical analysis. Essentially, if an AI generated answer can pass a test, the real problem was ‘self-inflicted’ by either the examiner or the question itself. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Lee, Daniel, and Edward Palmer. 2025. “Prompt Engineering in Higher Education: A Systematic Review to Help Inform Curricula.” ''International Journal of Educational Technology in Higher Education'' 22: 16. https://doi.org/10.1186/s41239-025-00503-7<nowiki/>.''' </div> Lee and Palmer's systematic review establishes prompt engineering as an emergent pedagogical practice that integrates with longstanding traditions of scholarly inquiry, questioning, and rhetoric. The authors synthesize multiple frameworks (AIPROMT, CLEAR, CRISPE) that codify prompting as a learnable skill involving role specification, context provision, instruction clarity, and iterative refinement—revealing how interaction with LLMs mirrors Socratic dialogue, research question formulation, and the rhetorical tradition of audience awareness. This work positions "prompting as pedagogy" as a reconfiguration of existing scholarly literacies: students learning to prompt effectively must articulate their information needs precisely, anticipate how language shapes output, and iteratively refine queries based on initial results—all core practices in library research, database searching, and scholarly conversation. The authors document how educators are embedding prompt engineering across disciplines, from technical fields where students prompt AI to generate code or solve equations, to humanities contexts where prompting becomes a form of textual analysis (understanding what linguistic patterns trigger particular AI responses reveals implicit biases and training data influences). Their review also identifies ethical dimensions—well-designed prompts can mitigate AI hallucination and bias, while poorly constructed prompts amplify these issues—making prompt literacy a matter of scholarly responsibility. The authors' call for curricula that teach prompting as interdisciplinary competency aligns with how AI entangles with pedagogy across boundaries, reshaping what counts as fundamental scholarly practice in an AI-augmented knowledge environment. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Mai, Dang Thi Thuy, Cuong Van Da, and Nguyen Van Hanh. 2024. “The Use of ChatGPT in Teaching and Learning: A Systematic Review through SWOT Analysis Approach.” ''Frontiers in Education'' 9: 1328769. https://doi.org/10.3389/feduc.2024.1328769''' </div> Mai and colleagues' systematic SWOT analysis of 51 studies on ChatGPT in education, organized through Biggs's 3P model (Presage-Process-Product), offers comprehensive mapping of how generative AI enters and transforms pedagogical systems at multiple scales—from individual learner characteristics (Presage) through interactive teaching-learning processes (Process) to learning outcomes and assessment products (Product). This multilevel framework reveals that ChatGPT's pedagogical impact cannot be isolated to single moments of use but ripples across entire learning ecologies: at the Presage level, ChatGPT shifts what prior knowledge students need (familiarity with prompting interfaces) and what instructor competencies are required (ability to design AI-aware assignments); at the Process level, it transforms interaction patterns from teacher-student and student-student to include human-AI dialogue that may enhance personalized scaffolding but risks reducing peer collaboration; at the Product level, it necessitates fundamental assessment redesign because traditional evaluation instruments (timed essays, closed-book exams) lose validity when AI can generate competent responses. The authors' characterization of ChatGPT as simultaneously "friend" (enabling personalized learning, reducing educator workload, providing instant feedback) and "foe" (enabling plagiarism, potentially reducing critical thinking, creating over-reliance) mirrors the section's emphasis on entanglement—pedagogy cannot simply embrace or reject AI but must negotiate tensions between efficiency and effort, personalization and depersonalization, augmentation and replacement. Mai et al.'s documentation of how educators are adapting curricula to emphasize creativity and critical thinking (skills less easily automated) while using ChatGPT for routine information provision demonstrates pedagogical evolution toward distinctly human capacities. Their call for assessment reform using complex case studies, portfolios, and process documentation rather than single-sitting exams directly supports the notion of process evidence and metacognition as being central to AI-era pedagogy, positioning assessment not as gatekeeping but as making learning processes transparent and accountable. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Oates, Angela, and Donna Johnson. 2025. “ChatGPT in the Classroom: Evaluating Its Role in Fostering Critical Evaluation Skills.” ''International Journal of Artificial Intelligence in Education'' 35(4): 1793–1824. https://doi.org/10.1007/s40593-024-00452-8''' </div> Oates and Johnson's empirical study of biomedical science master's students offers insight into how AI functions more effectively as object of critical study than as production tool, revealing pedagogical value in making AI outputs subjects for evaluation rather than endpoints of learning. Their finding that students' marks did not improve when submitting AI-generated essays but did improve when critically evaluating AI outputs demonstrates a fundamental pedagogical principle: learning occurs not in consuming AI-generated content but in interrogating it, comparing it against disciplinary standards, identifying its factual errors and rhetorical limitations, and articulating why human-authored scholarship differs. This shifts pedagogy from "use AI to complete tasks" toward "use AI to understand knowledge construction itself"—students learn about evidence evaluation, citation practices, and argumentation by analyzing where ChatGPT succeeds and fails at these scholarly fundamentals. The authors document that ChatGPT demonstrated structural coherence and grammatical accuracy but lacked the disciplinary depth and synthetic insight expected in graduate work, making visible to students the difference between surface-level fluency and genuine expertise. Their emphasis on user interaction as a variable affecting efficacy underscores that pedagogy must address not just whether AI is present but how students are taught to engage it—prompt design, output evaluation, and integration with human research become learnable scholarly practices. Oates and Johnson's conclusion that students preferred writing their own essays despite AI's availability suggests that when pedagogy centers process transparency and critical evaluation rather than output efficiency, students recognize and value the cognitive work that AI cannot replicate, focusing on pedagogy that treats AI as entangled phenomenon requiring simultaneous use and critique. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Pope, Andrew, and Rongqian Ma. 2024. “Exploring Historians’ Critical Use of Generative AI Technologies for History Education.” ''Proceedings of the Association for Information Science and Technology'' 61 (1): 1071–73. https://doi.org/10.1002/pra2.1188''' </div> Pope and Ma conducted semi-structured interviews of seven history professors to assess their attitudes towards employing GenAI tools in their teaching. Understanding this stance is important because Pope and Ma believe incoherent and mismatched approaches could inhibit scholarly communication and undermine academic integrity. The survey demonstrated historians had major concerns about GenAI’s development, especially regarding plagiarism. Respondents were particularly divided on whether copying an AI’s work was academic misconduct. However, historians had far fewer concerns about using GenAI to ‘augment’ human abilities or tailor support to students - although senior academics maintained substantially greater reservations. The historians that were interviewed concurred that critiquing AI generated text could improve a student’s media literacy. Pope and Ma’s study suggests that historians consistently doubt the quality of AI generated responses even when willing to employ it. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Tan, Myles Joshua Toledo, and Nicholle Mae Amor Ttan Maravilla. 2024. “Shaping Integrity: Why Generative Artificial Intelligence Does Not Have to Undermine Education.” ''Frontiers in Artificial Intelligence'' 7: 1471224. https://doi.org/10.3389/frai.2024.1471224''' </div> Tan and Maravilla provide theoretical grounding for understanding how generative AI can be integrated into pedagogy without compromising academic integrity, arguing that responsible implementation depends on alignment with constructivist learning theory and self-determination theory. The authors position AI not as a threat to authentic learning but as a catalyst that necessitates pedagogical transformation—shifting from transmission models toward environments where students actively construct knowledge using AI as one tool among many. Their framework emphasizes process transparency through explicit discussion of AI's role in knowledge construction and ethical reflection through examining how GAI outputs are generated, what assumptions they embed, and where they may mislead or constrain inquiry. This work addresses pedagogy-as-entanglement by showing how GAI forces educators to make visible the epistemic practices that traditional assessment often left implicit: citation tracing, source evaluation, argument construction, and the iterative nature of scholarly writing. Tan and Maravilla argue that rather than banning AI to preserve integrity, educators should redesign assessment to require demonstration of process—portfolios showing prompt refinement, comparison of AI outputs with human-authored sources, and metacognitive reflection on when and why AI was consulted. Their synthesis of educational theory with practical implementation strategies makes this work useful for understanding how pedagogy must evolve to treat AI as both subject matter (what students must understand about how AI functions) and scaffolding (how AI can support learning when used transparently and reflectively). <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Yim, Iris Heung Yue, and Jiahong Su. 2025. “Artificial Intelligence (AI) Learning Tools in K-12 Education: A Scoping Review.” ''British Journal of Educational Technology'' 56 (1): 169–196. https://doi.org/10.1007/s40692-023-00304-9''' </div> Yim and Su's scoping review of AI literacy education in K-12 contexts provides grounding for understanding how pedagogy approaches AI as an object of study, not merely as a tool, revealing how students across age groups learn to understand, critique, and create with AI systems. The authors document how intelligent agents (Google Teachable Machine, Learning ML) and software platforms (Scratch, Python) enable students to engage with AI's underlying mechanisms—training models, observing how data shapes outputs, and experiencing firsthand how algorithmic decision-making operates. This approach treats AI as epistemological phenomenon: students don't just use pre-trained models but build simple systems themselves, making visible how AI "learns" and where its learning breaks down (limited training data, biased datasets, inability to generalize beyond training conditions). Yim and Su's synthesis of pedagogical strategies—project-based learning where students create AI applications, human-computer collaboration examining how humans and machines complement each other, and game-based approaches making AI concepts accessible—demonstrates how educators scaffold understanding from concrete manipulation to abstract reasoning about intelligence and automation. The review's attention to cognitive, affective, and behavioral learning outcomes moves beyond narrow skill acquisition to examine how AI literacy shapes students' broader epistemic stance: understanding AI's capabilities and limitations, recognizing when algorithmic solutions are appropriate, and developing critical awareness of AI's social implications. Their emphasis on age-appropriate pedagogies and the importance of unplugged activities (learning AI concepts through physical manipulation before digital implementation) provides models for how pedagogy must adapt to learners' developmental stages when teaching about AI systems. This work's K-12 focus complements higher education studies in this section by showing how foundational AI literacy built through hands-on exploration creates readiness for more sophisticated critical engagement with AI as both tool and object of study in advanced scholarship. == Service and Peer Review == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Checco, Alessandro, Lorenzo Bracciale, Pierpaolo Loreti, Stephen Pinfield, and Giuseppe Bianchi. 2021. “AI-Assisted Peer Review.” ''Humanities and Social Sciences Communications'' 8: 25. https://doi.org/10.1057/s41599-020-00703-8''' </div> Checco et al.'s study represents crucial early (pre-GenAI) empirical work demonstrating that AI can predict peer review outcomes based on "superficial" manuscript features—readability metrics, formatting consistency, reference list structure, linguistic patterns—with surprising accuracy, training neural networks on 3,300 conference papers to correlate these proxy measures with eventual accept/reject decisions. This finding has profound implications for understanding AI's operational role: the research reveals that much of what passes as peer review judgment operates on detectable patterns (clear writing, proper citation formatting, adherence to disciplinary conventions) that AI can identify and assess, potentially automating routine quality checks and flagging submissions unlikely to meet standards. However, the authors explicitly position their work as supporting "semi-automated" rather than fully automated review, emphasizing AI's role in pre-screening and administrative tasks (matching manuscripts with reviewers based on topic modeling, identifying obvious deficiencies) rather than intellectual evaluation. The paper's most valuable contribution lies in its systematic exploration of ethical implications: algorithmic bias risks (AI might penalize unconventional but innovative work, discriminate against non-native English writers, favor institutional prestige markers), transparency requirements (making AI decision criteria auditable), and the necessity of human oversight to prevent automation from calcifying existing disciplinary hierarchies. By documenting both AI's predictive capabilities on operational dimensions and its inherent limitations on substantive judgment, Checco et al. provide empirical foundation for designing peer review systems where AI handles standardized identification tasks while human expertise remains authoritative for evaluative assessment, directly instantiating the core principle that operational assistance must not migrate into epistemic territory. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Hosseini, Mohammad, and Serge P. J. M. Horbach. 2023. “Fighting Reviewer Fatigue or Amplifying Bias? Considerations and Recommendations for Use of ChatGPT and Other Large Language Models in Scholarly Peer Review.” ''Research Integrity and Peer Review'' 8 (1): 15. https://doi.org/10.21203/rs.3.rs-2587766/v1''' </div> Published early in the ChatGPT era, Hosseini and Horbach's analysis provides a prescient examination of how LLM integration transforms both the pragmatics and ethics of peer review labor. The authors document LLMs' potential to combat reviewer fatigue by automating time-consuming tasks—transforming informal reviewer notes into polished reports, generating structured feedback on manuscript sections, identifying linguistic or formatting issues—thereby potentially expanding the pool of contributors who can participate effectively despite language barriers or time constraints. However, the article's core contribution lies in its still-useful systematic identification of risks that emerge when operational assistance crosses into epistemic territory: LLMs trained on existing literature may amplify disciplinary biases (favoring established paradigms over novel approaches), geographic biases (privileging research contexts well-represented in training data), or methodological orthodoxies (flagging unconventional designs as errors rather than innovations). The authors demonstrate through examples how ChatGPT can generate cynical or biased reviews that violate Mertonian norms of universalism, and how confidentiality breaches can occur when reviewers input manuscript excerpts into external AI platforms without institutional safeguards. Hosseini and Horbach's recommendations—mandatory disclosure of LLM use in reviews, human accountability for all AI-generated content, training in bias recognition, and institutional policies prohibiting upload of confidential materials—have influenced subsequent journal guidelines and provide foundational ethical framework for understanding why guardrails against leakage and disclosure norms become operational necessities rather than optional best practices in AI-entangled peer review systems. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Shcherbiak, Anna, Hooman Habibnia, Robert Böhm, and Susann Fiedler. “Evaluating Science: A Comparison of Human and AI Reviewers.” ''Judgment and Decision Making'' 19 (2024): e21. https://doi.org/10.1017/jdm.2024.24''' </div> In this study, a large-scale field experiment comparing GPT-4 with human reviewers on conference abstracts provides empirical evidence about AI's capabilities and limitations in evaluative judgment. It demonstrates that while AI can approximate human performance on certain classification tasks—identifying "very best" abstracts shows moderate alignment—detailed evaluative assessments reveal persistent gaps, with human-AI agreement comparable to human-human variability, suggesting AI does not systematically outperform baseline reviewer disagreement. Critically, the research shows humans substantially outperform AI at detecting AI-generated versus human-written content, with detection tools like GPTZero exhibiting higher accuracy than GPT-4 itself when evaluating authorship. This finding has direct implications for peer review integrity when AI-generated manuscripts enter the submission pipeline. The authors position AI as effective for prescreening—rapidly filtering submissions for basic quality thresholds, identifying obvious errors, flagging compliance issues—while demonstrating it lacks the contextual understanding necessary for nuanced scientific judgment about significance, impact, or methodological soundness. The paper's methodological rigor in isolating human-versus-AI performance dimensions provides context for understanding where operational assistance (screening) legitimately ends and where human evaluative authority (substantive assessment) must begin, directly addressing the guiding principle that human judgment remains central even in AI-augmented workflows. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Lim, Gim Hui, M. L. Tan, V. C. W. Hoe, and D. Koh. 2025. “Generative AI in Peer Review Process for Occupational Health.” ''Occupational Medicine'' 75 (5): 242–49. https://doi.org/10.1093/occmed/kqaf051.''' </div> Lim and colleagues' empirical study comparing Microsoft Copilot, ChatGPT, and Google Gemini against human reviewers on eight occupational health manuscripts provides granular quantitative evidence about AI's operational capabilities and limitations in peer review tasks. The research demonstrates that AI tools significantly outperform humans in providing feedback (mean score 3.44 vs. human baseline, p<0.001) across dimensions of relevance, completeness, accuracy, error identification, and constructiveness—documenting AI's strength in systematic checking tasks like identifying missing citations, flagging methodological inconsistencies, noting formatting errors, and pointing out unclear explanations. However, humans substantially outperform AI in generating actionable recommendations (mean score 3.36, p<0.01), with AI showing particular deficiencies in suggesting substantive revisions, connecting findings to broader literature, or identifying conceptual limitations. This performance asymmetry instantiates the operational/epistemic division: AI excels at identification tasks (what's wrong, what's missing) but struggles with evaluative tasks (how to improve, what matters). The study also quantifies efficiency gains (AI reviews complete in 11 minutes versus 45 for humans) while documenting critical limitations: AI outputs contain fabricated references, generate plausible-sounding but inaccurate technical assertions, and require human verification to prevent propagation of errors. Lim et al.'s work demonstrates that even when AI shows superior performance on specific metrics, its integration into peer review requires careful task decomposition—leveraging speed and comprehensiveness for checking functions while preserving human authority for substantive guidance—making it essential evidence for designing hybrid human-AI workflows where operational assistance enhances rather than replaces evaluative expertise. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Sun, Zhuanlan. 2025. “Large Language Models in Peer Review: Challenges and Opportunities.” ''Scientometrics 130(10): 5503–5546''. https://doi.org/10.1007/s11192-025-05440-w''' </div> Sun provides essential mapping of LLM applications across the peer review lifecycle, categorizing five distinct operational roles: checklist assistants for formatting and protocol adherence, reviewer selection aids that match manuscripts with appropriate expertise, feedback generators for preliminary assessments, bias detectors that flag methodological or statistical irregularities, and agents that coordinate multi-stage review workflows. The article systematically examines technical approaches including prompt engineering strategies, model evaluation frameworks, and architectural designs for integrating LLMs into editorial management systems. The author argues that while LLMs excel at standardized operational tasks—checking reference integrity, identifying duplicated content across submission databases, verifying compliance with reporting guidelines—they remain fundamentally limited in assessing research novelty, theoretical contributions, and domain-specific methodological rigor. The analysis emphasizes that current LLM limitations (inadequate scientific validation, domain knowledge gaps, inability to analyze complex datasets, ethical concerns around bias perpetuation) position them as supportive tools within human-led processes rather than autonomous decision-makers. This work is useful in understanding operational versus epistemic divisions of labor in AI-assisted scholarship service and documenting the technical infrastructure through which AI becomes entangled with peer review operations while maintaining clear boundaries around human evaluative judgment. == AI and Scholarship Infrastructures == === Organizational Infrastructures === <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Batool, Amna, Didar Zowghi, and Muneera Bano. 2025. “AI Governance: A Systematic Literature Review.” ''AI and Ethics'' 5: 3265–3279. https://doi.org/10.1007/s43681-024-00653-w''' </div> Batool and colleagues' (2025) systematic literature review offers a comprehensive mapping of AI governance across multiple levels—team, organization, industry, national, and international. The authors utilize a structured analytical framework that examines who governs (stakeholders and roles), what is governed (data, algorithms, systems), when governance occurs (stages in the AI lifecycle), and how it is implemented (frameworks, tools, policies). The article reveals that current governance practices remain fragmented and inconsistent, with significant gaps at the national and international levels. Applied to the context of higher education, this multi-level perspective is essential for understanding how research institutions must position themselves within broader governance ecosystems. Because organizational governance currently operates without clear external scaffolding, research institutions are often forced to improvise institutional arrangements rather than implement established templates. While the paper is broad in scope, its categorization of governance artifacts illuminates the range of mechanisms available to scholarly organizations: from technical tools like algorithmic auditing to organizational structures like ethics committees. Ultimately, the authors' findings highlight the challenges facing research institutions as they attempt to coordinate AI oversight across distributed, autonomous units—such as libraries implementing discovery tools or IT departments deploying infrastructure—demonstrating why cross-functional coordination is both necessary and difficult when existing governance structures were not designed to span these boundaries. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Hadley, Emma, Alan Blatecky, and Megan Comfort. 2025. “Investigating Algorithm Review Boards for Organizational Responsible Artificial Intelligence Governance.” ''AI and Ethics'' 5: 2485–2495. https://doi.org/10.1007/s43681-024-00574-8''' </div> Hadley and colleagues provide empirical documentation of algorithm review boards (ARBs) as organizational governance mechanisms, interviewing technical contributors across sectors to examine ARB membership, scope, success factors, and limitations. Their findings reveal ARBs as cross-functional bodies integrating diverse expertise (technical specialists, ethicists, domain experts, legal advisors, non-specialist stakeholders) to review AI systems for potential risks and harms, operating alongside other responsible AI approaches like policies, audits, and dedicated governance roles. The study's key insight that institutional review boards alone prove insufficient for algorithm governance and that ARBs function most effectively when integrated with existing organizational processes rather than operating as isolated oversight bodies speaks directly to research institutions' governance challenges. The article's documentation of financial tensions between profit motives and responsible AI costs, while focused on commercial contexts, translates to research institutions facing pressure to adopt AI for efficiency gains while managing ethical risks with constrained resources. Hadley et al.'s call for standardized ARB effectiveness metrics points to the broader challenge of demonstrating governance value in organizations where responsible AI practices compete with other institutional priorities for attention and investment. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Janssen, Marijn. 2025. “Responsible Governance of Generative AI: Conceptualizing GenAI as Complex Adaptive Systems.” ''Policy and Society'' 44 (1): 38–51. https://doi.org/10.1093/polsoc/puae040''' </div> Janssen's conceptual article reframes generative AI governance as managing complex adaptive systems characterized by co-evolution, emergent properties, and non-linear interactions between technical and social elements, directly challenging technology-deterministic approaches that treat AI as static tool requiring one-time organizational accommodation. This systems perspective is essential for understanding why research institutions struggle with AI governance: the article demonstrates how AI systems and organizational contexts mutually shape each other through feedback loops, making governance an ongoing adaptive process rather than implementation of fixed policies. Janssen argues that effective organizational stewardship requires holistic, outward-focused governance attending to how AI systems interact with broader organizational processes, public values, and societal concerns—moving beyond narrow risk mitigation to address joint accountability across system components including people, policies, data, and algorithms. For research institutions embedding AI in knowledge infrastructures, this framing illuminates why isolated departmental responses prove insufficient: cataloging systems using AI for metadata generation, research platforms deploying AI for literature synthesis, and administrative systems using AI for resource allocation together constitute an organizational AI ecosystem whose emergent behaviors cannot be governed through component-level oversight alone. The article's emphasis on selecting and combining appropriate policy instruments into adaptive governance packages provides conceptual foundation for cross-functional coordination mechanisms, suggesting that effective institutional stewardship requires deliberate orchestration of technical standards, organizational procedures, and stakeholder engagement processes that together shape AI's organizational trajectory. Janssen's work underscores that AI governance is not primarily technical implementation challenge but organizational transformation requiring institutions to develop new capabilities for managing sociotechnical co-evolution. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Papagiannidis, Emmanouil, Patrick Mikalef, and Kieran Conboy. 2025. “Responsible Artificial Intelligence Governance: A Review and Research Framework.” ''The Journal of Strategic Information Systems'' 34 (2): 101885. https://doi.org/10.1016/j.jsis.2024.101885''' </div> Papagiannidis and colleagues provide theoretical grounding for understanding how organizations operationalize responsible AI principles through governance structures. Their scoping review synthesizes disparate literature to construct a conceptual framework differentiating between structural practices (formal roles, committees, reporting lines), relational practices (stakeholder engagement, accountability mechanisms), and procedural practices (auditing protocols, monitoring systems) across the AI lifecycle. This tripartite framework is valuable for research institutions navigating the challenge of translating broad ethical commitments into actionable organizational arrangements. The article explicitly addresses how governance antecedents like leadership commitment and regulatory pressure shape implementation, and how governance practices in turn affect outcomes like trust, compliance, and innovation capacity. The authors' critical reflection on responsible AI governance reveals tensions inherent to institutional stewardship: between centralized oversight and distributed expertise, between standardized protocols and context-sensitive judgment, between rapid AI deployment and deliberative ethical review. For research organizations managing AI's entanglement with knowledge infrastructures, this work provides vocabulary and analytical categories for diagnosing governance gaps and designing institutional responses that embed responsibility throughout organizational systems rather than treating ethics as external constraint. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Weber, Michael, Martin Engert, Norman Schaffer, Jörg Weking, and Helmut Krcmar. 2023. “Organizational Capabilities for AI Implementation—Coping with Inscrutability and Data Dependency in AI.” ''Information Systems Frontiers'' 25: 1549–1569. https://doi.org/10.1007/s10796-022-10297-y''' </div> Weber and colleagues identify four organizational capabilities essential for AI implementation, addressing AI's distinctive characteristics that distinguish it from previous information technologies: inscrutability (difficulty predicting probabilistic outputs and explaining decision processes) and data dependency (reliance on high-quality, continuously updated data for system performance). Their capability framework—encompassing AI Project Planning, Co-Development, Data Management, and AI Model Lifecycle Management—provides actionable guidance for research institutions developing internal capacity to steward AI systems. The article's grounding in expert interviews from diverse organizational contexts reveals that AI implementation failures often stem not from technical deficits but from organizational incapacity to manage sociotechnical complexity: inscrutability requires enhanced planning and stakeholder communication practices to align expectations around uncertain outcomes, while data dependency demands robust governance of data quality, provenance, and evolution throughout systems' operational lives. For research organizations, these capabilities map onto critical institutional functions: libraries developing metadata systems must manage data quality for AI cataloging tools; research offices supporting computational scholarship must plan projects acknowledging unpredictable AI behavior; IT departments maintaining infrastructure must implement lifecycle management ensuring model performance doesn't degrade as institutional data changes. The article's emphasis on Co-Development capability—bringing together technical specialists, domain experts, and end-users to jointly shape AI systems—speaks directly to cross-functional coordination challenges in research institutions where AI touches multiple organizational domains. Weber et al.'s framework reveals that organizational stewardship requires not just governance structures (committees, policies, review processes) but operational capabilities (planning methods, collaboration practices, technical procedures) embedded in day-to-day institutional work. This capability perspective shifts attention from abstract principles to concrete organizational competencies that determine whether responsible AI rhetoric translates into institutional practice. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Wu, Chuhao, He Zhang, and John M. Carroll. 2024. “AI Governance in Higher Education: Case Studies of Guidance at Big Ten Universities.” Preprint, ''arXiv'', September 3. https://doi.org/10.48550/arXiv.2409.02017''' </div> Wu and colleagues provide rare empirical documentation of how major research universities translate AI governance principles into institutional practice, examining guidance documents from fourteen Big Ten universities to identify organizational patterns and role-specific strategies. Their analysis reveals three key organizational dimensions: multi-unit governance involving information technology departments, teaching and learning centers, libraries, and research offices operating with distributed authority rather than centralized control; role-specific guidance differentiating expectations for faculty, students, staff, and researchers rather than applying uniform policies; and educational-advisory approaches emphasizing learning and adaptation over compliance enforcement. This case-study evidence illuminates the pragmatic challenges research institutions face when operationalizing AI oversight: how to coordinate across functional silos with different mandates, expertise, and risk tolerances; how to balance flexibility (needed because AI applications vary dramatically across contexts) with consistency (needed to ensure institutional values are upheld); how to position governance as enabling innovation rather than constraining it. The article's documentation of specific institutional mechanisms, such as data classification systems limiting what information can be shared with AI tools, or Socratic guidance approaches that pose questions rather than dictate answers, provides concrete examples of organizational stewardship in action. For understanding AI's organizational entanglement with knowledge infrastructures, this work demonstrates how governance emerges through negotiation among multiple institutional actors, each bringing domain expertise and jurisdictional claims, requiring coordination mechanisms that existing organizational charts may not accommodate. === Publishing, Communication, Engagement Infrastructures === <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bergstrom, Tracy, and Dylan Ruediger. 2024. “A Third Transformation? Generative AI and Scholarly Publishing.” ''Ithaka S+R''. October 30, 2024. https://doi.org/10.18665/sr.321519''' </div> Drawing on interviews with leaders from publishers, technology disruptors, academic libraries, and scholarship, Bergstrom and Ruediger map the strategic landscape of AI adoption across the publishing industry. The report identifies a bifurcated future: an incrementalist scenario where AI produces efficiency gains without fundamentally altering industry dynamics, versus a transformative scenario creating disruption comparable to or exceeding previous digital transformations. For search and discovery, most interviewees anticipate heavy AI impact, with tools already expanding capabilities through summarization and chatbot interfaces—potentially disrupting the linear progression from discovery to understanding by introducing AI-enabled synthesis. For peer review, interviewees expressed optimism that AI could address chronic strain through "pre-review" feedback, assistance with copy editing and misconduct detection, and more efficient reviewer identification, while raising concerns about accuracy, confidentiality, and maintaining human judgment in evaluation. The authors document a competitive threat from large technology companies: scenarios where commercial LLMs become default interfaces for accessing scholarly content pose significant challenges to publisher positioning. Content licensing to foundation model developers offers clear monetization paths, but broader revenue implications remain uncertain. The analysis identifies a critical research integrity challenge: ensuring transparent standards for AI usage while upholding provenance, attribution, reproducibility, and transparency in an environment of increasing automation. Smaller publishing organizations may struggle to match larger entities' adaptive capacity, potentially accelerating industry consolidation. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Broussard, Meredith. 2023. “The Challenges of AI Preservation.” ''The American Historical Review'' 128 (3): 1378–81. https://doi.org/10.1093/ahr/rhad366.''' </div> Broussard illustrates how the current impermanence of digital storage is producing a nightmare for future historians, as content is hidden away by licensing agreements or simply disappears when its host platform ceases to exist. Earlier ideals of the internet preserving a “complete first draft of history” are far from the reality, and problems only intensify when considering the development of AI, which Broussard compares to the printing press. For example, one could access a record of a physical newspaper published on a given day, but Google Search’s software is constantly changing with no canonical daily version, which means no historian could ever hope to examine a comparable snapshot of an AI. Operations like the Internet Archive and the development of emulation can help diminish losses, but it must be recognized that the digital world is decaying. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Buitrago-Ciro, Jairo, Marta Samokishyn, Rachel Moylan, Jonathan Hernández Pérez, Oluwabunmi Bakare-Fatungase, and Carmel Firdawsi. 2025. “Bridging the AI Gap: Comparative Analysis of AI Integration, Education, and Outreach in Academic Libraries.” ''IFLA Journal'' 51 (3): 682–702. https://doi.org/10.1177/03400352251325274. ''' </div> Buitrago-Ciro et al. examine the websites of 40 libraries in North America, Western Europe, Latin America, and Africa to explore how they have integrated AI technologies into their services, policies, and outreach efforts. Overall, the authors found a geographic divide in the integration of AI into library services, because almost all North American and European libraries had AI educational outreach activities and resources, while only five (out of ten) Latin American libraries and one (out of ten) African libraries did outreach activities. However, AI integration into library services and development of library AI policies and guidelines was more uncommon across all regions, as less than half of North American and European libraries engaged in these activities, while only one library in Latin America and one in Africa integrated AI into their services and none had specific library AI policies. These regional differences in AI integration stem from each region’s socioeconomic contexts, social inequalities, and technological gaps that present additional challenges for AI adoption in African and Latin American libraries. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Gulson, Kalervo N., and P. Taylor Webb. 2023. “Steering the Mind Share: Technology Companies, Policy and Artificial Intelligence Research in Universities.” ''Discourse: Studies in the Cultural Politics of Education'' 44 (2): 195–207. https://doi.org/10.1080/01596306.2021.1981828. ''' </div> Gulson and Webb (2023) examine how major technology companies are actively reshaping the landscape of artificial intelligence research within universities. Drawing on interviews with computer scientists as part of a broader international project, the authors investigate three key areas: the influence of tech companies on AI research practices, the policy frameworks that foster academia-industry collaborations, and the role of "open science" in facilitating the transfer of academic ideas to the corporate sector. The study highlights that the boundaries between academic and corporate research have become highly porous. Companies like Google do not merely act as external funders; they are deeply embedded within university ecosystems, actively steering research directions. Furthermore, the authors illustrate how national policies, such as Canada’s Pan-Canadian Artificial Intelligence Strategy, legitimize and accelerate this corporate influence by heavily incentivizing industry partnerships. While these collaborations provide universities with crucial resources and drive innovation, Gulson and Webb warn that they also raise significant concerns regarding conflicts of interest and the corporatization of open science. Ultimately, the authors argue that corporate funding creates powerful feedback loops among tech companies, policymakers, and academics, effectively allowing industry to capture the "mind share" of university research. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Kousha, Kayvan, and Mike Thelwall. 2024. “Artificial Intelligence to Support Publishing and Peer Review: A Summary and Review.” ''Learned Publishing'' 37 (1): 4–12. https://doi.org/10.1002/leap.1570''' </div> Kousha and Thelwall provide a systematic mapping of AI tool deployment across the scholarly publishing pipeline, distinguishing demonstrated capabilities from promotional claims. For journal recommendation, the review documents AI-powered systems, including Springer Nature Journal Suggester, Wiley Journal Finder, IEEE Publication Recommender, and JANE (Journal/Author Name Estimator), that analyze text similarity with previously published articles and reports high accuracy rates for appropriate journal matching. The analysis of initial quality control covers a diverse toolkit for plagiarism detection, robot author detection, methods checking, automated statistical verification, transparency and reproducibility checking and manuscript structure validation. Commercial systems draw on databases to suggest appropriate reviewers; the Natural Science Foundation of China's AI-assisted reviewer recommender for grant applications reports approximately 80% accuracy. However, the review identifies a critical boundary: while AI proves effective for finding reviewers and conducting initial quality checks, its value in performing the actual substantive review process "has not been clearly demonstrated." The synthesis reveals that substantial efficiency improvements are achievable in labor-intensive administrative tasks, while human judgment remains integral to core intellectual evaluations—a distinction essential for understanding where AI integration in publishing will proceed incrementally versus face fundamental obstacles. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Ma, Lai. 2024. “Generative AI for Academic Publishing? Some Thoughts About Epistemic Diversity and the Pursuit of Truth.” ''KULA: Knowledge Creation, Dissemination, and Preservation Studies'' 7 (1): 1–5. https://doi.org/10.18357/kula.287.''' </div> Ma (2024) critiques the integration of generative AI in academic publishing, arguing that the drive for automation threatens the central values of epistemic diversity and bibliodiversity. By invoking the "Sokal Hoax," the author illustrates the danger of AI-generated "bullshit"—content that mimics the formal structures of scholarship while remaining devoid of actual meaning. Ma specifically uses Scopus AI as a case study to demonstrate how the platformization of scholarly data creates a feedback loop that reinforces the "Matthew Effect," where established, English-language, and well-resourced publications are disproportionately amplified. This process, Ma warns, leads to "epistemic injustice" by marginalizing non-Western research and niche topics that are underrepresented in training datasets. The paper serves as a vital warning: without robust data surveillance and human-centric safeguards, the AI-accelerated publishing model may exacerbate peer-review crises and citation monopolies, ultimately undermining the public trust and diverse knowledge creation that open scholarship aims to protect. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Mitchell, Peta, Michelle Riedlinger, Jake Goldenfein, Aaron Snoswell, Jean Burgess, and Kevin Witzenberger. 2025. “Research Genai: Situating Generative AI in the Scholarly Economy.” ''AoIR Selected Papers of Internet Research''. https://doi.org/10.5210/spir.v2024i0.14006.''' </div> Mitchell et al. focus upon the oft-overlooked subfield of Generative AI tools known as “RGAI”, research-focussed models which they argue represent “complex sociotechnical systems.” Hepp et al.’s definition of AI as a “sensitizing concept” and Watermeyer’s consideration of AI as a “labor accelerator” are used to situate this argument within the “scholarly economy” before the authors expand upon these theories, arguing RGAI should be approached as a form of “platform capitalism” akin to academia.edu. To evidence this stance, the authors examine the highly distinct RGAI models “Consensus” and “Writefull” as case studies. “Consensus” is designed to produce an academic “ConsensusMeter” by combining a proprietary LLM with OpenAI technology, while “Writefull” “aims to simplify… the often challenging task of scholarly writing” by employing custom AI models. Mitchell et al. highlight that although both tools are presented as independent and bespoke, they have major corporate backing. This deeply conflicts with the research principles of open scholarship, so Mitchell et al. aim to develop an index of RGAI which are appropriate for use in research. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Pividori, Milton, and Casey S. Greene. 2024. “A Publishing Infrastructure for Artificial Intelligence (AI)-Assisted Academic Authoring.” ''Journal of the American Medical Informatics Association'' 31 (9): 2103–13. https://doi.org/10.1093/jamia/ocae139''' </div> The Manubot AI Editor implements a concrete technical solution to the provenance problem in AI-assisted scholarship through three integrated components: a Python library, a GitHub Actions workflow, and a prompt generator. This architecture addresses provenance directly: all changes are tracked through version control, creating a clear audit trail distinguishing human-authored from machine-generated text and documenting exactly how AI suggestions were accepted, modified, or rejected. Evaluation proceeded through five case studies using both human and automated assessment. Human evaluators assessed whether revisions preserved original meaning and important details, avoided introducing incorrect information, and maintained correct formatting. Automated "LLM-as-a-Judge" iterative assessment evaluated paragraph pairs across criteria including sentence structure clarity, ease of understanding, and grammatical correctness. The evaluations found that models could grasp complex academic concepts and enhance text quality, with particular effectiveness in text-based sections like introductions and discussions. The human-in-the-loop design, where AI suggestions function as proposed edits rather than direct insertions, mitigates risks of incorrect information while preserving authorial agency over final content. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Razack, Habeeb Ibrahim Abdul, Sam T. Mathew, Fathinul Fikri Ahmad Saad, and Saleh A. Alqahtani. 2021. “Artificial intelligence-assisted tools for redefining the communication landscape of the scholarly world.” ''Science Editing''. https://doi.org/10.6087/kcse.244 ''' </div> Razack et al. argue AI will transform publishing into a technology-driven industry, streamlining dissemination of scholarship “for the betterment of humankind.” Exploring current trends via case studies, they emphasize AI’s impact upon human performance over its independent “creative” role. They argue AI could benefit the “prospective” researcher by predicting an article’s “citation impact”, identifying evolving research trends, and locating relevant research journals to publish in, cutting past low-charging and “predatory OA journals” which “malign integrity” by publishing “compromised content.” Meanwhile, “retrospective” editors could employ AI to detect plagiarism, streamline peer review, and format publications. For Razack et al., the rise of AI can therefore be compared to the rise of the typewriter, swift adoption likely promoting ‘human-machine collaboration’ over replacement. === Accountability-related Infrastructures === <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Ngulube, Patrick, and Neema Florence Vincent Mosha. 2024. “Integrating Artificial Intelligence-Based Technologies ‘Safely’ in Academic Libraries: An Overview through a Scoping Review.” ''Technical Services Quarterly'' 42(1): 46–67. https://doi.org/10.1080/07317131.2024.2432093''' </div> Ngulube and Mosha (2025) conduct a scoping review examining the state of research on ethical issues and perceived risks in AI integration within academic libraries. Analyzing 28 studies published before 2024, the authors reveal that research on safe AI adoption in libraries remains nascent, with significant gaps in theoretical grounding and methodological diversity. The review identifies critical ethical concerns including algorithmic bias, privacy violations, reduced transparency and accountability, and job displacement—yet finds that existing literature disproportionately emphasizes employment risks while neglecting environmental and planetary impacts. The authors note that ethical considerations have not taken center stage in library and information science research, as evidenced by the scarcity of relevant keywords and abstracts in the literature. A major finding is that most studies employ quantitative methodologies at the expense of qualitative and mixed-methods approaches, and only 18% employ explicit theoretical frameworks. The review underscores that academic libraries must navigate the dual challenge of leveraging AI's operational efficiencies while ensuring ethical standards of inclusivity, accessibility, and fair information use—a task complicated by the absence of established best practices and the need for human-centered approaches to AI governance. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''“Realising Potential, Supporting Users: IFLA Statement on Copyright and Artificial Intelligence.” n.d. IFLA. Accessed May 1, 2025. https://www.ifla.org/news/realising-potential-supporting-users-ifla-statement-on-copyright-and-artificial-intelligence/. ''' </div> This statement aims to help IFLA member libraries in navigating copyright issues and developing programs relevant to AI, positioning libraries as innovators “uniquely situated to lead” in supporting, training, and utilizing AI. However, restrictions stem from rightsholders, economic and moral copyright laws, and health, safety, and privacy laws. Libraries should therefore be guided by the most appropriate policy sources to mitigate restrictions by ensuring AI tools do not compromise areas of concern. Libraries are further recommended to advise decision-makers to permit mining legally accessed content, address bias by promoting “the widest possible access”, build capacity, awareness, and training for evolving technologies, and monitor AI standards. Governments are recommended to follow existing human rights regulations, avoid using copyright law as a “blunt force tool”, develop ethical AI practices, and fund repositories of AI training data - alongside AI companies themselves. Both rightsholders and vendors are advised to avoid language in contracts which restricts the use of AI or prevents exceptions. Overall, this document aims to promote AI by making as much content available as possible. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Werder, Karl, Balasubramaniam Ramesh, and Rongen (Sophia) Zhang. 2022. “Establishing Data Provenance for Responsible Artificial Intelligence Systems.” ''ACM Transactions on Management Information Systems'' 13 (4): 1–25. https://doi.org/10.1145/3503488''' </div> Werder et al. provide a framework for understanding audit trails in the context of AI and research data management, arguing that robust data provenance is not merely a technical feature but a prerequisite for achieving accountability in AI systems. They detail the requirements for a comprehensive provenance system, capable of tracking data from its origin through various transformations and into model training and deployment. This is directly relevant to research infrastructures, as it outlines how repositories and data management platforms can and must evolve to support AI-driven research. The authors’ multi-layered architectural proposal offers a concrete vision for how a research institution could implement a system to audit data pipelines, identify sources of bias, and ensure regulatory compliance. By connecting provenance to the broader goal of “Responsible AI,” the paper provides the conceptual tools for evaluating whether a research infrastructure’s data governance is sufficient to handle the accountability challenges posed by AI. == Audience == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''de Angelis, Luigi, Francesco Baglivo, Guglielmo Arzilli, Gaetano Pierpaolo Privitera, Paolo Ferragina, Alberto Eugenio Tozzi, and Caterina Rizzo. “ChatGPT and the Rise of Large Language Models: The New AI-Driven Infodemic Threat in Public Health.” ''Frontiers in Public Health'' 11 (2023): 1166120. https://doi.org/10.3389/fpubh.2023.1166120''' </div> De Angelis and colleagues examine the emergence of Large Language Models, particularly ChatGPT, as a novel public health threat through the lens of "AI-driven infodemic." The authors trace the rapid evolution of LLMs from earlier transformer-based models through GPT-3 to ChatGPT, highlighting how each iteration has increased the capacity to generate fluent, authoritative-sounding text at scale. Critically, they identify a fundamental misalignment problem: despite efforts to fine-tune these models through reinforcement learning from human feedback, LLMs remain prone to generating plausible-sounding but factually incorrect or fabricated information—a vulnerability particularly dangerous in medical and health contexts. The paper's central argument is that the unprecedented speed and volume at which LLMs can produce convincing content creates conditions for misinformation spread on a scale previously impossible, especially among non-expert publics who lack the epistemic resources to detect AI-generated falsehoods. The authors emphasize that the inability to reliably detect AI-produced text compounds this threat, undermining public trust in scientific institutions and potentially influencing health-related behaviors and policy decisions. The work demonstrates how LLM-mediated scientific communication poses distinct risks to knowledge integrity and public understanding, requiring urgent development of detection mechanisms, governance frameworks, and media literacy initiatives to protect audiences from AI-driven epistemic harm. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bryant, Rebecca. 2024. “Implementing an AI Reference Chatbot at the University of Calgary Library.” ''Hanging Together'', December 12. https://hangingtogether.org/implementing-an-ai-reference-chatbot-at-the-university-of-calgary-library/''' </div> Bryant (2024) details the development and implementation of "T-Rex," an AI-powered reference chatbot at the University of Calgary Library, based on a webinar hosted by the OCLC Research Library Partnership. While the library had offered live chat services since the early 2010s, the COVID-19 pandemic caused a massive surge in demand, peaking at over 3,000 inquiries in a single month. To alleviate this strain, the library analyzed past chat transcripts and determined that 12–14% of inquiries were simple, directional questions suitable for automation. To prevent scope creep during the initial training phase, the development team focused on a core set of fifty common questions. Through continuous refinement, the chatbot has since expanded to encompass over 1,000 custom responses, though its effectiveness remains limited by the availability of existing library webpages or FAQs to draw from. Bryant concludes by summarizing the Calgary team's key insights for institutions developing similar tools: developers must anticipate out-of-scope or non-library questions, recognize that users prefer direct answers over links to webpages, program creative responses for off-topic queries, and prepare for user resistance or non-adoption. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Hara, Noriko, Eugene Kim, Shohana Akter, and Kunihiro Miyazaki. 2025. “Exploring the Dynamics of Interaction About Generative Artificial Intelligence Between Experts and the Public on Social Media.” ''Journal of Science Communication'' 24 (1): A02. https://doi.org/10.22323/2.24010202''' </div> Hara and colleagues conduct an empirical investigation into how experts and the public co-produce knowledge about generative AI on social media, specifically analyzing X (formerly Twitter) discussions. Rather than treating the public as passive consumers of expert knowledge, the authors adopt a Public Engagement with Science (PES) framework that recognizes social media platforms as dynamic arenas where non-experts actively contribute to shaping collective understanding of emerging technologies. Through computational and manual analysis, they identify distinct discussion topics, map the roles that both experts and laypeople play in knowledge production, and examine how engagement metrics correlate with these roles. A critical finding is that the public functions beyond questioners seeking expert guidance, but rather as active knowledge co-producers who share practical insights, challenge claims, and contribute their own perspectives and experiences with GenAI tools. This research demonstrates how AI itself—as a subject of discourse—becomes a site of negotiated meaning-making between differently positioned actors. The work moves beyond traditional one-way dissemination models to reveal the interactive, participatory nature of contemporary science communication, with implications for understanding how diverse audiences collectively construct understanding of transformative technologies and how this co-productive process shapes both public perception and the future development of AI systems. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Jaillant, Lise, Olivia Mitchell, Eric Ewoh-Opu, and Maribel Hidalgo Urbaneja. 2025. “How Can We Improve the Diversity of Archival Collections with AI? Opportunities, Risks, and Solutions.” ''AI & Society'' 40: 4457–4459. https://doi.org/10.1007/s00146-025-02222-z. ''' </div> Jaillant et al. draw from interviews with 20 academics and archival professionals to explore how AI technologies can help address the lack of diversity in archival collections. The authors highlight that AI tools can assist in automatically detecting racist or inappropriate language in metadata, search large amounts of historical records, and uncover new insights within archival records. However, the authors argue that the deployment of AI should involve close collaboration between librarians, archivists, and developers. The current limited collaboration between developers and libraries limits the ethical and inclusive application of AI in archival collections, especially those with sensitive historical materials. The interviewees also warned against the loss of historical context when using AI, the perpetuation of archival biases, and the loss of control when AI tools are designed and governed by tech companies. To conclude, the authors recommend investing in interdisciplinary AI training programs for archivists, educating AI developers about the unique needs of archives so they can create more relevant solutions, and creating professional guidelines about the best practices for AI use to address the lack of diversity in archival collections. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Peters, Uwe, and Benjamin Chin-Yee. 2025. “Generalization Bias in Large Language Model Summarization of Scientific Research.” ''Royal Society Open Science'' 12 (4): 241776. https://doi.org/10.1098/rsos.241776''' </div> Peters and Chin-Yee provide rigorous, large-scale empirical evidence of a systematic and consequential distortion in LLM-generated scientific summaries: the tendency toward overgeneralization. Testing ten prominent LLMs—including ChatGPT-4o, ChatGPT-4.5, DeepSeek, LLaMA 3.3 70B, and Claude 3.7 Sonnet—on 4,900 summaries of scientific abstracts and full-length articles, the authors demonstrate that even when explicitly prompted for accuracy, most LLMs consistently produce conclusions broader and more definitive than those warranted by the original research. Critically, they identify three specific mechanisms of overgeneralization: the use of generic statements that obscure quantification, the shift from past to present tense (which expands scope), and the omission of qualifiers and limitations. The findings are stark: LLM-generated summaries were nearly five times more likely than human-authored summaries to contain broad generalizations (odds ratio = 4.85, 95% CI [3.06, 7.70], p < 0.001), with newer models performing worse than earlier ones. This research is foundational for understanding how AI-mediated knowledge communication systematically distorts scientific findings at scale, regardless of user expertise or intent. The work demonstrates a concrete mechanism through which LLM intermediation can alter the epistemic content of research, with particular implications for medical and clinical contexts where overgeneralized conclusions can directly influence policy and patient care. The authors propose mitigation strategies including temperature adjustment and systematic benchmarking, but their findings underscore the profound challenge of ensuring faithful knowledge transmission through AI systems. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''da Silva Cardoso, Heike, and Vitor Rocio. 2025. “Enhancing Digital Libraries Through NLP and Recommender Systems: Current Trends and Future Prospects with Large Language Models.” In ''Technology and Innovation in Learning, Teaching and Education: TECH-EDU 2024'', edited by Arsénio Reis, José P. Cravino, Leontios Hadjileontiadis, Paulo Martins, Sofia B. Dias, Sofia Hadjileontiadou, and Tassos Mikropoulos, 69–79. C''ommunications in Computer and Information Science'' 2480. Cham: Springer. https://doi.org/10.1007/978-3-032-02672-9_5''' </div> da Silva Cardoso and Rocio propose a practical framework for integrating Natural Language Processing and Large Language Models into academic digital libraries to address the information overload facing researchers, students, and faculty. Recognizing that traditional search methods have become insufficient in the face of exponential publication growth, the authors advocate for AI-driven recommender systems capable of delivering precise, relevant, and personalized literature recommendations. Their contribution centers on an audience-aware design philosophy that positions librarians as essential partners in system development. Rather than treating AI as a purely algorithmic solution, the authors emphasize that librarians' direct interactions with users provide irreplaceable insight into the nuanced and context-dependent needs of diverse academic communities. This human-in-the-loop approach represents a noteworthy methodological stance: AI functions not as a replacement for human expertise but as a tool to augment librarian knowledge and enhance the responsiveness of knowledge discovery systems. The work is particularly salient for understanding how contemporary LLM-based systems can be designed to serve scholarly audiences more effectively while maintaining the institutional wisdom and user-centered perspective that librarians bring to information work. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Taneja, Ankit Kumar, and Chandra Tripathi. 2020. “AI-Powered Recommender Systems: Personalization and Bias.” ''Turkish Journal of Computer and Mathematics Education (TURCOMAT)'' 11 (1): 1090–1094. https://doi.org/10.61841/turcomat.v11i1.14406''' </div> Though published before the generative AI era, Taneja and Tripathi's analysis of AI-powered recommender systems remains foundational to understanding algorithmic bias in information discovery. The authors examine the structural tensions inherent in personalization algorithms—systems designed to enhance user experience by tailoring content suggestions yet simultaneously capable of constructing "filter bubbles" and "echo chambers" around users. By continuously recommending content similar to previous engagement, these algorithms systematically exclude novel, dissenting, or interdisciplinary perspectives, undermining serendipitous discovery essential to genuine scholarly inquiry. Critically, the authors frame algorithmic bias not as a technical glitch but as a structural risk embedded within the information architectures that guide knowledge-seekers, and thus they expose how algorithmic personalization—a feature predating generative AI—already demonstrated the capacity to narrow intellectual diversity and reinforce pre-existing beliefs. This pre-GenAI work provides historical context for understanding how contemporary AI systems have intensified these risks, making it useful for evaluating the ethical imperatives of designing systems that promote intellectual openness rather than epistemic closure. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''de Winter, J. 2024. “Can ChatGPT Be Used to Predict Citation Counts, Readership, and Social Media Interaction? An Exploration Among 2222 Scientific Abstracts.” ''Scientometrics'' 129: 2469–2487. https://doi.org/10.1007/s11192-024-04939-y''' </div> De Winter’s study contrasts conventional scientometrics, testing whether a large language model can predict an article’s citation count and altmetric scores (whilst noting these may be unreliable assessors of actual scientific impact) by rating its abstract across “semantically diverse” variables. His case study uses ChatGPT-4 to predictively evaluate 2,222 abstracts from articles published in PLOS ONE, monitoring its accuracy by referencing actual citation counts and altmetrics scores. De Winter employs a custom script to prompt OpenAI’s Application Programming Interface (API) to score each abstract on a scale of zero to one hundred across thirty positive variables and their thirty antonyms, which he then organizes under five categories (e.g. “Quality and Reliability”). As Chat-GPT 4 only produced consistent results at the population level, it was run three additional times to determine averages and bolster reliability of individual scores. This language-based evaluation of article abstracts revealed that ChatGPT-4’s scores better correlate with altmetrics and citation counts than conventional readability scores do. Furthermore, “Novel and Engaging” articles were most likely to be cited, whilst “Accessible and Understandable” articles scored highest in altmetrics. {{Navigation|previous=AI and Social|next=Complete Alphabetical List of References}} {{BookCat}} c00cnhledvoe7pmqgpqatmsowp9qvo9 4656028 4656014 2026-08-02T01:27:49Z CorreiaA 3614427 4656028 wikitext text/x-wiki == Research Methods and Practices == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Arnett, Catherine, Eliot Jones, Ivan P. Yamshchikov, and Pierre-Carl Langlais. 2024. “Toxicity of the Commons: Curating Open-Source Pre-Training Data.” Preprint, ''arXiv'', October 29. https://doi.org/10.48550/arXiv.2410.22587.''' </div> Open-source pretraining data is increasingly treated as a shared resource for building “open” language models, yet it can embed and reproduce harmful speech patterns at scale. Arnett, Jones, Yamshchikov, and Langlais argue that reducing toxic model behaviour requires intervening upstream in data, and they focus specifically on the distinctive constraints of public-domain corpora (including historical documents and OCR-derived text) where standard web-text toxicity filters can be impractical or ill-suited. They propose a fully open-source curation pipeline designed for these conditions and present three concrete contributions: (1) ToxicCommons, a custom-labelled dataset organized across five toxicity dimensions (racial/origin-based, gender/sex-based, religious, ability-based discrimination, and violence); (2) Celadon, a classifier trained on that dataset to detect toxic content more efficiently at scale in open data; and (3) a “balanced” filtration strategy that explicitly trades off safety filtering against retaining sufficient training material. The paper’s core claim is that open-data model development needs domain-attuned, auditable curation methods paired with task-specific classifiers, so that openness in data does not automatically translate into avoidable harms in downstream model outputs. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bail, Christopher A. “Can Generative Artificial Intelligence Improve Social Science?” https://www.semanticscholar.org/paper/Can-Generative-Artificial-Intelligence-Improve-Bail/6206cc77bb3a3c0b6b9fce1ad68a8b1786a56941<nowiki/>.''' </div> Bail (2023) provides a critical evaluation of how Generative Artificial Intelligence (AI), particularly Large Language Models (LLMs), might fundamentally transform computational social science. Moving beyond superficial administrative use cases, Bail examines the potential of LLMs to simulate complex human behaviours. He suggests that Generative AI could revolutionize agent-based modelling by replacing simplistic, rule-bound agents with dynamic, memory-equipped "silicon samples" capable of emergent group behaviours. While acknowledging the utility of AI for automated content analysis and expanding programming accessibility, Bail rigorously details the methodological and ethical perils of these largely opaque systems. He warns that the proprietary fine-tuning of commercial LLMs introduces severe demographic biases—often skewing toward highly educated, liberal perspectives—which threatens the external validity of AI-assisted research. Furthermore, Bail highlights the "Stack Overflow Problem," cautioning that the unchecked proliferation of AI-generated "junk science" could contaminate future training data and degrade the broader scientific ecosystem. Ultimately, Bail argues that social scientists must not remain passive "end-users" of corporate AI. Instead, they must actively collaborate with computer scientists to reverse-engineer the "social sense" into AI models, ensuring the development of open-source, reproducible infrastructures that genuinely advance the study of human behaviour. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bakharia, Aneesha, Antonette Shibani, Lisa-Angelique Lim, Trish McCluskey, and Simon Buckingham Shum. 2025. “From Transcripts to Themes: A Trustworthy Workflow for Qualitative Analysis Using Large Language Models.” In ''Joint Proceedings of LAK 2025 Workshops, co-located with the 15th International Conference on Learning Analytics and Knowledge (LAK 2025)''. Dublin, Ireland: CEUR-WS.org. https://ceur-ws.org/Vol-3995/LLMQUAL_paper1.pdf.''' </div> Bakharia et al. explore the use of AI in qualitative, rather than quantitative, research in education. The authors define “minimum requirements that an LLM-supported qualitative analysis workflow must satisfy” and present a “LLM-based workflow that derives an initial set of themes” from text data that is “transferable to other LA [learning analytics] contexts performing qualitative analysis of open-ended text.” The authors define two requirements for “LLM-generated inductive coding”: first, it must verify “coded textual extracts… against source data” to make sure the quotes are accurate (i.e., verbatim and not hallucinated) and verify those extracts “are meaningfully classified under the assigned code.” Second, in the interest of transparency, it must “explain that rationale for each code” and “trace every code, whatever level of abstraction, back to its source data.” The article outlines and describes the proposed workflow in detail, including its being built in Python with a Jupyter notebook and Flask application. While they acknowledge challenges and problems in their research (e.g., LLM bias, the lack of comparable human analysis, the risk of alienating the human quality of qualitative research), Bakharia et al. ultimately advocate their approach as one that “improves transparency, verifiability, and interpretability, while addressing limitations of previous methods and enhancing researcher processes in qualitative thematic analysis" (9). By adapting their minimum requirements and workflow, the authors argue, researchers can engage more effectively in LLM-driven qualitative research. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Dennstädt, Fabio, Cedric Sivert Möller, Tim Fellerhoff, Felix Busch, Oke Gerke, André Karch, and Oliver Krause. 2024. “Title and Abstract Screening for Literature Reviews Using Large Language Models: An Exploratory Study in the Biomedical Domain.” ''Systematic Reviews'' 13 (1): 158. https://doi.org/10.1186/s13643-024-02575-4<nowiki/>.''' </div> Dennstädt et al. perform a study in which they attempt to determine the viability of using LLMs to automate scholarly literature surveys. The researchers developed a method for using LLMs to perform the title and abstract screenings of a systematic literature review method and applied that method with four LLMs across eleven datasets in biomedical literature. A key advantage of implementing LLMs in this process is that it escapes the need to train the machine via pre-selection. Researchers have developed automated and semi-automated processes for systematic literature reviews in the past, but this requires a human agent to provide training data or a corpus of example texts that tell the system what to look for. LLMs do not require this step. Instead, the researchers used a Python script that prompts the LLM “to evaluate the relevance of a scientific publication for inclusion into an SLR,” providing the LLM with both abstract and title, request for a numbered score indicating the relevance of the publication, and a numerical threshold that defines whether a score makes the given publication relevant. The authors characterize the results of the study as “promising” but also “far from perfect,” identifying that such applications could be helpful to researchers and are widely applicable without special training for data or user, even if “fully automated systems… still fail to differentiate… near the level of human evaluation.” The authors conclude that more research into the use of LLMs to automate systematic literature reviews is needed, but it seems very likely that scholars will employ LLMs into this integral research task with greater frequency in the future. How well LLMs will continue to perform in this task is unclear, especially in new research, and Dennstädt et al. clearly state, “we cannot answer the question of to what extent LLMs should be used for conducting literature reviews and for doing research.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Montague-Hellen, Beth. 2024. “Empowering Knowledge through AI: Open Scholarship Proactively Supporting Well Trained Generative AI.” ''Insights'' 37 (1). https://doi.org/10.1629/uksg.649.''' </div> Generative AI is becoming a dominant interface for finding, summarizing, and producing academic information, with consequences for what counts as authoritative knowledge online. Montague-Hellen argues that, rather than focusing primarily on misuse, job displacement, or defensive copyright disputes, scholarly communications actors should actively encourage the inclusion of scholarly literature in generative AI training data to improve reliability and ensure research is represented in emerging discovery platforms. The article develops two main pathways for doing this: making scholarly outputs more machine-actionable and “crawlable” (especially through better linkage, metadata, and structured HTML rather than PDF-only dissemination) and making permissions unambiguous by explicitly addressing AI training in licences and related signals. It foregrounds “garbage in, garbage out” to claim that while libraries and publishers cannot remove low-quality web content from training corpora, they can tilt the balance by lowering friction for high-quality, curated research to be ingested legally. Montague-Hellen also highlights unresolved tensions around attribution and consent under common Creative Commons licences, suggesting that clearer, more specific permission frameworks (or new licensing patterns) may be needed to distinguish human reading from machine training and to communicate “enthusiastic consent” where desired. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Mugaanyi, Joseph, Christoph Lehner, and Lia M. Bally. 2024. “Evaluation of Large Language Model Performance and Reliability for Citation Generation Across Scientific Disciplines.” ''Journal of Medical Internet Research'' 26: e52935. https://doi.org/10.2196/52935<nowiki/>.''' </div> Mugaanyi, Lehner, and Bally perform a study aimed at gauging the accuracy and reliability of citations generated by ChatGPT (GPT 3.5) in both the natural sciences and humanities. The authors emphasize that “Citations and references serve as the backbone of scholarly communication, providing the necessary context, evidence, and credit to prior works… ensuring the integrity of the research process.” With this in mind, the article frames the related study as aiding researchers in determining whether LLMs are viable as writing assistants in scholarly writing. In short, if an LLM cannot be relied upon to accurately cite and reference sources, it poses a risk to the integrity of research when incorporated into scholarly writing. The study found that ChatGPT hallucinated over a quarter of its references, with a slightly higher margin in the natural sciences. Furthermore, not all of those citations that did exist were accurate, and the LLM hallucinated DOIs for nearly 90% of the references it cited, real or otherwise, in the humanities. The issue, as the authors describe it, is that “in the current iteration of LLMs, since the training is geared toward generalization and the models are probabilistic, they tend to interpolate and fill in the missing information with synthetic text.” The authors conclude that, while domain-specific models may improve performance and reliability, in its current, generic form, researchers need to contemplate whether the strengths of ChatGPT’s reference generation justify its demonstrable limitations and “the importance of robust validation processes to ensure the accuracy and reliability of generated content.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Schroeder, Hope, Marianne Aubin Le Quéré, Casey Randazzo, David Mimno, and Sarita Schoenebeck. 2024. “Large Language Models in Qualitative Research: Uses, Tensions, and Intentions.” Preprint, ''arXiv'', October 9. https://arxiv.org/abs/2410.07362<nowiki/>.''' </div> Schroder et al. perform interviews with twenty qualitative researchers in human computer interaction (HCI) and qualitative research to gauge how researchers are actually using LLMs and concerns over the incorporation of LLMs at different stages of research; the authors also provide a survey of the rise of LLMs and flag potential concerns, using both interviews and survey as a launchpad to outline suggestions and recommendations for researchers in the field contemplating the use of LLMs in their research. The authors are concerned that “the speed of LLM development has outpaced guidance on their ethical use” and “the HCI community is contending with the need for developed policies that tackle how to use AI ethically in research.” The most prominent concerns that the article raises relate to “ethics, unequal adoption of new technologies, model bias, and performance” as well as “concerns regarding participant privacy,” but there is also a larger issue within the field of HCI that “LLMs may lend the impression that qualitative inquiry can be automated, and their integration into Quantitative Data Analysis (QDA) software may increasingly impose positivist approaches that conflict with interpretivist traditions.” Key findings from the interviews are that most researchers are open to responsible use of LLMs but have concerns about established guidelines and norms for its implementation. Additionally, many are already using LLMs “to generate recruitment materials,” “speed up qualitative coding,” and “for ideation and feedback,” even as they acknowledge tensions between the qualitative nature of their work and the prospect of automation. The most significant recommendations that Schroder et al. make include updating consent forms, using dedicated tools rather than defaulting to Chat-GPT, and implementing design decisions specifically for LLM-incorporating methodologies that reconsider “participant privacy,” LLM’s “intentional use,” “transparency and validation,” “researcher context,” “deep engagement with data” despite this automation, and ways “to consider participant perspectives and interests” given “the variable performance LLMs have across contexts, knowledge domains, cultures, and languages.” The authors hope that incorporating these considerations will “empower qualitative researchers to leverage LLMs confidently, and even creatively, for their work.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Tumadóttir, Anna. 2024. “Questions for Consideration on AI & the Commons.” ''Creative Commons'', July 24. https://creativecommons.org/2024/07/24/preferencesignals/.''' </div> Tumadóttir talks about CC, license, tools, and policy and discusses the way to foster a healthy commons environment in the digital era. She points out how the introduction of the CC license enhanced Creative Commons by giving the creators choice over usage of their works. However, it is now a question if the same healthy commons can be maintained today because of rapid technological development. Preference signals for AI is a notion to give an agent (creator, rights holder, entity of some kind) more flexibility on how they want their work to be used for AI model training. However, the choice is still binary which is offering all or nothing. After consultations, it is found that people want more control over their work and if not, they might not share their work at all. Therefore, it is important to identify the right type of preference signals for it to be useful to benefit the public interest. During this process, we need to keep in mind its effect and variation on cultural heritage, different education sectors, and regions. Moreover, to make the preference signals effective, we need to examine its structure as well as whether legal enforcement is necessary. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Yue, Yongjie, Maosong Zheng, Jiahui Liu, Zhimin Wang, and Chenhui Mao. 2025. “A Practical Guide and Assessment on Using ChatGPT to Conduct Grounded Theory Studies: Step-by-Step Reporting of the Data Analysis Process.” ''Journal of Medical Internet Research'' 27: e70122. https://doi.org/10.2196/70122<nowiki/>.''' </div> Yue et al. employ a study that entailed researchers using either manual coding or coding assisted by ChatGPT to perform data analysis on a 40,000 word dataset made up of interviews with 8 players of Listen and Play in Jianghu, a Chinese MMORPG designed for the blind. The study’s aim was to “provide detailed guidelines for using ChatGPT in grounded theory within the Chinese context,” “evaluate the effectiveness of ChatGPT coding” in this context, and “explore the broader implications and future directions of ChatGPT in qualitative research.” The article goes into great detail as to the process for generating open code with ChatGPT. The results of the study show that, although manual coding performed slightly better than ChatGPT-assisted coding, the “difference was not statistically significant” in its production of nodes and reference points. However, during axial coding, the categories and subcategories generated through these respective processes was significantly different, with only half of the categories semantically matching between manual and ChatGPT-assisted methods. The authors conclude that, while ChatGPT 4-Turbo “enhanced the diversity and efficiency of coding... it struggled with depth, context, subtle nuances, connections, and coding organization.” Nevertheless Yue et al. see great potential in the application of GenAI-assisted coding in grounded theory, especially as the technology develops. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Zhu, Wenhao, Hongyi Liu, Qingxiu Dong, Jingjing Xu, Shujian Huang, Lingpeng Kong, Jiajun Chen, and Lei Li. 2023. “Multilingual Machine Translation with Large Language Models: Empirical Results and Analysis.” Preprint, ''arXiv'', April 10. https://arxiv.org/abs/2304.04675<nowiki/>.''' </div> Zhu et al. perform an empirical study that tests the multilingual translation performance of eight popular LLMs on 102 languages. As the authors explain, this is a particularly difficult task as it requires “semantic alignment between languages.” While LLMs tend to perform surprisingly well at translation, “it is also unclear [sic] how LLM acquires translation ability and which factors affect LLM’s translation ability.” This study in multilingual machine translation (MMT) therefore seeks to answer two questions: how do LLMs perform MMT over massive languages and what factors affect their performance? The results of the study suggest that GPT-4 generally outperforms its competitors but still falls short of Google Translate in some tests. Two key takeaways from this study are that “exemplars in the tail of the prompt have larger influence on an LLM’s behaviour,” meaning that the order in which exemplars are given within a prompt matter, and that cross-lingual translation pairs are particularly helpful exemplars to LLMs. The authors ultimately conclude that an “LLM can acquire translation ability in a resource-efficient way, which indicates [a] promising future of LLM in multilingual machine translation” as the technology evolves. ''NB: As this research was conducted prior to Google’s implementation of GenAI/LLMs into Google Translate in 2024, it sometimes uses Google Translate as a baseline/comparison point for LLM-powered translation that can be confusing without that context.'' == Forms of Research Output == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bozkurt, Aras. 2024. “GenAI et al.: Cocreation, Authorship, Ownership, Academic Ethics and Integrity in a Time of Generative AI.” ''Open Praxis'' 16 (1): 1–10. https://doi.org/10.55982/openpraxis.16.1.654<nowiki/>.''' </div> Bozkurt’s essay seeks “to undertake a critical examination of the use of generative AI in academic contexts… examining its implications and exploring the nuances of its integration.” He begins with an assertion of technological determinism, stating “This technological shift… is not just a transient trend but a symbol of the inescapable change… marking the onset of an AI-dominated age and initiating profound and inevitable shifts in our academic and educational paradigms.” The author makes the argument that the advent of AI “requires us to critically reconsider concepts such as cocreation, ownership, and authorship in academic writing processes.” For instance, in exploring the concept of ownership, he briefly notes the ethical concerns of whether those who created the content upon which AI was trained might claim ownership of AI-generated content and explores the notions of AI or even its programmers acting as a co-author. Bozkurt himself takes the explicit stance that GenAI ought not be credited as a co-author. The paper also provides suggestions related to the ethics of AI use and transparency: “In some cases, merely reporting… is inadequate. A more nuanced approach involves providing multilayered statements acknowledging and benchmarking the use of [GenAI], specifying where, when, in which sections, and for what purposes it is employed.” Bozkurt reiterates that responsibility ultimately belongs to the human author, and provides the aiTARAS (Academic Integrity and Transparency in AI-assisted Research and Specification) Framework for this purpose. Bozkurt ends his essay by identifying further problems beyond the scope of the article, including “reimagining of assessment and evaluation,” our overfocus on ChatGPT and English language in this field of study, and the inaccuracy of AI detection software. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Colbert-Lewis, Danielle, Lawrence Maminta, Kelly McElroy, Graeme Slaght, and Mark Swartz. 2024. “The Citation Economy as a Site of Extraction for Surveillance Publishing.” ''Canadian Journal of Academic Librarianship'' 10 (December): 1–22. https://doi.org/10.33137/cjal-rcbu.v10.43293.''' </div> Colbert-Lewis et al. (2024) examine the extractive nature of the modern "citation economy," arguing that academic publishing has evolved into a powerful mechanism for surveillance and data commodification. The authors detail how a consolidated group of dominant publishers capture surplus value from the academic lifecycle by extracting free scholarly labour, research data, and personal information. Crucially, these corporations are transitioning from traditional information vendors into technology-driven data brokers. The extracted data is reinvested into proprietary analytics products that are then sold back to universities to evaluate and surveil faculty performance, relying on opaque metrics that threaten academic freedom. Furthermore, the authors highlight the severe ethical compromises inherent in this system, noting that academics inadvertently fuel data infrastructures that these same parent companies sell to external industries, including law enforcement and advertising. To combat the rise of "surveillance publishing," the article concludes with actionable recommendations for scholars and librarians to resist exploitative practices and build ethical infrastructures, alongside a supplementary mini-zine designed to raise awareness about the hidden costs of participating in the citation economy. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Frangou, Sophia, Umberto Volpe, and Andrea Fiorillo. 2025. “AI in scientific writing and publishing: A call for critical engagement.” ''European Psychiatry'' 68 (1): e98. https://doi.org/10.1192/j.eurpsy.2025.10061<nowiki/>.''' </div> Frangou, Volpe, and Fiorillo provide a succinct summary of the benefits of implementing AI in scientific writing and publishing, before turning to the challenges and risks posed toward the use of such technology. Finally, they end by posing ethical frameworks for the use of AI in both publishing and writing. In publishing, the authors identify tools that can aid in tasks ranging from copyediting to finding reviewers and claim that for both “high-volume publications” and “resource-constrained journals… AI can serve as a force multiplier, expanding what editorial teams can accomplish without compromising the centrality of human discretion and responsibility.” In writing, the article notes that “AI-powered applications offer a suite of tools that, when used judiciously, can enhance the quality, efficiency, and inclusivity of the scholarly communication process,” placing such tools along the trajectory of preexisting aids like EndNote and Zotero, which have also now incorporated AI. Frangou, Volpe, and Fiorillo argue that AI can help scholars identify relevant literature they might otherwise have trouble finding, reduce the linguistic bias encountered by scholars for whom English is not their first language, and aid scholars in navigating the publishing landscape so their work can find the best possible fit. Finally, the authors acknowledge the epistemic and ethical risks of AI: inconsistency and irreproducibility, transparency, informed consent, and data privacy are all core concerns. Key components in the article’s ethical frameworks for publishers and authors include transparency and disclosure, human accountability, and training and skill development. The authors hope that “these principles articulate a shared responsibility for shaping the role of AI in scientific publishing” and AI’s “adoption reinforces the foundational values that give scientific communication its trustworthiness and legitimacy.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Graßhoff, Gerd. 2024. “AI-Reporter: A Path to a New Genre of Scientific Communication.” Preprint, ''arXiv'', July 8. https://arxiv.org/abs/2507.05903. ''' </div> Graßhoff introduces a new tool, the AI-Reporter, that aims “to fundamentally expand scientific communication for the new era…”; according to Graßhoff, the AI-Reporter “creates a sustainable, referenceable, and expandable knowledge base that captures not just content but the living essence of scientific discourse.” In short, Graßhoff proposes a tool that will adapt a scientific presentation into a “public-ready chapter” in about three minutes with “only the author’s consent.” The majority of the article is dedicated to a tech-oriented breakdown of the methodology and workflow of the AI-Reporter, namely the semantic analysis and translation of a recorded slide presentation—consisting of the presentation as a PDF, video recording, and basic metadata—into a publication-ready chapter. Graßhoff’s tool is an attempt to solve what he identifies as a core problem of modern scholarly communication, namely that “knowledge is increasingly presented in dynamic, multimodal formats” that are ultimately ephemeral and content is often lost (14). He aims to refine this tool to enable real-time processing, multilingual support, interactive multimedia components, “optimization for academic disciplines,” and more to this project. He advocates the AI-Reporter as nothing less than “a vision for the future of scientific communication.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Jiang, Jialei. 2024. “When generative artificial intelligence meets multimodal composition: Rethinking the composition process through an AI-assisted design project.” ''Computers and Composition'' 74: 102883. DOI: https://doi.org/10.1016/j.compcom.2024.102883<nowiki/>.''' </div> Jiang conducts a study in which GenAI is integrated into students’ composition of multimodal texts, then interviewed on their experience. Jiang’s states her aim as follows: “Through examining writing students use of GenAI tools in multimodal composition, this study seeks to unravel how GenAi technologies influence students’ design choices, problem-solving approaches, and the overall composition process.” In particular, Jiang is interested in “potential opportunities and challenges of incorporating GenAI into students’ multimodal composition process.” Jiang frames the article within composition and writing studies and the theory behind multimodal composition. She builds upon recent pedagogical best practices put forward by Burriss and Leander (2024) that “call upon teachers and educators to engage in the development of an emergent pedagogy of critical AI that “teach[es] about/with AI in emergent, flexible, and speculative ways.” The results of the study emphasize that, while GenAI can streamline workflow and provide examples from which students can build using their own creativity, there were clear limitations to the technology. Of course, students’ realization of these limitations is a success of the course’s pedagogy. The article also provides three case studies of the student compositions as exemplars of the outcome. Jiang concludes with a recommendation “that researchers and educators engage in meaningful dialogues with students about their uses of GenAI during composition practices.” She quotes her own earlier work (Jiang et al. 2024), where she writes that to keep AI out of the classroom “is not only idealistic and impossible... it is actually completely disengaged from the realities of the changing technological landscape students are already facing.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Mehlenbacher, Brad, Ana Patricia Balbon, and Ashley Rose Mehlenbacher. 2024. “Synthetic Genres: Expert Genres, Non-Specialist Audiences, and Misinformation in the Artificial Intelligence Age.” ''Journal of Technical Writing and Communication'', January 31. https://doi.org/10.1177/00472816231226249.''' </div> Genre theorists Mehlenbacher et al. examine which AI-generated texts are “good enough” to pass as “bona fide” (already a “very good” standard). They argue AI-generated text produces misinformation, pushes apart definitions of “information” and “knowledge,” and necessitates rhetorical understanding. The authors therefore believe “synthetic genres” will emerge, departing in situation, form, and even “the very concept of genre users” based on recursive and “poisoned” outputs. In reviewing literature, the authors spotlight AI-generated disinformation’s suasive (instead of propagandistic or accurate) potential, and argue that AI-generated text can be suasive by appearing both “timely” and “appropriate.” However, this “fraudoscientific” text can never be truly “timely” or “appropriate,” as it is always constrained in past work, and only responds to prompts, not situations. Despite this, AI-generated text generated on specialist subjects can still be effectively suasive—and even when identified as AI—because its authority is difficult to challenge. Mehlenbacher et al. therefore conduct two studies of AI-generated outputs, focusing on how they may be deceptive or detected. They first prompted GPT-3 to emulate rhetorical research abstracts by generating a range of definitions alongside text to emulate research processes. Next, they conducted a genre analysis, generating text on controversial topics and prioritizing suasiveness over ability to pass a theoretical “Genre Turing Test.” Based on their results, Mehlenbacher et al. suggest AI-generated text should be cross examined with specialist texts to identify where they need additional development, presenting a valuable teaching opportunity which supports “a powerful way to introduce the epistemic functions of writing.” Non-specialists should also develop tools to identify the source and quality of content, including diverse genre perspectives. The authors conclude by arguing genre scholars should further consider AI-generated texts and emphasizing the importance of genre users. This is because “genre must be understood in a rhetorical context,” while “synthetic genres” can only act as “statistical simulacrum.” == Teaching and Pedagogy == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Adewumi, Tosin, Lama Alkhaled, Christopher Buck, Sergio Hernandez, Sofia Brilioth, Memoona Kekung, Yasmin Ragimov, and Emily Barney. 2023. “ProCoT: Stimulating Critical Thinking and Writing of Students through Engagement with Large Language Models (LLMs).” Preprint, ''arXiv'', December 15. https://doi.org/10.48550/arXiv.2312.09801<nowiki/>.''' </div> Adewumi et al.'s Probing Chain-of-Thought (ProCoT) methodology represents a pedagogical approach that transforms LLM interaction from potential academic dishonesty into an active learning process centred on critical evaluation and evidence-based reasoning. ProCoT requires students to generate initial outputs using LLMs, then systematically affirm or refute each claim using peer-reviewed references, effectively making the AI output a provisional hypothesis to be tested rather than a final answer to be submitted. This approach directly addresses the section's themes of process transparency (the method makes visible each stage of knowledge construction, from initial AI generation through source verification to synthesis) and ethical reflection (students must grapple with AI limitations including hallucination, bias, and lack of disciplinary nuance). The authors' finding that student outputs using ProCoT were significantly more concise than LLM-generated text (208 vs. 391 words on average) while demonstrating enhanced critical thinking suggests that the method trains students to distill and synthesize rather than accept verbose AI output uncritically. ProCoT leverages AI's epistemological weaknesses as pedagogical strengths—the fact that ChatGPT cannot reliably cite sources becomes an opportunity for students to develop information literacy by finding and evaluating primary literature. The method's anti-cheating design is secondary to its pedagogical value: by requiring iterative engagement with AI outputs and scholarly sources, ProCoT embeds the kind of metacognitive reflection (What did the AI get right? What did it miss? How do I know?) that is of significance to pedagogy in the AI era. The authors' evidence from 65 students across disciplines demonstrates feasibility across contexts, emphasizing cross-disciplinary rather than field-specific approaches to AI-entangled pedagogy. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Berry, David M. 2023. “AI, Ethics, and Digital Humanities.” In ''The Bloomsbury Handbook to the Digital Humanities'', edited by James O’Sullivan, 445–57. Bloomsbury Academic. https://recoveryhub.siue.edu/wp-content/uploads/2024/10/AI-Ethics-and-Digital-Humanities-.pdf<nowiki/>.''' </div> Berry emphasizes that AI’s use in the field of Digital Humanities raises major ethical questions despite it being an apparent evolution of the field’s traditional utilization of technology to augment human research capabilities. Berry outlines this issue by comparing the modern rise of AI to Digital Humanities’ early history, highlighting that digital humanists operated as coders until they began to “'black box' the computational aspects of doing digital humanities,” thus enabling non-programmers to participate. Since AI “automating processes might cover over ethical issues by transferring them into the hashtables of the machine-learning system,” Berry argues uncritical reliance on AI tools by inexpert modern humanists risks the “algorithmization” and imposition of hierarchical, quantitative frameworks upon Digital Humanities studies. He further identifies that the field of Digital Humanities is “on the cusp of a new set of packages that will further democratize access to machine learning,” a noble goal, but one which will bring these issues to the forefront. For this reason, Berry argues a reconsideration of ethics within Digital Humanities is desperately required on both organizational and individual levels. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Brown, Richard. 2023. ''The AI Generation: How Universities Can Prepare Students for the Changing World''. DEMOS and University of London report. https://demos.co.uk/wp-content/uploads/2023/11/The-AI-Generation-2.pdf<nowiki/>.''' </div> Brown argues AI will inevitably and dramatically impact all fields of education, and therefore encourages universities to seize the opportunity to lead these changes instead of merely reacting to them. His voice is echoed by esteemed organizations DEMOS and the University of London, indicating that this shift in the academic environment is already beginning. Brown argues this shift is required due to the developing capacity of AI for automating low-skilled professional tasks, an ability which risks decimating the available number of entry-level graduate positions. As a result, how employers value the workplace skills taught by current curriculums will change drastically, meaning universities must revolutionize their approach to education. Brown provides a blueprint for how universities can adapt to these changes by championing education’s prioritization of “GRASP” (General Relational, Analytic, Social, and Personal) skills as an alternative, advising universities to focus on teaching high-level and tailored skills to students instead of the generic. Universities can do this by practising “active learning” over traditional lecture formats as well as fostering extracurricular and work experience opportunities for their students. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Deng, Ruiqi, Maoli Jiang, Xinlu Yu, Yuyan Lu, and Shasha Liu. 2025. “Does ChatGPT Enhance Student Learning? A Systematic Review and Meta-Analysis of Experimental Studies.” ''Computers & Education'' 227. https://doi.org/10.1016/j.compedu.2024.105224<nowiki/>.''' </div> Deng and colleagues' meta-analysis of 69 experimental studies provides empirical grounding for claims about ChatGPT's pedagogical impact, revealing both opportunities and methodological challenges in assessing AI-enhanced learning. Their finding that ChatGPT interventions improve academic performance, affective-motivational states, and higher-order thinking propensities while reducing mental effort speaks directly to how assessment must shift when AI augments cognition—if mental effort decreases but learning outcomes improve, traditional measures of "effort" or "struggle" as proxies for learning may require recalibration. In their critique of current assessment methodologies the authors demonstrate that most studies evaluate only final outputs (essay quality, test scores) rather than learning processes, missing opportunities to examine how students interact with AI, what metacognitive strategies they develop, and whether AI use builds transferable skills or creates dependency. Deng et al.'s four methodological propositions—using complex project-based assessments that reveal process, evaluating long-term rather than novelty effects, prioritizing objective over self-reported measures of higher-order thinking, and employing adequate statistical power—provide a research agenda for pedagogy–AI scholarship that centres process evidence. Their documentation of disciplinary variation (language education dominates current research) while calling for cross-disciplinary synthesis focuses on avoiding discipline-specific approaches. The meta-analysis also reveals gaps in understanding collaboration (few studies examine peer learning dynamics when AI is present) and metacognition (limited research on whether students develop awareness of their own and AI's knowledge boundaries), highlighting the resulting pedagogical transformations. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Grigoli, L. Renato. 2023. “Ghosts in the Machine.” ''American Historical Association'' 61 (3). https://www.historians.org/wp-content/uploads/2024/07/Perspectives_61N3.pdf<nowiki/>.''' </div> Grigoli dismisses fears of AI generated essays threatening academic integrity by arguing that “if the development of artificial intelligence results in the death of the humanities, then it will be because it will have shown that the emperor has no clothes.” He uses ChatGPT to demonstrate that although AI responses appear competent at a passing glance, they lack valuable substance, simply arranging facts in a way that “tricks the reader into… doing all the analytical work.” Clear critical analysis should be the core component of a successful humanities essay, making well-designed assessments of this field far more reliable than those focused on information retention (like engineering). Therefore, AI is not a real threat, but a valuable pedagogical tool which can demonstrate examples of clean prose and prompt students to critically analyze what constitutes critical analysis. Essentially, if an AI generated answer can pass a test, the real problem was "self-inflicted" by either the examiner or the question itself. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Lee, Daniel, and Edward Palmer. 2025. “Prompt Engineering in Higher Education: A Systematic Review to Help Inform Curricula.” ''International Journal of Educational Technology in Higher Education'' 22: 16. https://doi.org/10.1186/s41239-025-00503-7<nowiki/>.''' </div> Lee and Palmer's systematic review establishes prompt engineering as an emergent pedagogical practice that integrates with longstanding traditions of scholarly inquiry, questioning, and rhetoric. The authors synthesize multiple frameworks (AIPROMT, CLEAR, CRISPE) that codify prompting as a learnable skill involving role specification, context provision, instruction clarity, and iterative refinement—revealing how interaction with LLMs mirrors Socratic dialogue, research question formulation, and the rhetorical tradition of audience awareness. This work positions "prompting as pedagogy" as a reconfiguration of existing scholarly literacies: students learning to prompt effectively must articulate their information needs precisely, anticipate how language shapes output, and iteratively refine queries based on initial results—all core practices in library research, database searching, and scholarly conversation. The authors document how educators are embedding prompt engineering across disciplines, from technical fields where students prompt AI to generate code or solve equations, to humanities contexts where prompting becomes a form of textual analysis (understanding what linguistic patterns trigger particular AI responses reveals implicit biases and training data influences). Their review also identifies ethical dimensions—well-designed prompts can mitigate AI hallucination and bias, while poorly constructed prompts amplify these issues—making prompt literacy a matter of scholarly responsibility. The authors' call for curricula that teach prompting as interdisciplinary competency aligns with how AI entangles with pedagogy across boundaries, reshaping what counts as fundamental scholarly practice in an AI-augmented knowledge environment. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Mai, Dang Thi Thuy, Cuong Van Da, and Nguyen Van Hanh. 2024. “The Use of ChatGPT in Teaching and Learning: A Systematic Review through SWOT Analysis Approach.” ''Frontiers in Education'' 9: 1328769. https://doi.org/10.3389/feduc.2024.1328769<nowiki/>.''' </div> Mai and colleagues' systematic SWOT analysis of 51 studies on ChatGPT in education, organized through Biggs' 3P model (Presage-Process-Product), offers comprehensive mapping of how generative AI enters and transforms pedagogical systems at multiple scales—from individual learner characteristics (Presage) through interactive teaching-learning processes (Process) to learning outcomes and assessment products (Product). This multilevel framework reveals that ChatGPT's pedagogical impact cannot be isolated to single moments of use but ripples across entire learning ecologies: at the Presage level, ChatGPT shifts what prior knowledge students need (familiarity with prompting interfaces) and what instructor competencies are required (ability to design AI-aware assignments); at the Process level, it transforms interaction patterns from teacher–student and student–student to include human–AI dialogue that may enhance personalized scaffolding but risks reducing peer collaboration; at the Product level, it necessitates fundamental assessment redesign because traditional evaluation instruments (timed essays, closed-book exams) lose validity when AI can generate competent responses. The authors' characterization of ChatGPT as simultaneously "friend" (enabling personalized learning, reducing educator workload, providing instant feedback) and "foe" (enabling plagiarism, potentially reducing critical thinking, creating over-reliance) mirrors the section's emphasis on entanglement—pedagogy cannot simply embrace or reject AI but must negotiate tensions between efficiency and effort, personalization and depersonalization, augmentation and replacement. Mai et al.'s documentation of how educators are adapting curricula to emphasize creativity and critical thinking (skills less easily automated) while using ChatGPT for routine information provision demonstrates pedagogical evolution toward distinctly human capacities. Their call for assessment reform using complex case studies, portfolios, and process documentation rather than single-sitting exams directly supports the notion of process evidence and metacognition as being central to AI-era pedagogy, positioning assessment not as gatekeeping but as making learning processes transparent and accountable. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Oates, Angela, and Donna Johnson. 2025. “ChatGPT in the Classroom: Evaluating Its Role in Fostering Critical Evaluation Skills.” ''International Journal of Artificial Intelligence in Education'' 35 (4): 1793–1824. https://doi.org/10.1007/s40593-024-00452-8<nowiki/>.''' </div> Oates and Johnson's empirical study of biomedical science master's students offers insight into how AI functions more effectively as object of critical study than as production tool, revealing pedagogical value in making AI outputs subjects for evaluation rather than endpoints of learning. Their finding that students' marks did not improve when submitting AI-generated essays but did improve when critically evaluating AI outputs demonstrates a fundamental pedagogical principle: learning occurs not in consuming AI-generated content but in interrogating it, comparing it against disciplinary standards, identifying its factual errors and rhetorical limitations, and articulating why human-authored scholarship differs. This shifts pedagogy from "use AI to complete tasks" toward "use AI to understand knowledge construction itself"—students learn about evidence evaluation, citation practices, and argumentation by analyzing where ChatGPT succeeds and fails at these scholarly fundamentals. The authors document that ChatGPT demonstrated structural coherence and grammatical accuracy but lacked the disciplinary depth and synthetic insight expected in graduate work, making visible to students the difference between surface-level fluency and genuine expertise. Their emphasis on user interaction as a variable affecting efficacy underscores that pedagogy must address not just whether AI is present but how students are taught to engage it—prompt design, output evaluation, and integration with human research become learnable scholarly practices. Oates and Johnson's conclusion that students preferred writing their own essays despite AI's availability suggests that when pedagogy centres process transparency and critical evaluation rather than output efficiency, students recognize and value the cognitive work that AI cannot replicate, focusing on pedagogy that treats AI as entangled phenomenon requiring simultaneous use and critique. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Pope, Andrew, and Rongqian Ma. 2024. “Exploring Historians’ Critical Use of Generative AI Technologies for History Education.” ''Proceedings of the Association for Information Science and Technology'' 61 (1): 1071–73. https://doi.org/10.1002/pra2.1188<nowiki/>.''' </div> Pope and Ma conducted semi-structured interviews of seven history professors to assess their attitudes toward employing GenAI tools in their teaching. Understanding this stance is important because Pope and Ma believe incoherent and mismatched approaches could inhibit scholarly communication and undermine academic integrity. The survey demonstrated historians had major concerns about GenAI’s development, especially regarding plagiarism. Respondents were particularly divided on whether copying an AI’s work was academic misconduct. However, historians had far fewer concerns about using GenAI to "augment" human abilities or tailor support to students—although senior academics maintained substantially greater reservations. The historians that were interviewed concurred that critiquing AI generated text could improve a student’s media literacy. Pope and Ma’s study suggests that historians consistently doubt the quality of AI generated responses even when willing to employ it. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Tan, Myles Joshua Toledo, and Nicholle Mae Amor Ttan Maravilla. 2024. “Shaping Integrity: Why Generative Artificial Intelligence Does Not Have to Undermine Education.” ''Frontiers in Artificial Intelligence'' 7: 1471224. https://doi.org/10.3389/frai.2024.1471224<nowiki/>.''' </div> Tan and Maravilla provide theoretical grounding for understanding how generative AI can be integrated into pedagogy without compromising academic integrity, arguing that responsible implementation depends on alignment with constructivist learning theory and self-determination theory. The authors position AI not as a threat to authentic learning but as a catalyst that necessitates pedagogical transformation—shifting from transmission models toward environments where students actively construct knowledge using AI as one tool among many. Their framework emphasizes process transparency through explicit discussion of AI's role in knowledge construction and ethical reflection through examining how GAI outputs are generated, what assumptions they embed, and where they may mislead or constrain inquiry. This work addresses pedagogy-as-entanglement by showing how GAI forces educators to make visible the epistemic practices that traditional assessment often left implicit: citation tracing, source evaluation, argument construction, and the iterative nature of scholarly writing. Tan and Maravilla argue that rather than banning AI to preserve integrity, educators should redesign assessment to require demonstration of process—portfolios showing prompt refinement, comparison of AI outputs with human-authored sources, and metacognitive reflection on when and why AI was consulted. Their synthesis of educational theory with practical implementation strategies makes this work useful for understanding how pedagogy must evolve to treat AI as both subject matter (what students must understand about how AI functions) and scaffolding (how AI can support learning when used transparently and reflectively). <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Yim, Iris Heung Yue, and Jiahong Su. 2025. “Artificial Intelligence (AI) Learning Tools in K-12 Education: A Scoping Review.” ''British Journal of Educational Technology'' 56 (1): 169–196. https://doi.org/10.1007/s40692-023-00304-9<nowiki/>.''' </div> Yim and Su's scoping review of AI literacy education in K-12 contexts provides grounding for understanding how pedagogy approaches AI as an object of study, not merely as a tool, revealing how students across age groups learn to understand, critique, and create with AI systems. The authors document how intelligent agents (Google Teachable Machine, Learning ML) and software platforms (Scratch, Python) enable students to engage with AI's underlying mechanisms—training models, observing how data shapes outputs, and experiencing firsthand how algorithmic decision-making operates. This approach treats AI as epistemological phenomenon: students don't just use pretrained models but build simple systems themselves, making visible how AI "learns" and where its learning breaks down (limited training data, biased datasets, inability to generalize beyond training conditions). Yim and Su's synthesis of pedagogical strategies—project-based learning where students create AI applications, human-computer collaboration examining how humans and machines complement each other, and game-based approaches making AI concepts accessible—demonstrates how educators scaffold understanding from concrete manipulation to abstract reasoning about intelligence and automation. The review's attention to cognitive, affective, and behavioural learning outcomes moves beyond narrow skill acquisition to examine how AI literacy shapes students' broader epistemic stance: understanding AI's capabilities and limitations, recognizing when algorithmic solutions are appropriate, and developing critical awareness of AI's social implications. Their emphasis on age-appropriate pedagogies and the importance of unplugged activities (learning AI concepts through physical manipulation before digital implementation) provides models for how pedagogy must adapt to learners' developmental stages when teaching about AI systems. This work's K-12 focus complements higher education studies in this section by showing how foundational AI literacy built through hands-on exploration creates readiness for more sophisticated critical engagement with AI as both tool and object of study in advanced scholarship. == Service and Peer Review == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Checco, Alessandro, Lorenzo Bracciale, Pierpaolo Loreti, Stephen Pinfield, and Giuseppe Bianchi. 2021. “AI-Assisted Peer Review.” ''Humanities and Social Sciences Communications'' 8: 25. https://doi.org/10.1057/s41599-020-00703-8<nowiki/>.''' </div> Checco et al.'s study represents crucial early (pre-GenAI) empirical work demonstrating that AI can predict peer review outcomes based on "superficial" manuscript features—readability metrics, formatting consistency, reference list structure, linguistic patterns—with surprising accuracy, training neural networks on 3,300 conference papers to correlate these proxy measures with eventual accept/reject decisions. This finding has profound implications for understanding AI's operational role: the research reveals that much of what passes as peer review judgment operates on detectable patterns (clear writing, proper citation formatting, adherence to disciplinary conventions) that AI can identify and assess, potentially automating routine quality checks and flagging submissions unlikely to meet standards. However, the authors explicitly position their work as supporting "semi-automated" rather than fully automated review, emphasizing AI's role in pre-screening and administrative tasks (matching manuscripts with reviewers based on topic modeling, identifying obvious deficiencies) rather than intellectual evaluation. The paper's most valuable contribution lies in its systematic exploration of ethical implications: algorithmic bias risks (AI might penalize unconventional but innovative work, discriminate against non-native English writers, favor institutional prestige markers), transparency requirements (making AI decision criteria auditable), and the necessity of human oversight to prevent automation from calcifying existing disciplinary hierarchies. By documenting both AI's predictive capabilities on operational dimensions and its inherent limitations on substantive judgment, Checco et al. provide empirical foundation for designing peer review systems where AI handles standardized identification tasks while human expertise remains authoritative for evaluative assessment, directly instantiating the core principle that operational assistance must not migrate into epistemic territory. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Hosseini, Mohammad, and Serge P. J. M. Horbach. 2023. “Fighting Reviewer Fatigue or Amplifying Bias? Considerations and Recommendations for Use of ChatGPT and Other Large Language Models in Scholarly Peer Review.” ''Research Integrity and Peer Review'' 8 (1): 15. https://doi.org/10.21203/rs.3.rs-2587766/v1<nowiki/>.''' </div> Published early in the ChatGPT era, Hosseini and Horbach's analysis provides a prescient examination of how LLM integration transforms both the pragmatics and ethics of peer review labor. The authors document LLMs' potential to combat reviewer fatigue by automating time-consuming tasks—transforming informal reviewer notes into polished reports, generating structured feedback on manuscript sections, identifying linguistic or formatting issues—thereby potentially expanding the pool of contributors who can participate effectively despite language barriers or time constraints. However, the article's core contribution lies in its still-useful systematic identification of risks that emerge when operational assistance crosses into epistemic territory: LLMs trained on existing literature may amplify disciplinary biases (favoring established paradigms over novel approaches), geographic biases (privileging research contexts well-represented in training data), or methodological orthodoxies (flagging unconventional designs as errors rather than innovations). The authors demonstrate through examples how ChatGPT can generate cynical or biased reviews that violate Mertonian norms of universalism, and how confidentiality breaches can occur when reviewers input manuscript excerpts into external AI platforms without institutional safeguards. Hosseini and Horbach's recommendations—mandatory disclosure of LLM use in reviews, human accountability for all AI-generated content, training in bias recognition, and institutional policies prohibiting upload of confidential materials—have influenced subsequent journal guidelines and provide foundational ethical framework for understanding why guardrails against leakage and disclosure norms become operational necessities rather than optional best practices in AI-entangled peer review systems. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Shcherbiak, Anna, Hooman Habibnia, Robert Böhm, and Susann Fiedler. “Evaluating Science: A Comparison of Human and AI Reviewers.” ''Judgment and Decision Making'' 19 (2024): e21. https://doi.org/10.1017/jdm.2024.24<nowiki/>.''' </div> In this study, a large-scale field experiment comparing GPT-4 with human reviewers on conference abstracts provides empirical evidence about AI's capabilities and limitations in evaluative judgment. It demonstrates that while AI can approximate human performance on certain classification tasks—identifying "very best" abstracts shows moderate alignment—detailed evaluative assessments reveal persistent gaps, with human-AI agreement comparable to human-human variability, suggesting AI does not systematically outperform baseline reviewer disagreement. Critically, the research shows humans substantially outperform AI at detecting AI-generated versus human-written content, with detection tools like GPTZero exhibiting higher accuracy than GPT-4 itself when evaluating authorship. This finding has direct implications for peer review integrity when AI-generated manuscripts enter the submission pipeline. The authors position AI as effective for prescreening—rapidly filtering submissions for basic quality thresholds, identifying obvious errors, flagging compliance issues—while demonstrating it lacks the contextual understanding necessary for nuanced scientific judgment about significance, impact, or methodological soundness. The paper's methodological rigor in isolating human-versus-AI performance dimensions provides context for understanding where operational assistance (screening) legitimately ends and where human evaluative authority (substantive assessment) must begin, directly addressing the guiding principle that human judgment remains central even in AI-augmented workflows. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Lim, Gim Hui, M. L. Tan, V. C. W. Hoe, and D. Koh. 2025. “Generative AI in Peer Review Process for Occupational Health.” ''Occupational Medicine'' 75 (5): 242–49. https://doi.org/10.1093/occmed/kqaf051.''' </div> Lim and colleagues' empirical study comparing Microsoft Copilot, ChatGPT, and Google Gemini against human reviewers on eight occupational health manuscripts provides granular quantitative evidence about AI's operational capabilities and limitations in peer review tasks. The research demonstrates that AI tools significantly outperform humans in providing feedback (mean score 3.44 vs. human baseline, p<0.001) across dimensions of relevance, completeness, accuracy, error identification, and constructiveness—documenting AI's strength in systematic checking tasks like identifying missing citations, flagging methodological inconsistencies, noting formatting errors, and pointing out unclear explanations. However, humans substantially outperform AI in generating actionable recommendations (mean score 3.36, p<0.01), with AI showing particular deficiencies in suggesting substantive revisions, connecting findings to broader literature, or identifying conceptual limitations. This performance asymmetry instantiates the operational/epistemic division: AI excels at identification tasks (what's wrong, what's missing) but struggles with evaluative tasks (how to improve, what matters). The study also quantifies efficiency gains (AI reviews complete in 11 minutes versus 45 for humans) while documenting critical limitations: AI outputs contain fabricated references, generate plausible-sounding but inaccurate technical assertions, and require human verification to prevent propagation of errors. Lim et al.'s work demonstrates that even when AI shows superior performance on specific metrics, its integration into peer review requires careful task decomposition—leveraging speed and comprehensiveness for checking functions while preserving human authority for substantive guidance—making it essential evidence for designing hybrid human-AI workflows where operational assistance enhances rather than replaces evaluative expertise. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Sun, Zhuanlan. 2025. “Large Language Models in Peer Review: Challenges and Opportunities.” ''Scientometrics 130(10): 5503–5546''. https://doi.org/10.1007/s11192-025-05440-w<nowiki/>.''' </div> Sun provides essential mapping of LLM applications across the peer review lifecycle, categorizing five distinct operational roles: checklist assistants for formatting and protocol adherence, reviewer selection aids that match manuscripts with appropriate expertise, feedback generators for preliminary assessments, bias detectors that flag methodological or statistical irregularities, and agents that coordinate multi-stage review workflows. The article systematically examines technical approaches including prompt engineering strategies, model evaluation frameworks, and architectural designs for integrating LLMs into editorial management systems. The author argues that while LLMs excel at standardized operational tasks—checking reference integrity, identifying duplicated content across submission databases, verifying compliance with reporting guidelines—they remain fundamentally limited in assessing research novelty, theoretical contributions, and domain-specific methodological rigor. The analysis emphasizes that current LLM limitations (inadequate scientific validation, domain knowledge gaps, inability to analyze complex datasets, ethical concerns around bias perpetuation) position them as supportive tools within human-led processes rather than autonomous decision-makers. This work is useful in understanding operational versus epistemic divisions of labor in AI-assisted scholarship service and documenting the technical infrastructure through which AI becomes entangled with peer review operations while maintaining clear boundaries around human evaluative judgment. == AI and Scholarship Infrastructures == === Organizational Infrastructures === <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Batool, Amna, Didar Zowghi, and Muneera Bano. 2025. “AI Governance: A Systematic Literature Review.” ''AI and Ethics'' 5: 3265–3279. https://doi.org/10.1007/s43681-024-00653-w''' </div> Batool and colleagues' (2025) systematic literature review offers a comprehensive mapping of AI governance across multiple levels—team, organization, industry, national, and international. The authors utilize a structured analytical framework that examines who governs (stakeholders and roles), what is governed (data, algorithms, systems), when governance occurs (stages in the AI lifecycle), and how it is implemented (frameworks, tools, policies). The article reveals that current governance practices remain fragmented and inconsistent, with significant gaps at the national and international levels. Applied to the context of higher education, this multi-level perspective is essential for understanding how research institutions must position themselves within broader governance ecosystems. Because organizational governance currently operates without clear external scaffolding, research institutions are often forced to improvise institutional arrangements rather than implement established templates. While the paper is broad in scope, its categorization of governance artifacts illuminates the range of mechanisms available to scholarly organizations: from technical tools like algorithmic auditing to organizational structures like ethics committees. Ultimately, the authors' findings highlight the challenges facing research institutions as they attempt to coordinate AI oversight across distributed, autonomous units—such as libraries implementing discovery tools or IT departments deploying infrastructure—demonstrating why cross-functional coordination is both necessary and difficult when existing governance structures were not designed to span these boundaries. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Hadley, Emma, Alan Blatecky, and Megan Comfort. 2025. “Investigating Algorithm Review Boards for Organizational Responsible Artificial Intelligence Governance.” ''AI and Ethics'' 5: 2485–2495. https://doi.org/10.1007/s43681-024-00574-8''' </div> Hadley and colleagues provide empirical documentation of algorithm review boards (ARBs) as organizational governance mechanisms, interviewing technical contributors across sectors to examine ARB membership, scope, success factors, and limitations. Their findings reveal ARBs as cross-functional bodies integrating diverse expertise (technical specialists, ethicists, domain experts, legal advisors, non-specialist stakeholders) to review AI systems for potential risks and harms, operating alongside other responsible AI approaches like policies, audits, and dedicated governance roles. The study's key insight that institutional review boards alone prove insufficient for algorithm governance and that ARBs function most effectively when integrated with existing organizational processes rather than operating as isolated oversight bodies speaks directly to research institutions' governance challenges. The article's documentation of financial tensions between profit motives and responsible AI costs, while focused on commercial contexts, translates to research institutions facing pressure to adopt AI for efficiency gains while managing ethical risks with constrained resources. Hadley et al.'s call for standardized ARB effectiveness metrics points to the broader challenge of demonstrating governance value in organizations where responsible AI practices compete with other institutional priorities for attention and investment. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Janssen, Marijn. 2025. “Responsible Governance of Generative AI: Conceptualizing GenAI as Complex Adaptive Systems.” ''Policy and Society'' 44 (1): 38–51. https://doi.org/10.1093/polsoc/puae040''' </div> Janssen's conceptual article reframes generative AI governance as managing complex adaptive systems characterized by co-evolution, emergent properties, and non-linear interactions between technical and social elements, directly challenging technology-deterministic approaches that treat AI as static tool requiring one-time organizational accommodation. This systems perspective is essential for understanding why research institutions struggle with AI governance: the article demonstrates how AI systems and organizational contexts mutually shape each other through feedback loops, making governance an ongoing adaptive process rather than implementation of fixed policies. Janssen argues that effective organizational stewardship requires holistic, outward-focused governance attending to how AI systems interact with broader organizational processes, public values, and societal concerns—moving beyond narrow risk mitigation to address joint accountability across system components including people, policies, data, and algorithms. For research institutions embedding AI in knowledge infrastructures, this framing illuminates why isolated departmental responses prove insufficient: cataloging systems using AI for metadata generation, research platforms deploying AI for literature synthesis, and administrative systems using AI for resource allocation together constitute an organizational AI ecosystem whose emergent behaviors cannot be governed through component-level oversight alone. The article's emphasis on selecting and combining appropriate policy instruments into adaptive governance packages provides conceptual foundation for cross-functional coordination mechanisms, suggesting that effective institutional stewardship requires deliberate orchestration of technical standards, organizational procedures, and stakeholder engagement processes that together shape AI's organizational trajectory. Janssen's work underscores that AI governance is not primarily technical implementation challenge but organizational transformation requiring institutions to develop new capabilities for managing sociotechnical co-evolution. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Papagiannidis, Emmanouil, Patrick Mikalef, and Kieran Conboy. 2025. “Responsible Artificial Intelligence Governance: A Review and Research Framework.” ''The Journal of Strategic Information Systems'' 34 (2): 101885. https://doi.org/10.1016/j.jsis.2024.101885''' </div> Papagiannidis and colleagues provide theoretical grounding for understanding how organizations operationalize responsible AI principles through governance structures. Their scoping review synthesizes disparate literature to construct a conceptual framework differentiating between structural practices (formal roles, committees, reporting lines), relational practices (stakeholder engagement, accountability mechanisms), and procedural practices (auditing protocols, monitoring systems) across the AI lifecycle. This tripartite framework is valuable for research institutions navigating the challenge of translating broad ethical commitments into actionable organizational arrangements. The article explicitly addresses how governance antecedents like leadership commitment and regulatory pressure shape implementation, and how governance practices in turn affect outcomes like trust, compliance, and innovation capacity. The authors' critical reflection on responsible AI governance reveals tensions inherent to institutional stewardship: between centralized oversight and distributed expertise, between standardized protocols and context-sensitive judgment, between rapid AI deployment and deliberative ethical review. For research organizations managing AI's entanglement with knowledge infrastructures, this work provides vocabulary and analytical categories for diagnosing governance gaps and designing institutional responses that embed responsibility throughout organizational systems rather than treating ethics as external constraint. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Weber, Michael, Martin Engert, Norman Schaffer, Jörg Weking, and Helmut Krcmar. 2023. “Organizational Capabilities for AI Implementation—Coping with Inscrutability and Data Dependency in AI.” ''Information Systems Frontiers'' 25: 1549–1569. https://doi.org/10.1007/s10796-022-10297-y''' </div> Weber and colleagues identify four organizational capabilities essential for AI implementation, addressing AI's distinctive characteristics that distinguish it from previous information technologies: inscrutability (difficulty predicting probabilistic outputs and explaining decision processes) and data dependency (reliance on high-quality, continuously updated data for system performance). Their capability framework—encompassing AI Project Planning, Co-Development, Data Management, and AI Model Lifecycle Management—provides actionable guidance for research institutions developing internal capacity to steward AI systems. The article's grounding in expert interviews from diverse organizational contexts reveals that AI implementation failures often stem not from technical deficits but from organizational incapacity to manage sociotechnical complexity: inscrutability requires enhanced planning and stakeholder communication practices to align expectations around uncertain outcomes, while data dependency demands robust governance of data quality, provenance, and evolution throughout systems' operational lives. For research organizations, these capabilities map onto critical institutional functions: libraries developing metadata systems must manage data quality for AI cataloging tools; research offices supporting computational scholarship must plan projects acknowledging unpredictable AI behavior; IT departments maintaining infrastructure must implement lifecycle management ensuring model performance doesn't degrade as institutional data changes. The article's emphasis on Co-Development capability—bringing together technical specialists, domain experts, and end-users to jointly shape AI systems—speaks directly to cross-functional coordination challenges in research institutions where AI touches multiple organizational domains. Weber et al.'s framework reveals that organizational stewardship requires not just governance structures (committees, policies, review processes) but operational capabilities (planning methods, collaboration practices, technical procedures) embedded in day-to-day institutional work. This capability perspective shifts attention from abstract principles to concrete organizational competencies that determine whether responsible AI rhetoric translates into institutional practice. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Wu, Chuhao, He Zhang, and John M. Carroll. 2024. “AI Governance in Higher Education: Case Studies of Guidance at Big Ten Universities.” Preprint, ''arXiv'', September 3. https://doi.org/10.48550/arXiv.2409.02017''' </div> Wu and colleagues provide rare empirical documentation of how major research universities translate AI governance principles into institutional practice, examining guidance documents from fourteen Big Ten universities to identify organizational patterns and role-specific strategies. Their analysis reveals three key organizational dimensions: multi-unit governance involving information technology departments, teaching and learning centers, libraries, and research offices operating with distributed authority rather than centralized control; role-specific guidance differentiating expectations for faculty, students, staff, and researchers rather than applying uniform policies; and educational-advisory approaches emphasizing learning and adaptation over compliance enforcement. This case-study evidence illuminates the pragmatic challenges research institutions face when operationalizing AI oversight: how to coordinate across functional silos with different mandates, expertise, and risk tolerances; how to balance flexibility (needed because AI applications vary dramatically across contexts) with consistency (needed to ensure institutional values are upheld); how to position governance as enabling innovation rather than constraining it. The article's documentation of specific institutional mechanisms, such as data classification systems limiting what information can be shared with AI tools, or Socratic guidance approaches that pose questions rather than dictate answers, provides concrete examples of organizational stewardship in action. For understanding AI's organizational entanglement with knowledge infrastructures, this work demonstrates how governance emerges through negotiation among multiple institutional actors, each bringing domain expertise and jurisdictional claims, requiring coordination mechanisms that existing organizational charts may not accommodate. === Publishing, Communication, Engagement Infrastructures === <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bergstrom, Tracy, and Dylan Ruediger. 2024. “A Third Transformation? Generative AI and Scholarly Publishing.” ''Ithaka S+R''. October 30, 2024. https://doi.org/10.18665/sr.321519''' </div> Drawing on interviews with leaders from publishers, technology disruptors, academic libraries, and scholarship, Bergstrom and Ruediger map the strategic landscape of AI adoption across the publishing industry. The report identifies a bifurcated future: an incrementalist scenario where AI produces efficiency gains without fundamentally altering industry dynamics, versus a transformative scenario creating disruption comparable to or exceeding previous digital transformations. For search and discovery, most interviewees anticipate heavy AI impact, with tools already expanding capabilities through summarization and chatbot interfaces—potentially disrupting the linear progression from discovery to understanding by introducing AI-enabled synthesis. For peer review, interviewees expressed optimism that AI could address chronic strain through "pre-review" feedback, assistance with copy editing and misconduct detection, and more efficient reviewer identification, while raising concerns about accuracy, confidentiality, and maintaining human judgment in evaluation. The authors document a competitive threat from large technology companies: scenarios where commercial LLMs become default interfaces for accessing scholarly content pose significant challenges to publisher positioning. Content licensing to foundation model developers offers clear monetization paths, but broader revenue implications remain uncertain. The analysis identifies a critical research integrity challenge: ensuring transparent standards for AI usage while upholding provenance, attribution, reproducibility, and transparency in an environment of increasing automation. Smaller publishing organizations may struggle to match larger entities' adaptive capacity, potentially accelerating industry consolidation. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Broussard, Meredith. 2023. “The Challenges of AI Preservation.” ''The American Historical Review'' 128 (3): 1378–81. https://doi.org/10.1093/ahr/rhad366.''' </div> Broussard illustrates how the current impermanence of digital storage is producing a nightmare for future historians, as content is hidden away by licensing agreements or simply disappears when its host platform ceases to exist. Earlier ideals of the internet preserving a “complete first draft of history” are far from the reality, and problems only intensify when considering the development of AI, which Broussard compares to the printing press. For example, one could access a record of a physical newspaper published on a given day, but Google Search’s software is constantly changing with no canonical daily version, which means no historian could ever hope to examine a comparable snapshot of an AI. Operations like the Internet Archive and the development of emulation can help diminish losses, but it must be recognized that the digital world is decaying. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Buitrago-Ciro, Jairo, Marta Samokishyn, Rachel Moylan, Jonathan Hernández Pérez, Oluwabunmi Bakare-Fatungase, and Carmel Firdawsi. 2025. “Bridging the AI Gap: Comparative Analysis of AI Integration, Education, and Outreach in Academic Libraries.” ''IFLA Journal'' 51 (3): 682–702. https://doi.org/10.1177/03400352251325274. ''' </div> Buitrago-Ciro et al. examine the websites of 40 libraries in North America, Western Europe, Latin America, and Africa to explore how they have integrated AI technologies into their services, policies, and outreach efforts. Overall, the authors found a geographic divide in the integration of AI into library services, because almost all North American and European libraries had AI educational outreach activities and resources, while only five (out of ten) Latin American libraries and one (out of ten) African libraries did outreach activities. However, AI integration into library services and development of library AI policies and guidelines was more uncommon across all regions, as less than half of North American and European libraries engaged in these activities, while only one library in Latin America and one in Africa integrated AI into their services and none had specific library AI policies. These regional differences in AI integration stem from each region’s socioeconomic contexts, social inequalities, and technological gaps that present additional challenges for AI adoption in African and Latin American libraries. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Gulson, Kalervo N., and P. Taylor Webb. 2023. “Steering the Mind Share: Technology Companies, Policy and Artificial Intelligence Research in Universities.” ''Discourse: Studies in the Cultural Politics of Education'' 44 (2): 195–207. https://doi.org/10.1080/01596306.2021.1981828. ''' </div> Gulson and Webb (2023) examine how major technology companies are actively reshaping the landscape of artificial intelligence research within universities. Drawing on interviews with computer scientists as part of a broader international project, the authors investigate three key areas: the influence of tech companies on AI research practices, the policy frameworks that foster academia-industry collaborations, and the role of "open science" in facilitating the transfer of academic ideas to the corporate sector. The study highlights that the boundaries between academic and corporate research have become highly porous. Companies like Google do not merely act as external funders; they are deeply embedded within university ecosystems, actively steering research directions. Furthermore, the authors illustrate how national policies, such as Canada’s Pan-Canadian Artificial Intelligence Strategy, legitimize and accelerate this corporate influence by heavily incentivizing industry partnerships. While these collaborations provide universities with crucial resources and drive innovation, Gulson and Webb warn that they also raise significant concerns regarding conflicts of interest and the corporatization of open science. Ultimately, the authors argue that corporate funding creates powerful feedback loops among tech companies, policymakers, and academics, effectively allowing industry to capture the "mind share" of university research. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Kousha, Kayvan, and Mike Thelwall. 2024. “Artificial Intelligence to Support Publishing and Peer Review: A Summary and Review.” ''Learned Publishing'' 37 (1): 4–12. https://doi.org/10.1002/leap.1570''' </div> Kousha and Thelwall provide a systematic mapping of AI tool deployment across the scholarly publishing pipeline, distinguishing demonstrated capabilities from promotional claims. For journal recommendation, the review documents AI-powered systems, including Springer Nature Journal Suggester, Wiley Journal Finder, IEEE Publication Recommender, and JANE (Journal/Author Name Estimator), that analyze text similarity with previously published articles and reports high accuracy rates for appropriate journal matching. The analysis of initial quality control covers a diverse toolkit for plagiarism detection, robot author detection, methods checking, automated statistical verification, transparency and reproducibility checking and manuscript structure validation. Commercial systems draw on databases to suggest appropriate reviewers; the Natural Science Foundation of China's AI-assisted reviewer recommender for grant applications reports approximately 80% accuracy. However, the review identifies a critical boundary: while AI proves effective for finding reviewers and conducting initial quality checks, its value in performing the actual substantive review process "has not been clearly demonstrated." The synthesis reveals that substantial efficiency improvements are achievable in labor-intensive administrative tasks, while human judgment remains integral to core intellectual evaluations—a distinction essential for understanding where AI integration in publishing will proceed incrementally versus face fundamental obstacles. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Ma, Lai. 2024. “Generative AI for Academic Publishing? Some Thoughts About Epistemic Diversity and the Pursuit of Truth.” ''KULA: Knowledge Creation, Dissemination, and Preservation Studies'' 7 (1): 1–5. https://doi.org/10.18357/kula.287.''' </div> Ma (2024) critiques the integration of generative AI in academic publishing, arguing that the drive for automation threatens the central values of epistemic diversity and bibliodiversity. By invoking the "Sokal Hoax," the author illustrates the danger of AI-generated "bullshit"—content that mimics the formal structures of scholarship while remaining devoid of actual meaning. Ma specifically uses Scopus AI as a case study to demonstrate how the platformization of scholarly data creates a feedback loop that reinforces the "Matthew Effect," where established, English-language, and well-resourced publications are disproportionately amplified. This process, Ma warns, leads to "epistemic injustice" by marginalizing non-Western research and niche topics that are underrepresented in training datasets. The paper serves as a vital warning: without robust data surveillance and human-centric safeguards, the AI-accelerated publishing model may exacerbate peer-review crises and citation monopolies, ultimately undermining the public trust and diverse knowledge creation that open scholarship aims to protect. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Mitchell, Peta, Michelle Riedlinger, Jake Goldenfein, Aaron Snoswell, Jean Burgess, and Kevin Witzenberger. 2025. “Research Genai: Situating Generative AI in the Scholarly Economy.” ''AoIR Selected Papers of Internet Research''. https://doi.org/10.5210/spir.v2024i0.14006.''' </div> Mitchell et al. focus upon the oft-overlooked subfield of Generative AI tools known as “RGAI”, research-focused models which they argue represent “complex sociotechnical systems.” Hepp et al.’s definition of AI as a “sensitizing concept” and Watermeyer’s consideration of AI as a “labor accelerator” are used to situate this argument within the “scholarly economy” before the authors expand upon these theories, arguing RGAI should be approached as a form of “platform capitalism” akin to academia.edu. To evidence this stance, the authors examine the highly distinct RGAI models “Consensus” and “Writefull” as case studies. “Consensus” is designed to produce an academic “ConsensusMeter” by combining a proprietary LLM with OpenAI technology, while “Writefull” “aims to simplify… the often challenging task of scholarly writing” by employing custom AI models. Mitchell et al. highlight that although both tools are presented as independent and bespoke, they have major corporate backing. This deeply conflicts with the research principles of open scholarship, so Mitchell et al. aim to develop an index of RGAI which are appropriate for use in research. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Pividori, Milton, and Casey S. Greene. 2024. “A Publishing Infrastructure for Artificial Intelligence (AI)-Assisted Academic Authoring.” ''Journal of the American Medical Informatics Association'' 31 (9): 2103–13. https://doi.org/10.1093/jamia/ocae139''' </div> The Manubot AI Editor implements a concrete technical solution to the provenance problem in AI-assisted scholarship through three integrated components: a Python library, a GitHub Actions workflow, and a prompt generator. This architecture addresses provenance directly: all changes are tracked through version control, creating a clear audit trail distinguishing human-authored from machine-generated text and documenting exactly how AI suggestions were accepted, modified, or rejected. Evaluation proceeded through five case studies using both human and automated assessment. Human evaluators assessed whether revisions preserved original meaning and important details, avoided introducing incorrect information, and maintained correct formatting. Automated "LLM-as-a-Judge" iterative assessment evaluated paragraph pairs across criteria including sentence structure clarity, ease of understanding, and grammatical correctness. The evaluations found that models could grasp complex academic concepts and enhance text quality, with particular effectiveness in text-based sections like introductions and discussions. The human-in-the-loop design, where AI suggestions function as proposed edits rather than direct insertions, mitigates risks of incorrect information while preserving authorial agency over final content. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Razack, Habeeb Ibrahim Abdul, Sam T. Mathew, Fathinul Fikri Ahmad Saad, and Saleh A. Alqahtani. 2021. “Artificial intelligence-assisted tools for redefining the communication landscape of the scholarly world.” ''Science Editing''. https://doi.org/10.6087/kcse.244 ''' </div> Razack et al. argue AI will transform publishing into a technology-driven industry, streamlining dissemination of scholarship “for the betterment of humankind.” Exploring current trends via case studies, they emphasize AI’s impact upon human performance over its independent “creative” role. They argue AI could benefit the “prospective” researcher by predicting an article’s “citation impact”, identifying evolving research trends, and locating relevant research journals to publish in, cutting past low-charging and “predatory OA journals” which “malign integrity” by publishing “compromised content.” Meanwhile, “retrospective” editors could employ AI to detect plagiarism, streamline peer review, and format publications. For Razack et al., the rise of AI can therefore be compared to the rise of the typewriter, swift adoption likely promoting ‘human-machine collaboration’ over replacement. === Accountability-related Infrastructures === <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Ngulube, Patrick, and Neema Florence Vincent Mosha. 2024. “Integrating Artificial Intelligence-Based Technologies ‘Safely’ in Academic Libraries: An Overview through a Scoping Review.” ''Technical Services Quarterly'' 42(1): 46–67. https://doi.org/10.1080/07317131.2024.2432093''' </div> Ngulube and Mosha (2025) conduct a scoping review examining the state of research on ethical issues and perceived risks in AI integration within academic libraries. Analyzing 28 studies published before 2024, the authors reveal that research on safe AI adoption in libraries remains nascent, with significant gaps in theoretical grounding and methodological diversity. The review identifies critical ethical concerns including algorithmic bias, privacy violations, reduced transparency and accountability, and job displacement—yet finds that existing literature disproportionately emphasizes employment risks while neglecting environmental and planetary impacts. The authors note that ethical considerations have not taken center stage in library and information science research, as evidenced by the scarcity of relevant keywords and abstracts in the literature. A major finding is that most studies employ quantitative methodologies at the expense of qualitative and mixed-methods approaches, and only 18% employ explicit theoretical frameworks. The review underscores that academic libraries must navigate the dual challenge of leveraging AI's operational efficiencies while ensuring ethical standards of inclusivity, accessibility, and fair information use—a task complicated by the absence of established best practices and the need for human-centered approaches to AI governance. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''“Realising Potential, Supporting Users: IFLA Statement on Copyright and Artificial Intelligence.” n.d. IFLA. Accessed May 1, 2025. https://www.ifla.org/news/realising-potential-supporting-users-ifla-statement-on-copyright-and-artificial-intelligence/. ''' </div> This statement aims to help IFLA member libraries in navigating copyright issues and developing programs relevant to AI, positioning libraries as innovators “uniquely situated to lead” in supporting, training, and utilizing AI. However, restrictions stem from rightsholders, economic and moral copyright laws, and health, safety, and privacy laws. Libraries should therefore be guided by the most appropriate policy sources to mitigate restrictions by ensuring AI tools do not compromise areas of concern. Libraries are further recommended to advise decision-makers to permit mining legally accessed content, address bias by promoting “the widest possible access”, build capacity, awareness, and training for evolving technologies, and monitor AI standards. Governments are recommended to follow existing human rights regulations, avoid using copyright law as a “blunt force tool”, develop ethical AI practices, and fund repositories of AI training data - alongside AI companies themselves. Both rightsholders and vendors are advised to avoid language in contracts which restricts the use of AI or prevents exceptions. Overall, this document aims to promote AI by making as much content available as possible. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Werder, Karl, Balasubramaniam Ramesh, and Rongen (Sophia) Zhang. 2022. “Establishing Data Provenance for Responsible Artificial Intelligence Systems.” ''ACM Transactions on Management Information Systems'' 13 (4): 1–25. https://doi.org/10.1145/3503488''' </div> Werder et al. provide a framework for understanding audit trails in the context of AI and research data management, arguing that robust data provenance is not merely a technical feature but a prerequisite for achieving accountability in AI systems. They detail the requirements for a comprehensive provenance system, capable of tracking data from its origin through various transformations and into model training and deployment. This is directly relevant to research infrastructures, as it outlines how repositories and data management platforms can and must evolve to support AI-driven research. The authors’ multi-layered architectural proposal offers a concrete vision for how a research institution could implement a system to audit data pipelines, identify sources of bias, and ensure regulatory compliance. By connecting provenance to the broader goal of “Responsible AI,” the paper provides the conceptual tools for evaluating whether a research infrastructure’s data governance is sufficient to handle the accountability challenges posed by AI. == Audience == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''de Angelis, Luigi, Francesco Baglivo, Guglielmo Arzilli, Gaetano Pierpaolo Privitera, Paolo Ferragina, Alberto Eugenio Tozzi, and Caterina Rizzo. “ChatGPT and the Rise of Large Language Models: The New AI-Driven Infodemic Threat in Public Health.” ''Frontiers in Public Health'' 11 (2023): 1166120. https://doi.org/10.3389/fpubh.2023.1166120''' </div> De Angelis and colleagues examine the emergence of Large Language Models, particularly ChatGPT, as a novel public health threat through the lens of "AI-driven infodemic." The authors trace the rapid evolution of LLMs from earlier transformer-based models through GPT-3 to ChatGPT, highlighting how each iteration has increased the capacity to generate fluent, authoritative-sounding text at scale. Critically, they identify a fundamental misalignment problem: despite efforts to fine-tune these models through reinforcement learning from human feedback, LLMs remain prone to generating plausible-sounding but factually incorrect or fabricated information—a vulnerability particularly dangerous in medical and health contexts. The paper's central argument is that the unprecedented speed and volume at which LLMs can produce convincing content creates conditions for misinformation spread on a scale previously impossible, especially among non-expert publics who lack the epistemic resources to detect AI-generated falsehoods. The authors emphasize that the inability to reliably detect AI-produced text compounds this threat, undermining public trust in scientific institutions and potentially influencing health-related behaviors and policy decisions. The work demonstrates how LLM-mediated scientific communication poses distinct risks to knowledge integrity and public understanding, requiring urgent development of detection mechanisms, governance frameworks, and media literacy initiatives to protect audiences from AI-driven epistemic harm. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bryant, Rebecca. 2024. “Implementing an AI Reference Chatbot at the University of Calgary Library.” ''Hanging Together'', December 12. https://hangingtogether.org/implementing-an-ai-reference-chatbot-at-the-university-of-calgary-library/''' </div> Bryant (2024) details the development and implementation of "T-Rex," an AI-powered reference chatbot at the University of Calgary Library, based on a webinar hosted by the OCLC Research Library Partnership. While the library had offered live chat services since the early 2010s, the COVID-19 pandemic caused a massive surge in demand, peaking at over 3,000 inquiries in a single month. To alleviate this strain, the library analyzed past chat transcripts and determined that 12–14% of inquiries were simple, directional questions suitable for automation. To prevent scope creep during the initial training phase, the development team focused on a core set of fifty common questions. Through continuous refinement, the chatbot has since expanded to encompass over 1,000 custom responses, though its effectiveness remains limited by the availability of existing library webpages or FAQs to draw from. Bryant concludes by summarizing the Calgary team's key insights for institutions developing similar tools: developers must anticipate out-of-scope or non-library questions, recognize that users prefer direct answers over links to webpages, program creative responses for off-topic queries, and prepare for user resistance or non-adoption. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Hara, Noriko, Eugene Kim, Shohana Akter, and Kunihiro Miyazaki. 2025. “Exploring the Dynamics of Interaction About Generative Artificial Intelligence Between Experts and the Public on Social Media.” ''Journal of Science Communication'' 24 (1): A02. https://doi.org/10.22323/2.24010202''' </div> Hara and colleagues conduct an empirical investigation into how experts and the public co-produce knowledge about generative AI on social media, specifically analyzing X (formerly Twitter) discussions. Rather than treating the public as passive consumers of expert knowledge, the authors adopt a Public Engagement with Science (PES) framework that recognizes social media platforms as dynamic arenas where non-experts actively contribute to shaping collective understanding of emerging technologies. Through computational and manual analysis, they identify distinct discussion topics, map the roles that both experts and laypeople play in knowledge production, and examine how engagement metrics correlate with these roles. A critical finding is that the public functions beyond questioners seeking expert guidance, but rather as active knowledge co-producers who share practical insights, challenge claims, and contribute their own perspectives and experiences with GenAI tools. This research demonstrates how AI itself—as a subject of discourse—becomes a site of negotiated meaning-making between differently positioned actors. The work moves beyond traditional one-way dissemination models to reveal the interactive, participatory nature of contemporary science communication, with implications for understanding how diverse audiences collectively construct understanding of transformative technologies and how this co-productive process shapes both public perception and the future development of AI systems. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Jaillant, Lise, Olivia Mitchell, Eric Ewoh-Opu, and Maribel Hidalgo Urbaneja. 2025. “How Can We Improve the Diversity of Archival Collections with AI? Opportunities, Risks, and Solutions.” ''AI & Society'' 40: 4457–4459. https://doi.org/10.1007/s00146-025-02222-z. ''' </div> Jaillant et al. draw from interviews with 20 academics and archival professionals to explore how AI technologies can help address the lack of diversity in archival collections. The authors highlight that AI tools can assist in automatically detecting racist or inappropriate language in metadata, search large amounts of historical records, and uncover new insights within archival records. However, the authors argue that the deployment of AI should involve close collaboration between librarians, archivists, and developers. The current limited collaboration between developers and libraries limits the ethical and inclusive application of AI in archival collections, especially those with sensitive historical materials. The interviewees also warned against the loss of historical context when using AI, the perpetuation of archival biases, and the loss of control when AI tools are designed and governed by tech companies. To conclude, the authors recommend investing in interdisciplinary AI training programs for archivists, educating AI developers about the unique needs of archives so they can create more relevant solutions, and creating professional guidelines about the best practices for AI use to address the lack of diversity in archival collections. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Peters, Uwe, and Benjamin Chin-Yee. 2025. “Generalization Bias in Large Language Model Summarization of Scientific Research.” ''Royal Society Open Science'' 12 (4): 241776. https://doi.org/10.1098/rsos.241776''' </div> Peters and Chin-Yee provide rigorous, large-scale empirical evidence of a systematic and consequential distortion in LLM-generated scientific summaries: the tendency toward overgeneralization. Testing ten prominent LLMs—including ChatGPT-4o, ChatGPT-4.5, DeepSeek, LLaMA 3.3 70B, and Claude 3.7 Sonnet—on 4,900 summaries of scientific abstracts and full-length articles, the authors demonstrate that even when explicitly prompted for accuracy, most LLMs consistently produce conclusions broader and more definitive than those warranted by the original research. Critically, they identify three specific mechanisms of overgeneralization: the use of generic statements that obscure quantification, the shift from past to present tense (which expands scope), and the omission of qualifiers and limitations. The findings are stark: LLM-generated summaries were nearly five times more likely than human-authored summaries to contain broad generalizations (odds ratio = 4.85, 95% CI [3.06, 7.70], p < 0.001), with newer models performing worse than earlier ones. This research is foundational for understanding how AI-mediated knowledge communication systematically distorts scientific findings at scale, regardless of user expertise or intent. The work demonstrates a concrete mechanism through which LLM intermediation can alter the epistemic content of research, with particular implications for medical and clinical contexts where overgeneralized conclusions can directly influence policy and patient care. The authors propose mitigation strategies including temperature adjustment and systematic benchmarking, but their findings underscore the profound challenge of ensuring faithful knowledge transmission through AI systems. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''da Silva Cardoso, Heike, and Vitor Rocio. 2025. “Enhancing Digital Libraries Through NLP and Recommender Systems: Current Trends and Future Prospects with Large Language Models.” In ''Technology and Innovation in Learning, Teaching and Education: TECH-EDU 2024'', edited by Arsénio Reis, José P. Cravino, Leontios Hadjileontiadis, Paulo Martins, Sofia B. Dias, Sofia Hadjileontiadou, and Tassos Mikropoulos, 69–79. C''ommunications in Computer and Information Science'' 2480. Cham: Springer. https://doi.org/10.1007/978-3-032-02672-9_5''' </div> da Silva Cardoso and Rocio propose a practical framework for integrating Natural Language Processing and Large Language Models into academic digital libraries to address the information overload facing researchers, students, and faculty. Recognizing that traditional search methods have become insufficient in the face of exponential publication growth, the authors advocate for AI-driven recommender systems capable of delivering precise, relevant, and personalized literature recommendations. Their contribution centers on an audience-aware design philosophy that positions librarians as essential partners in system development. Rather than treating AI as a purely algorithmic solution, the authors emphasize that librarians' direct interactions with users provide irreplaceable insight into the nuanced and context-dependent needs of diverse academic communities. This human-in-the-loop approach represents a noteworthy methodological stance: AI functions not as a replacement for human expertise but as a tool to augment librarian knowledge and enhance the responsiveness of knowledge discovery systems. The work is particularly salient for understanding how contemporary LLM-based systems can be designed to serve scholarly audiences more effectively while maintaining the institutional wisdom and user-centered perspective that librarians bring to information work. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Taneja, Ankit Kumar, and Chandra Tripathi. 2020. “AI-Powered Recommender Systems: Personalization and Bias.” ''Turkish Journal of Computer and Mathematics Education (TURCOMAT)'' 11 (1): 1090–1094. https://doi.org/10.61841/turcomat.v11i1.14406''' </div> Though published before the generative AI era, Taneja and Tripathi's analysis of AI-powered recommender systems remains foundational to understanding algorithmic bias in information discovery. The authors examine the structural tensions inherent in personalization algorithms—systems designed to enhance user experience by tailoring content suggestions yet simultaneously capable of constructing "filter bubbles" and "echo chambers" around users. By continuously recommending content similar to previous engagement, these algorithms systematically exclude novel, dissenting, or interdisciplinary perspectives, undermining serendipitous discovery essential to genuine scholarly inquiry. Critically, the authors frame algorithmic bias not as a technical glitch but as a structural risk embedded within the information architectures that guide knowledge-seekers, and thus they expose how algorithmic personalization—a feature predating generative AI—already demonstrated the capacity to narrow intellectual diversity and reinforce pre-existing beliefs. This pre-GenAI work provides historical context for understanding how contemporary AI systems have intensified these risks, making it useful for evaluating the ethical imperatives of designing systems that promote intellectual openness rather than epistemic closure. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''de Winter, J. 2024. “Can ChatGPT Be Used to Predict Citation Counts, Readership, and Social Media Interaction? An Exploration Among 2222 Scientific Abstracts.” ''Scientometrics'' 129: 2469–2487. https://doi.org/10.1007/s11192-024-04939-y''' </div> De Winter’s study contrasts conventional scientometrics, testing whether a large language model can predict an article’s citation count and altmetric scores (whilst noting these may be unreliable assessors of actual scientific impact) by rating its abstract across “semantically diverse” variables. His case study uses ChatGPT-4 to predictively evaluate 2,222 abstracts from articles published in PLOS ONE, monitoring its accuracy by referencing actual citation counts and altmetrics scores. De Winter employs a custom script to prompt OpenAI’s Application Programming Interface (API) to score each abstract on a scale of zero to one hundred across thirty positive variables and their thirty antonyms, which he then organizes under five categories (e.g. “Quality and Reliability”). As Chat-GPT 4 only produced consistent results at the population level, it was run three additional times to determine averages and bolster reliability of individual scores. This language-based evaluation of article abstracts revealed that ChatGPT-4’s scores better correlate with altmetrics and citation counts than conventional readability scores do. Furthermore, “Novel and Engaging” articles were most likely to be cited, whilst “Accessible and Understandable” articles scored highest in altmetrics. {{Navigation|previous=AI and Social|next=Complete Alphabetical List of References}} {{BookCat}} 15iz6ptuep3oyenhe1opn04yc4te3e3 4656036 4656028 2026-08-02T06:42:45Z CorreiaA 3614427 4656036 wikitext text/x-wiki == Research Methods and Practices == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Arnett, Catherine, Eliot Jones, Ivan P. Yamshchikov, and Pierre-Carl Langlais. 2024. “Toxicity of the Commons: Curating Open-Source Pre-Training Data.” Preprint, ''arXiv'', October 29. https://doi.org/10.48550/arXiv.2410.22587.''' </div> Open-source pretraining data is increasingly treated as a shared resource for building “open” language models, yet it can embed and reproduce harmful speech patterns at scale. Arnett, Jones, Yamshchikov, and Langlais argue that reducing toxic model behaviour requires intervening upstream in data, and they focus specifically on the distinctive constraints of public-domain corpora (including historical documents and OCR-derived text) where standard web-text toxicity filters can be impractical or ill-suited. They propose a fully open-source curation pipeline designed for these conditions and present three concrete contributions: (1) ToxicCommons, a custom-labelled dataset organized across five toxicity dimensions (racial/origin-based, gender/sex-based, religious, ability-based discrimination, and violence); (2) Celadon, a classifier trained on that dataset to detect toxic content more efficiently at scale in open data; and (3) a “balanced” filtration strategy that explicitly trades off safety filtering against retaining sufficient training material. The paper’s core claim is that open-data model development needs domain-attuned, auditable curation methods paired with task-specific classifiers, so that openness in data does not automatically translate into avoidable harms in downstream model outputs. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bail, Christopher A. “Can Generative Artificial Intelligence Improve Social Science?” https://www.semanticscholar.org/paper/Can-Generative-Artificial-Intelligence-Improve-Bail/6206cc77bb3a3c0b6b9fce1ad68a8b1786a56941<nowiki/>.''' </div> Bail (2023) provides a critical evaluation of how Generative Artificial Intelligence (AI), particularly Large Language Models (LLMs), might fundamentally transform computational social science. Moving beyond superficial administrative use cases, Bail examines the potential of LLMs to simulate complex human behaviours. He suggests that Generative AI could revolutionize agent-based modelling by replacing simplistic, rule-bound agents with dynamic, memory-equipped "silicon samples" capable of emergent group behaviours. While acknowledging the utility of AI for automated content analysis and expanding programming accessibility, Bail rigorously details the methodological and ethical perils of these largely opaque systems. He warns that the proprietary fine-tuning of commercial LLMs introduces severe demographic biases—often skewing toward highly educated, liberal perspectives—which threatens the external validity of AI-assisted research. Furthermore, Bail highlights the "Stack Overflow Problem," cautioning that the unchecked proliferation of AI-generated "junk science" could contaminate future training data and degrade the broader scientific ecosystem. Ultimately, Bail argues that social scientists must not remain passive "end-users" of corporate AI. Instead, they must actively collaborate with computer scientists to reverse-engineer the "social sense" into AI models, ensuring the development of open-source, reproducible infrastructures that genuinely advance the study of human behaviour. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bakharia, Aneesha, Antonette Shibani, Lisa-Angelique Lim, Trish McCluskey, and Simon Buckingham Shum. 2025. “From Transcripts to Themes: A Trustworthy Workflow for Qualitative Analysis Using Large Language Models.” In ''Joint Proceedings of LAK 2025 Workshops, co-located with the 15th International Conference on Learning Analytics and Knowledge (LAK 2025)''. Dublin, Ireland: CEUR-WS.org. https://ceur-ws.org/Vol-3995/LLMQUAL_paper1.pdf.''' </div> Bakharia et al. explore the use of AI in qualitative, rather than quantitative, research in education. The authors define “minimum requirements that an LLM-supported qualitative analysis workflow must satisfy” and present a “LLM-based workflow that derives an initial set of themes” from text data that is “transferable to other LA [learning analytics] contexts performing qualitative analysis of open-ended text.” The authors define two requirements for “LLM-generated inductive coding”: first, it must verify “coded textual extracts… against source data” to make sure the quotes are accurate (i.e., verbatim and not hallucinated) and verify those extracts “are meaningfully classified under the assigned code.” Second, in the interest of transparency, it must “explain that rationale for each code” and “trace every code, whatever level of abstraction, back to its source data.” The article outlines and describes the proposed workflow in detail, including its being built in Python with a Jupyter notebook and Flask application. While they acknowledge challenges and problems in their research (e.g., LLM bias, the lack of comparable human analysis, the risk of alienating the human quality of qualitative research), Bakharia et al. ultimately advocate their approach as one that “improves transparency, verifiability, and interpretability, while addressing limitations of previous methods and enhancing researcher processes in qualitative thematic analysis" (9). By adapting their minimum requirements and workflow, the authors argue, researchers can engage more effectively in LLM-driven qualitative research. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Dennstädt, Fabio, Cedric Sivert Möller, Tim Fellerhoff, Felix Busch, Oke Gerke, André Karch, and Oliver Krause. 2024. “Title and Abstract Screening for Literature Reviews Using Large Language Models: An Exploratory Study in the Biomedical Domain.” ''Systematic Reviews'' 13 (1): 158. https://doi.org/10.1186/s13643-024-02575-4<nowiki/>.''' </div> Dennstädt et al. perform a study in which they attempt to determine the viability of using LLMs to automate scholarly literature surveys. The researchers developed a method for using LLMs to perform the title and abstract screenings of a systematic literature review method and applied that method with four LLMs across eleven datasets in biomedical literature. A key advantage of implementing LLMs in this process is that it escapes the need to train the machine via pre-selection. Researchers have developed automated and semi-automated processes for systematic literature reviews in the past, but this requires a human agent to provide training data or a corpus of example texts that tell the system what to look for. LLMs do not require this step. Instead, the researchers used a Python script that prompts the LLM “to evaluate the relevance of a scientific publication for inclusion into an SLR,” providing the LLM with both abstract and title, request for a numbered score indicating the relevance of the publication, and a numerical threshold that defines whether a score makes the given publication relevant. The authors characterize the results of the study as “promising” but also “far from perfect,” identifying that such applications could be helpful to researchers and are widely applicable without special training for data or user, even if “fully automated systems… still fail to differentiate… near the level of human evaluation.” The authors conclude that more research into the use of LLMs to automate systematic literature reviews is needed, but it seems very likely that scholars will employ LLMs into this integral research task with greater frequency in the future. How well LLMs will continue to perform in this task is unclear, especially in new research, and Dennstädt et al. clearly state, “we cannot answer the question of to what extent LLMs should be used for conducting literature reviews and for doing research.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Montague-Hellen, Beth. 2024. “Empowering Knowledge through AI: Open Scholarship Proactively Supporting Well Trained Generative AI.” ''Insights'' 37 (1). https://doi.org/10.1629/uksg.649.''' </div> Generative AI is becoming a dominant interface for finding, summarizing, and producing academic information, with consequences for what counts as authoritative knowledge online. Montague-Hellen argues that, rather than focusing primarily on misuse, job displacement, or defensive copyright disputes, scholarly communications actors should actively encourage the inclusion of scholarly literature in generative AI training data to improve reliability and ensure research is represented in emerging discovery platforms. The article develops two main pathways for doing this: making scholarly outputs more machine-actionable and “crawlable” (especially through better linkage, metadata, and structured HTML rather than PDF-only dissemination) and making permissions unambiguous by explicitly addressing AI training in licences and related signals. It foregrounds “garbage in, garbage out” to claim that while libraries and publishers cannot remove low-quality web content from training corpora, they can tilt the balance by lowering friction for high-quality, curated research to be ingested legally. Montague-Hellen also highlights unresolved tensions around attribution and consent under common Creative Commons licences, suggesting that clearer, more specific permission frameworks (or new licensing patterns) may be needed to distinguish human reading from machine training and to communicate “enthusiastic consent” where desired. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Mugaanyi, Joseph, Christoph Lehner, and Lia M. Bally. 2024. “Evaluation of Large Language Model Performance and Reliability for Citation Generation Across Scientific Disciplines.” ''Journal of Medical Internet Research'' 26: e52935. https://doi.org/10.2196/52935<nowiki/>.''' </div> Mugaanyi, Lehner, and Bally perform a study aimed at gauging the accuracy and reliability of citations generated by ChatGPT (GPT 3.5) in both the natural sciences and humanities. The authors emphasize that “Citations and references serve as the backbone of scholarly communication, providing the necessary context, evidence, and credit to prior works… ensuring the integrity of the research process.” With this in mind, the article frames the related study as aiding researchers in determining whether LLMs are viable as writing assistants in scholarly writing. In short, if an LLM cannot be relied upon to accurately cite and reference sources, it poses a risk to the integrity of research when incorporated into scholarly writing. The study found that ChatGPT hallucinated over a quarter of its references, with a slightly higher margin in the natural sciences. Furthermore, not all of those citations that did exist were accurate, and the LLM hallucinated DOIs for nearly 90% of the references it cited, real or otherwise, in the humanities. The issue, as the authors describe it, is that “in the current iteration of LLMs, since the training is geared toward generalization and the models are probabilistic, they tend to interpolate and fill in the missing information with synthetic text.” The authors conclude that, while domain-specific models may improve performance and reliability, in its current, generic form, researchers need to contemplate whether the strengths of ChatGPT’s reference generation justify its demonstrable limitations and “the importance of robust validation processes to ensure the accuracy and reliability of generated content.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Schroeder, Hope, Marianne Aubin Le Quéré, Casey Randazzo, David Mimno, and Sarita Schoenebeck. 2024. “Large Language Models in Qualitative Research: Uses, Tensions, and Intentions.” Preprint, ''arXiv'', October 9. https://arxiv.org/abs/2410.07362<nowiki/>.''' </div> Schroder et al. perform interviews with twenty qualitative researchers in human computer interaction (HCI) and qualitative research to gauge how researchers are actually using LLMs and concerns over the incorporation of LLMs at different stages of research; the authors also provide a survey of the rise of LLMs and flag potential concerns, using both interviews and survey as a launchpad to outline suggestions and recommendations for researchers in the field contemplating the use of LLMs in their research. The authors are concerned that “the speed of LLM development has outpaced guidance on their ethical use” and “the HCI community is contending with the need for developed policies that tackle how to use AI ethically in research.” The most prominent concerns that the article raises relate to “ethics, unequal adoption of new technologies, model bias, and performance” as well as “concerns regarding participant privacy,” but there is also a larger issue within the field of HCI that “LLMs may lend the impression that qualitative inquiry can be automated, and their integration into Quantitative Data Analysis (QDA) software may increasingly impose positivist approaches that conflict with interpretivist traditions.” Key findings from the interviews are that most researchers are open to responsible use of LLMs but have concerns about established guidelines and norms for its implementation. Additionally, many are already using LLMs “to generate recruitment materials,” “speed up qualitative coding,” and “for ideation and feedback,” even as they acknowledge tensions between the qualitative nature of their work and the prospect of automation. The most significant recommendations that Schroder et al. make include updating consent forms, using dedicated tools rather than defaulting to Chat-GPT, and implementing design decisions specifically for LLM-incorporating methodologies that reconsider “participant privacy,” LLM’s “intentional use,” “transparency and validation,” “researcher context,” “deep engagement with data” despite this automation, and ways “to consider participant perspectives and interests” given “the variable performance LLMs have across contexts, knowledge domains, cultures, and languages.” The authors hope that incorporating these considerations will “empower qualitative researchers to leverage LLMs confidently, and even creatively, for their work.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Tumadóttir, Anna. 2024. “Questions for Consideration on AI & the Commons.” ''Creative Commons'', July 24. https://creativecommons.org/2024/07/24/preferencesignals/.''' </div> Tumadóttir talks about CC, license, tools, and policy and discusses the way to foster a healthy commons environment in the digital era. She points out how the introduction of the CC license enhanced Creative Commons by giving the creators choice over usage of their works. However, it is now a question if the same healthy commons can be maintained today because of rapid technological development. Preference signals for AI is a notion to give an agent (creator, rights holder, entity of some kind) more flexibility on how they want their work to be used for AI model training. However, the choice is still binary which is offering all or nothing. After consultations, it is found that people want more control over their work and if not, they might not share their work at all. Therefore, it is important to identify the right type of preference signals for it to be useful to benefit the public interest. During this process, we need to keep in mind its effect and variation on cultural heritage, different education sectors, and regions. Moreover, to make the preference signals effective, we need to examine its structure as well as whether legal enforcement is necessary. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Yue, Yongjie, Maosong Zheng, Jiahui Liu, Zhimin Wang, and Chenhui Mao. 2025. “A Practical Guide and Assessment on Using ChatGPT to Conduct Grounded Theory Studies: Step-by-Step Reporting of the Data Analysis Process.” ''Journal of Medical Internet Research'' 27: e70122. https://doi.org/10.2196/70122<nowiki/>.''' </div> Yue et al. employ a study that entailed researchers using either manual coding or coding assisted by ChatGPT to perform data analysis on a 40,000 word dataset made up of interviews with 8 players of Listen and Play in Jianghu, a Chinese MMORPG designed for the blind. The study’s aim was to “provide detailed guidelines for using ChatGPT in grounded theory within the Chinese context,” “evaluate the effectiveness of ChatGPT coding” in this context, and “explore the broader implications and future directions of ChatGPT in qualitative research.” The article goes into great detail as to the process for generating open code with ChatGPT. The results of the study show that, although manual coding performed slightly better than ChatGPT-assisted coding, the “difference was not statistically significant” in its production of nodes and reference points. However, during axial coding, the categories and subcategories generated through these respective processes was significantly different, with only half of the categories semantically matching between manual and ChatGPT-assisted methods. The authors conclude that, while ChatGPT 4-Turbo “enhanced the diversity and efficiency of coding... it struggled with depth, context, subtle nuances, connections, and coding organization.” Nevertheless Yue et al. see great potential in the application of GenAI-assisted coding in grounded theory, especially as the technology develops. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Zhu, Wenhao, Hongyi Liu, Qingxiu Dong, Jingjing Xu, Shujian Huang, Lingpeng Kong, Jiajun Chen, and Lei Li. 2023. “Multilingual Machine Translation with Large Language Models: Empirical Results and Analysis.” Preprint, ''arXiv'', April 10. https://arxiv.org/abs/2304.04675<nowiki/>.''' </div> Zhu et al. perform an empirical study that tests the multilingual translation performance of eight popular LLMs on 102 languages. As the authors explain, this is a particularly difficult task as it requires “semantic alignment between languages.” While LLMs tend to perform surprisingly well at translation, “it is also unclear [sic] how LLM acquires translation ability and which factors affect LLM’s translation ability.” This study in multilingual machine translation (MMT) therefore seeks to answer two questions: how do LLMs perform MMT over massive languages and what factors affect their performance? The results of the study suggest that GPT-4 generally outperforms its competitors but still falls short of Google Translate in some tests. Two key takeaways from this study are that “exemplars in the tail of the prompt have larger influence on an LLM’s behaviour,” meaning that the order in which exemplars are given within a prompt matter, and that cross-lingual translation pairs are particularly helpful exemplars to LLMs. The authors ultimately conclude that an “LLM can acquire translation ability in a resource-efficient way, which indicates [a] promising future of LLM in multilingual machine translation” as the technology evolves. ''NB: As this research was conducted prior to Google’s implementation of GenAI/LLMs into Google Translate in 2024, it sometimes uses Google Translate as a baseline/comparison point for LLM-powered translation that can be confusing without that context.'' == Forms of Research Output == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bozkurt, Aras. 2024. “GenAI et al.: Cocreation, Authorship, Ownership, Academic Ethics and Integrity in a Time of Generative AI.” ''Open Praxis'' 16 (1): 1–10. https://doi.org/10.55982/openpraxis.16.1.654<nowiki/>.''' </div> Bozkurt’s essay seeks “to undertake a critical examination of the use of generative AI in academic contexts… examining its implications and exploring the nuances of its integration.” He begins with an assertion of technological determinism, stating “This technological shift… is not just a transient trend but a symbol of the inescapable change… marking the onset of an AI-dominated age and initiating profound and inevitable shifts in our academic and educational paradigms.” The author makes the argument that the advent of AI “requires us to critically reconsider concepts such as cocreation, ownership, and authorship in academic writing processes.” For instance, in exploring the concept of ownership, he briefly notes the ethical concerns of whether those who created the content upon which AI was trained might claim ownership of AI-generated content and explores the notions of AI or even its programmers acting as a co-author. Bozkurt himself takes the explicit stance that GenAI ought not be credited as a co-author. The paper also provides suggestions related to the ethics of AI use and transparency: “In some cases, merely reporting… is inadequate. A more nuanced approach involves providing multilayered statements acknowledging and benchmarking the use of [GenAI], specifying where, when, in which sections, and for what purposes it is employed.” Bozkurt reiterates that responsibility ultimately belongs to the human author, and provides the aiTARAS (Academic Integrity and Transparency in AI-assisted Research and Specification) Framework for this purpose. Bozkurt ends his essay by identifying further problems beyond the scope of the article, including “reimagining of assessment and evaluation,” our overfocus on ChatGPT and English language in this field of study, and the inaccuracy of AI detection software. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Colbert-Lewis, Danielle, Lawrence Maminta, Kelly McElroy, Graeme Slaght, and Mark Swartz. 2024. “The Citation Economy as a Site of Extraction for Surveillance Publishing.” ''Canadian Journal of Academic Librarianship'' 10 (December): 1–22. https://doi.org/10.33137/cjal-rcbu.v10.43293.''' </div> Colbert-Lewis et al. (2024) examine the extractive nature of the modern "citation economy," arguing that academic publishing has evolved into a powerful mechanism for surveillance and data commodification. The authors detail how a consolidated group of dominant publishers capture surplus value from the academic lifecycle by extracting free scholarly labour, research data, and personal information. Crucially, these corporations are transitioning from traditional information vendors into technology-driven data brokers. The extracted data is reinvested into proprietary analytics products that are then sold back to universities to evaluate and surveil faculty performance, relying on opaque metrics that threaten academic freedom. Furthermore, the authors highlight the severe ethical compromises inherent in this system, noting that academics inadvertently fuel data infrastructures that these same parent companies sell to external industries, including law enforcement and advertising. To combat the rise of "surveillance publishing," the article concludes with actionable recommendations for scholars and librarians to resist exploitative practices and build ethical infrastructures, alongside a supplementary mini-zine designed to raise awareness about the hidden costs of participating in the citation economy. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Frangou, Sophia, Umberto Volpe, and Andrea Fiorillo. 2025. “AI in scientific writing and publishing: A call for critical engagement.” ''European Psychiatry'' 68 (1): e98. https://doi.org/10.1192/j.eurpsy.2025.10061<nowiki/>.''' </div> Frangou, Volpe, and Fiorillo provide a succinct summary of the benefits of implementing AI in scientific writing and publishing, before turning to the challenges and risks posed toward the use of such technology. Finally, they end by posing ethical frameworks for the use of AI in both publishing and writing. In publishing, the authors identify tools that can aid in tasks ranging from copyediting to finding reviewers and claim that for both “high-volume publications” and “resource-constrained journals… AI can serve as a force multiplier, expanding what editorial teams can accomplish without compromising the centrality of human discretion and responsibility.” In writing, the article notes that “AI-powered applications offer a suite of tools that, when used judiciously, can enhance the quality, efficiency, and inclusivity of the scholarly communication process,” placing such tools along the trajectory of preexisting aids like EndNote and Zotero, which have also now incorporated AI. Frangou, Volpe, and Fiorillo argue that AI can help scholars identify relevant literature they might otherwise have trouble finding, reduce the linguistic bias encountered by scholars for whom English is not their first language, and aid scholars in navigating the publishing landscape so their work can find the best possible fit. Finally, the authors acknowledge the epistemic and ethical risks of AI: inconsistency and irreproducibility, transparency, informed consent, and data privacy are all core concerns. Key components in the article’s ethical frameworks for publishers and authors include transparency and disclosure, human accountability, and training and skill development. The authors hope that “these principles articulate a shared responsibility for shaping the role of AI in scientific publishing” and AI’s “adoption reinforces the foundational values that give scientific communication its trustworthiness and legitimacy.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Graßhoff, Gerd. 2024. “AI-Reporter: A Path to a New Genre of Scientific Communication.” Preprint, ''arXiv'', July 8. https://arxiv.org/abs/2507.05903. ''' </div> Graßhoff introduces a new tool, the AI-Reporter, that aims “to fundamentally expand scientific communication for the new era…”; according to Graßhoff, the AI-Reporter “creates a sustainable, referenceable, and expandable knowledge base that captures not just content but the living essence of scientific discourse.” In short, Graßhoff proposes a tool that will adapt a scientific presentation into a “public-ready chapter” in about three minutes with “only the author’s consent.” The majority of the article is dedicated to a tech-oriented breakdown of the methodology and workflow of the AI-Reporter, namely the semantic analysis and translation of a recorded slide presentation—consisting of the presentation as a PDF, video recording, and basic metadata—into a publication-ready chapter. Graßhoff’s tool is an attempt to solve what he identifies as a core problem of modern scholarly communication, namely that “knowledge is increasingly presented in dynamic, multimodal formats” that are ultimately ephemeral and content is often lost (14). He aims to refine this tool to enable real-time processing, multilingual support, interactive multimedia components, “optimization for academic disciplines,” and more to this project. He advocates the AI-Reporter as nothing less than “a vision for the future of scientific communication.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Jiang, Jialei. 2024. “When generative artificial intelligence meets multimodal composition: Rethinking the composition process through an AI-assisted design project.” ''Computers and Composition'' 74: 102883. DOI: https://doi.org/10.1016/j.compcom.2024.102883<nowiki/>.''' </div> Jiang conducts a study in which GenAI is integrated into students’ composition of multimodal texts, then interviewed on their experience. Jiang’s states her aim as follows: “Through examining writing students use of GenAI tools in multimodal composition, this study seeks to unravel how GenAi technologies influence students’ design choices, problem-solving approaches, and the overall composition process.” In particular, Jiang is interested in “potential opportunities and challenges of incorporating GenAI into students’ multimodal composition process.” Jiang frames the article within composition and writing studies and the theory behind multimodal composition. She builds upon recent pedagogical best practices put forward by Burriss and Leander (2024) that “call upon teachers and educators to engage in the development of an emergent pedagogy of critical AI that “teach[es] about/with AI in emergent, flexible, and speculative ways.” The results of the study emphasize that, while GenAI can streamline workflow and provide examples from which students can build using their own creativity, there were clear limitations to the technology. Of course, students’ realization of these limitations is a success of the course’s pedagogy. The article also provides three case studies of the student compositions as exemplars of the outcome. Jiang concludes with a recommendation “that researchers and educators engage in meaningful dialogues with students about their uses of GenAI during composition practices.” She quotes her own earlier work (Jiang et al. 2024), where she writes that to keep AI out of the classroom “is not only idealistic and impossible... it is actually completely disengaged from the realities of the changing technological landscape students are already facing.” <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Mehlenbacher, Brad, Ana Patricia Balbon, and Ashley Rose Mehlenbacher. 2024. “Synthetic Genres: Expert Genres, Non-Specialist Audiences, and Misinformation in the Artificial Intelligence Age.” ''Journal of Technical Writing and Communication'', January 31. https://doi.org/10.1177/00472816231226249.''' </div> Genre theorists Mehlenbacher et al. examine which AI-generated texts are “good enough” to pass as “bona fide” (already a “very good” standard). They argue AI-generated text produces misinformation, pushes apart definitions of “information” and “knowledge,” and necessitates rhetorical understanding. The authors therefore believe “synthetic genres” will emerge, departing in situation, form, and even “the very concept of genre users” based on recursive and “poisoned” outputs. In reviewing literature, the authors spotlight AI-generated disinformation’s suasive (instead of propagandistic or accurate) potential, and argue that AI-generated text can be suasive by appearing both “timely” and “appropriate.” However, this “fraudoscientific” text can never be truly “timely” or “appropriate,” as it is always constrained in past work, and only responds to prompts, not situations. Despite this, AI-generated text generated on specialist subjects can still be effectively suasive—and even when identified as AI—because its authority is difficult to challenge. Mehlenbacher et al. therefore conduct two studies of AI-generated outputs, focusing on how they may be deceptive or detected. They first prompted GPT-3 to emulate rhetorical research abstracts by generating a range of definitions alongside text to emulate research processes. Next, they conducted a genre analysis, generating text on controversial topics and prioritizing suasiveness over ability to pass a theoretical “Genre Turing Test.” Based on their results, Mehlenbacher et al. suggest AI-generated text should be cross examined with specialist texts to identify where they need additional development, presenting a valuable teaching opportunity which supports “a powerful way to introduce the epistemic functions of writing.” Non-specialists should also develop tools to identify the source and quality of content, including diverse genre perspectives. The authors conclude by arguing genre scholars should further consider AI-generated texts and emphasizing the importance of genre users. This is because “genre must be understood in a rhetorical context,” while “synthetic genres” can only act as “statistical simulacrum.” == Teaching and Pedagogy == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Adewumi, Tosin, Lama Alkhaled, Christopher Buck, Sergio Hernandez, Sofia Brilioth, Memoona Kekung, Yasmin Ragimov, and Emily Barney. 2023. “ProCoT: Stimulating Critical Thinking and Writing of Students through Engagement with Large Language Models (LLMs).” Preprint, ''arXiv'', December 15. https://doi.org/10.48550/arXiv.2312.09801<nowiki/>.''' </div> Adewumi et al.'s Probing Chain-of-Thought (ProCoT) methodology represents a pedagogical approach that transforms LLM interaction from potential academic dishonesty into an active learning process centred on critical evaluation and evidence-based reasoning. ProCoT requires students to generate initial outputs using LLMs, then systematically affirm or refute each claim using peer-reviewed references, effectively making the AI output a provisional hypothesis to be tested rather than a final answer to be submitted. This approach directly addresses the section's themes of process transparency (the method makes visible each stage of knowledge construction, from initial AI generation through source verification to synthesis) and ethical reflection (students must grapple with AI limitations including hallucination, bias, and lack of disciplinary nuance). The authors' finding that student outputs using ProCoT were significantly more concise than LLM-generated text (208 vs. 391 words on average) while demonstrating enhanced critical thinking suggests that the method trains students to distill and synthesize rather than accept verbose AI output uncritically. ProCoT leverages AI's epistemological weaknesses as pedagogical strengths—the fact that ChatGPT cannot reliably cite sources becomes an opportunity for students to develop information literacy by finding and evaluating primary literature. The method's anti-cheating design is secondary to its pedagogical value: by requiring iterative engagement with AI outputs and scholarly sources, ProCoT embeds the kind of metacognitive reflection (What did the AI get right? What did it miss? How do I know?) that is of significance to pedagogy in the AI era. The authors' evidence from 65 students across disciplines demonstrates feasibility across contexts, emphasizing cross-disciplinary rather than field-specific approaches to AI-entangled pedagogy. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Berry, David M. 2023. “AI, Ethics, and Digital Humanities.” In ''The Bloomsbury Handbook to the Digital Humanities'', edited by James O’Sullivan, 445–57. Bloomsbury Academic. https://recoveryhub.siue.edu/wp-content/uploads/2024/10/AI-Ethics-and-Digital-Humanities-.pdf<nowiki/>.''' </div> Berry emphasizes that AI’s use in the field of Digital Humanities raises major ethical questions despite it being an apparent evolution of the field’s traditional utilization of technology to augment human research capabilities. Berry outlines this issue by comparing the modern rise of AI to Digital Humanities’ early history, highlighting that digital humanists operated as coders until they began to “'black box' the computational aspects of doing digital humanities,” thus enabling non-programmers to participate. Since AI “automating processes might cover over ethical issues by transferring them into the hashtables of the machine-learning system,” Berry argues uncritical reliance on AI tools by inexpert modern humanists risks the “algorithmization” and imposition of hierarchical, quantitative frameworks upon Digital Humanities studies. He further identifies that the field of Digital Humanities is “on the cusp of a new set of packages that will further democratize access to machine learning,” a noble goal, but one which will bring these issues to the forefront. For this reason, Berry argues a reconsideration of ethics within Digital Humanities is desperately required on both organizational and individual levels. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Brown, Richard. 2023. ''The AI Generation: How Universities Can Prepare Students for the Changing World''. DEMOS and University of London report. https://demos.co.uk/wp-content/uploads/2023/11/The-AI-Generation-2.pdf<nowiki/>.''' </div> Brown argues AI will inevitably and dramatically impact all fields of education, and therefore encourages universities to seize the opportunity to lead these changes instead of merely reacting to them. His voice is echoed by esteemed organizations DEMOS and the University of London, indicating that this shift in the academic environment is already beginning. Brown argues this shift is required due to the developing capacity of AI for automating low-skilled professional tasks, an ability which risks decimating the available number of entry-level graduate positions. As a result, how employers value the workplace skills taught by current curriculums will change drastically, meaning universities must revolutionize their approach to education. Brown provides a blueprint for how universities can adapt to these changes by championing education’s prioritization of “GRASP” (General Relational, Analytic, Social, and Personal) skills as an alternative, advising universities to focus on teaching high-level and tailored skills to students instead of the generic. Universities can do this by practising “active learning” over traditional lecture formats as well as fostering extracurricular and work experience opportunities for their students. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Deng, Ruiqi, Maoli Jiang, Xinlu Yu, Yuyan Lu, and Shasha Liu. 2025. “Does ChatGPT Enhance Student Learning? A Systematic Review and Meta-Analysis of Experimental Studies.” ''Computers & Education'' 227. https://doi.org/10.1016/j.compedu.2024.105224<nowiki/>.''' </div> Deng and colleagues' meta-analysis of 69 experimental studies provides empirical grounding for claims about ChatGPT's pedagogical impact, revealing both opportunities and methodological challenges in assessing AI-enhanced learning. Their finding that ChatGPT interventions improve academic performance, affective-motivational states, and higher-order thinking propensities while reducing mental effort speaks directly to how assessment must shift when AI augments cognition—if mental effort decreases but learning outcomes improve, traditional measures of "effort" or "struggle" as proxies for learning may require recalibration. In their critique of current assessment methodologies the authors demonstrate that most studies evaluate only final outputs (essay quality, test scores) rather than learning processes, missing opportunities to examine how students interact with AI, what metacognitive strategies they develop, and whether AI use builds transferable skills or creates dependency. Deng et al.'s four methodological propositions—using complex project-based assessments that reveal process, evaluating long-term rather than novelty effects, prioritizing objective over self-reported measures of higher-order thinking, and employing adequate statistical power—provide a research agenda for pedagogy–AI scholarship that centres process evidence. Their documentation of disciplinary variation (language education dominates current research) while calling for cross-disciplinary synthesis focuses on avoiding discipline-specific approaches. The meta-analysis also reveals gaps in understanding collaboration (few studies examine peer learning dynamics when AI is present) and metacognition (limited research on whether students develop awareness of their own and AI's knowledge boundaries), highlighting the resulting pedagogical transformations. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Grigoli, L. Renato. 2023. “Ghosts in the Machine.” ''American Historical Association'' 61 (3). https://www.historians.org/wp-content/uploads/2024/07/Perspectives_61N3.pdf<nowiki/>.''' </div> Grigoli dismisses fears of AI generated essays threatening academic integrity by arguing that “if the development of artificial intelligence results in the death of the humanities, then it will be because it will have shown that the emperor has no clothes.” He uses ChatGPT to demonstrate that although AI responses appear competent at a passing glance, they lack valuable substance, simply arranging facts in a way that “tricks the reader into… doing all the analytical work.” Clear critical analysis should be the core component of a successful humanities essay, making well-designed assessments of this field far more reliable than those focused on information retention (like engineering). Therefore, AI is not a real threat, but a valuable pedagogical tool which can demonstrate examples of clean prose and prompt students to critically analyze what constitutes critical analysis. Essentially, if an AI generated answer can pass a test, the real problem was "self-inflicted" by either the examiner or the question itself. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Lee, Daniel, and Edward Palmer. 2025. “Prompt Engineering in Higher Education: A Systematic Review to Help Inform Curricula.” ''International Journal of Educational Technology in Higher Education'' 22: 16. https://doi.org/10.1186/s41239-025-00503-7<nowiki/>.''' </div> Lee and Palmer's systematic review establishes prompt engineering as an emergent pedagogical practice that integrates with longstanding traditions of scholarly inquiry, questioning, and rhetoric. The authors synthesize multiple frameworks (AIPROMT, CLEAR, CRISPE) that codify prompting as a learnable skill involving role specification, context provision, instruction clarity, and iterative refinement—revealing how interaction with LLMs mirrors Socratic dialogue, research question formulation, and the rhetorical tradition of audience awareness. This work positions "prompting as pedagogy" as a reconfiguration of existing scholarly literacies: students learning to prompt effectively must articulate their information needs precisely, anticipate how language shapes output, and iteratively refine queries based on initial results—all core practices in library research, database searching, and scholarly conversation. The authors document how educators are embedding prompt engineering across disciplines, from technical fields where students prompt AI to generate code or solve equations, to humanities contexts where prompting becomes a form of textual analysis (understanding what linguistic patterns trigger particular AI responses reveals implicit biases and training data influences). Their review also identifies ethical dimensions—well-designed prompts can mitigate AI hallucination and bias, while poorly constructed prompts amplify these issues—making prompt literacy a matter of scholarly responsibility. The authors' call for curricula that teach prompting as interdisciplinary competency aligns with how AI entangles with pedagogy across boundaries, reshaping what counts as fundamental scholarly practice in an AI-augmented knowledge environment. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Mai, Dang Thi Thuy, Cuong Van Da, and Nguyen Van Hanh. 2024. “The Use of ChatGPT in Teaching and Learning: A Systematic Review through SWOT Analysis Approach.” ''Frontiers in Education'' 9: 1328769. https://doi.org/10.3389/feduc.2024.1328769<nowiki/>.''' </div> Mai and colleagues' systematic SWOT analysis of 51 studies on ChatGPT in education, organized through Biggs' 3P model (Presage-Process-Product), offers comprehensive mapping of how generative AI enters and transforms pedagogical systems at multiple scales—from individual learner characteristics (Presage) through interactive teaching-learning processes (Process) to learning outcomes and assessment products (Product). This multilevel framework reveals that ChatGPT's pedagogical impact cannot be isolated to single moments of use but ripples across entire learning ecologies: at the Presage level, ChatGPT shifts what prior knowledge students need (familiarity with prompting interfaces) and what instructor competencies are required (ability to design AI-aware assignments); at the Process level, it transforms interaction patterns from teacher–student and student–student to include human–AI dialogue that may enhance personalized scaffolding but risks reducing peer collaboration; at the Product level, it necessitates fundamental assessment redesign because traditional evaluation instruments (timed essays, closed-book exams) lose validity when AI can generate competent responses. The authors' characterization of ChatGPT as simultaneously "friend" (enabling personalized learning, reducing educator workload, providing instant feedback) and "foe" (enabling plagiarism, potentially reducing critical thinking, creating over-reliance) mirrors the section's emphasis on entanglement—pedagogy cannot simply embrace or reject AI but must negotiate tensions between efficiency and effort, personalization and depersonalization, augmentation and replacement. Mai et al.'s documentation of how educators are adapting curricula to emphasize creativity and critical thinking (skills less easily automated) while using ChatGPT for routine information provision demonstrates pedagogical evolution toward distinctly human capacities. Their call for assessment reform using complex case studies, portfolios, and process documentation rather than single-sitting exams directly supports the notion of process evidence and metacognition as being central to AI-era pedagogy, positioning assessment not as gatekeeping but as making learning processes transparent and accountable. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Oates, Angela, and Donna Johnson. 2025. “ChatGPT in the Classroom: Evaluating Its Role in Fostering Critical Evaluation Skills.” ''International Journal of Artificial Intelligence in Education'' 35 (4): 1793–1824. https://doi.org/10.1007/s40593-024-00452-8<nowiki/>.''' </div> Oates and Johnson's empirical study of biomedical science master's students offers insight into how AI functions more effectively as object of critical study than as production tool, revealing pedagogical value in making AI outputs subjects for evaluation rather than endpoints of learning. Their finding that students' marks did not improve when submitting AI-generated essays but did improve when critically evaluating AI outputs demonstrates a fundamental pedagogical principle: learning occurs not in consuming AI-generated content but in interrogating it, comparing it against disciplinary standards, identifying its factual errors and rhetorical limitations, and articulating why human-authored scholarship differs. This shifts pedagogy from "use AI to complete tasks" toward "use AI to understand knowledge construction itself"—students learn about evidence evaluation, citation practices, and argumentation by analyzing where ChatGPT succeeds and fails at these scholarly fundamentals. The authors document that ChatGPT demonstrated structural coherence and grammatical accuracy but lacked the disciplinary depth and synthetic insight expected in graduate work, making visible to students the difference between surface-level fluency and genuine expertise. Their emphasis on user interaction as a variable affecting efficacy underscores that pedagogy must address not just whether AI is present but how students are taught to engage it—prompt design, output evaluation, and integration with human research become learnable scholarly practices. Oates and Johnson's conclusion that students preferred writing their own essays despite AI's availability suggests that when pedagogy centres process transparency and critical evaluation rather than output efficiency, students recognize and value the cognitive work that AI cannot replicate, focusing on pedagogy that treats AI as entangled phenomenon requiring simultaneous use and critique. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Pope, Andrew, and Rongqian Ma. 2024. “Exploring Historians’ Critical Use of Generative AI Technologies for History Education.” ''Proceedings of the Association for Information Science and Technology'' 61 (1): 1071–73. https://doi.org/10.1002/pra2.1188<nowiki/>.''' </div> Pope and Ma conducted semi-structured interviews of seven history professors to assess their attitudes toward employing GenAI tools in their teaching. Understanding this stance is important because Pope and Ma believe incoherent and mismatched approaches could inhibit scholarly communication and undermine academic integrity. The survey demonstrated historians had major concerns about GenAI’s development, especially regarding plagiarism. Respondents were particularly divided on whether copying an AI’s work was academic misconduct. However, historians had far fewer concerns about using GenAI to "augment" human abilities or tailor support to students—although senior academics maintained substantially greater reservations. The historians that were interviewed concurred that critiquing AI generated text could improve a student’s media literacy. Pope and Ma’s study suggests that historians consistently doubt the quality of AI generated responses even when willing to employ it. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Tan, Myles Joshua Toledo, and Nicholle Mae Amor Ttan Maravilla. 2024. “Shaping Integrity: Why Generative Artificial Intelligence Does Not Have to Undermine Education.” ''Frontiers in Artificial Intelligence'' 7: 1471224. https://doi.org/10.3389/frai.2024.1471224<nowiki/>.''' </div> Tan and Maravilla provide theoretical grounding for understanding how generative AI can be integrated into pedagogy without compromising academic integrity, arguing that responsible implementation depends on alignment with constructivist learning theory and self-determination theory. The authors position AI not as a threat to authentic learning but as a catalyst that necessitates pedagogical transformation—shifting from transmission models toward environments where students actively construct knowledge using AI as one tool among many. Their framework emphasizes process transparency through explicit discussion of AI's role in knowledge construction and ethical reflection through examining how GAI outputs are generated, what assumptions they embed, and where they may mislead or constrain inquiry. This work addresses pedagogy-as-entanglement by showing how GAI forces educators to make visible the epistemic practices that traditional assessment often left implicit: citation tracing, source evaluation, argument construction, and the iterative nature of scholarly writing. Tan and Maravilla argue that rather than banning AI to preserve integrity, educators should redesign assessment to require demonstration of process—portfolios showing prompt refinement, comparison of AI outputs with human-authored sources, and metacognitive reflection on when and why AI was consulted. Their synthesis of educational theory with practical implementation strategies makes this work useful for understanding how pedagogy must evolve to treat AI as both subject matter (what students must understand about how AI functions) and scaffolding (how AI can support learning when used transparently and reflectively). <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Yim, Iris Heung Yue, and Jiahong Su. 2025. “Artificial Intelligence (AI) Learning Tools in K-12 Education: A Scoping Review.” ''British Journal of Educational Technology'' 56 (1): 169–196. https://doi.org/10.1007/s40692-023-00304-9<nowiki/>.''' </div> Yim and Su's scoping review of AI literacy education in K-12 contexts provides grounding for understanding how pedagogy approaches AI as an object of study, not merely as a tool, revealing how students across age groups learn to understand, critique, and create with AI systems. The authors document how intelligent agents (Google Teachable Machine, Learning ML) and software platforms (Scratch, Python) enable students to engage with AI's underlying mechanisms—training models, observing how data shapes outputs, and experiencing firsthand how algorithmic decision-making operates. This approach treats AI as epistemological phenomenon: students don't just use pretrained models but build simple systems themselves, making visible how AI "learns" and where its learning breaks down (limited training data, biased datasets, inability to generalize beyond training conditions). Yim and Su's synthesis of pedagogical strategies—project-based learning where students create AI applications, human-computer collaboration examining how humans and machines complement each other, and game-based approaches making AI concepts accessible—demonstrates how educators scaffold understanding from concrete manipulation to abstract reasoning about intelligence and automation. The review's attention to cognitive, affective, and behavioural learning outcomes moves beyond narrow skill acquisition to examine how AI literacy shapes students' broader epistemic stance: understanding AI's capabilities and limitations, recognizing when algorithmic solutions are appropriate, and developing critical awareness of AI's social implications. Their emphasis on age-appropriate pedagogies and the importance of unplugged activities (learning AI concepts through physical manipulation before digital implementation) provides models for how pedagogy must adapt to learners' developmental stages when teaching about AI systems. This work's K-12 focus complements higher education studies in this section by showing how foundational AI literacy built through hands-on exploration creates readiness for more sophisticated critical engagement with AI as both tool and object of study in advanced scholarship. == Service and Peer Review == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Checco, Alessandro, Lorenzo Bracciale, Pierpaolo Loreti, Stephen Pinfield, and Giuseppe Bianchi. 2021. “AI-Assisted Peer Review.” ''Humanities and Social Sciences Communications'' 8: 25. https://doi.org/10.1057/s41599-020-00703-8<nowiki/>.''' </div> Checco et al.'s study represents crucial early (pre-GenAI) empirical work demonstrating that AI can predict peer review outcomes based on "superficial" manuscript features—readability metrics, formatting consistency, reference list structure, linguistic patterns—with surprising accuracy, training neural networks on 3,300 conference papers to correlate these proxy measures with eventual accept/reject decisions. This finding has profound implications for understanding AI's operational role: the research reveals that much of what passes as peer review judgment operates on detectable patterns (clear writing, proper citation formatting, adherence to disciplinary conventions) that AI can identify and assess, potentially automating routine quality checks and flagging submissions unlikely to meet standards. However, the authors explicitly position their work as supporting "semi-automated" rather than fully automated review, emphasizing AI's role in pre-screening and administrative tasks (matching manuscripts with reviewers based on topic modelling, identifying obvious deficiencies) rather than intellectual evaluation. The paper's most valuable contribution lies in its systematic exploration of ethical implications: algorithmic bias risks (AI might penalize unconventional but innovative work, discriminate against non-native English writers, favour institutional prestige markers), transparency requirements (making AI decision criteria auditable), and the necessity of human oversight to prevent automation from calcifying existing disciplinary hierarchies. By documenting both AI's predictive capabilities on operational dimensions and its inherent limitations on substantive judgment, Checco et al. provide empirical foundation for designing peer review systems where AI handles standardized identification tasks while human expertise remains authoritative for evaluative assessment, directly instantiating the core principle that operational assistance must not migrate into epistemic territory. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Hosseini, Mohammad, and Serge P. J. M. Horbach. 2023. “Fighting Reviewer Fatigue or Amplifying Bias? Considerations and Recommendations for Use of ChatGPT and Other Large Language Models in Scholarly Peer Review.” ''Research Integrity and Peer Review'' 8 (1): 15. https://doi.org/10.21203/rs.3.rs-2587766/v1<nowiki/>.''' </div> Published early in the ChatGPT era, Hosseini and Horbach's analysis provides a prescient examination of how LLM integration transforms both the pragmatics and ethics of peer review labour. The authors document LLMs' potential to combat reviewer fatigue by automating time-consuming tasks—transforming informal reviewer notes into polished reports, generating structured feedback on manuscript sections, identifying linguistic or formatting issues—thereby potentially expanding the pool of contributors who can participate effectively despite language barriers or time constraints. However, the article's core contribution lies in its still-useful systematic identification of risks that emerge when operational assistance crosses into epistemic territory: LLMs trained on existing literature may amplify disciplinary biases (favouring established paradigms over novel approaches), geographic biases (privileging research contexts well-represented in training data), or methodological orthodoxies (flagging unconventional designs as errors rather than innovations). The authors demonstrate through examples how ChatGPT can generate cynical or biased reviews that violate Mertonian norms of universalism, and how confidentiality breaches can occur when reviewers input manuscript excerpts into external AI platforms without institutional safeguards. Hosseini and Horbach's recommendations—mandatory disclosure of LLM use in reviews, human accountability for all AI-generated content, training in bias recognition, and institutional policies prohibiting upload of confidential materials—have influenced subsequent journal guidelines and provide foundational ethical framework for understanding why guardrails against leakage and disclosure norms become operational necessities rather than optional best practices in AI-entangled peer review systems. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Shcherbiak, Anna, Hooman Habibnia, Robert Böhm, and Susann Fiedler. “Evaluating Science: A Comparison of Human and AI Reviewers.” ''Judgment and Decision Making'' 19 (2024): e21. https://doi.org/10.1017/jdm.2024.24<nowiki/>.''' </div> In this study, a large-scale field experiment comparing GPT-4 with human reviewers on conference abstracts provides empirical evidence about AI's capabilities and limitations in evaluative judgment. It demonstrates that while AI can approximate human performance on certain classification tasks—identifying "very best" abstracts shows moderate alignment—detailed evaluative assessments reveal persistent gaps, with human-AI agreement comparable to human-human variability, suggesting AI does not systematically outperform baseline reviewer disagreement. Critically, the research shows humans substantially outperform AI at detecting AI-generated versus human-written content, with detection tools like GPTZero exhibiting higher accuracy than GPT-4 itself when evaluating authorship. This finding has direct implications for peer review integrity when AI-generated manuscripts enter the submission pipeline. The authors position AI as effective for prescreening—rapidly filtering submissions for basic quality thresholds, identifying obvious errors, flagging compliance issues—while demonstrating it lacks the contextual understanding necessary for nuanced scientific judgment about significance, impact, or methodological soundness. The paper's methodological rigor in isolating human-versus-AI performance dimensions provides context for understanding where operational assistance (screening) legitimately ends and where human evaluative authority (substantive assessment) must begin, directly addressing the guiding principle that human judgment remains central even in AI-augmented workflows. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Lim, Gim Hui, M. L. Tan, V. C. W. Hoe, and D. Koh. 2025. “Generative AI in Peer Review Process for Occupational Health.” ''Occupational Medicine'' 75 (5): 242–49. https://doi.org/10.1093/occmed/kqaf051.''' </div> Lim and colleagues' empirical study comparing Microsoft Copilot, ChatGPT, and Google Gemini against human reviewers on eight occupational health manuscripts provides granular quantitative evidence about AI's operational capabilities and limitations in peer review tasks. The research demonstrates that AI tools significantly outperform humans in providing feedback (mean score 3.44 vs. human baseline, p<0.001) across dimensions of relevance, completeness, accuracy, error identification, and constructiveness—documenting AI's strength in systematic checking tasks like identifying missing citations, flagging methodological inconsistencies, noting formatting errors, and pointing out unclear explanations. However, humans substantially outperform AI in generating actionable recommendations (mean score 3.36, p<0.01), with AI showing particular deficiencies in suggesting substantive revisions, connecting findings to broader literature, or identifying conceptual limitations. This performance asymmetry instantiates the operational/epistemic division: AI excels at identification tasks (what's wrong, what's missing) but struggles with evaluative tasks (how to improve, what matters). The study also quantifies efficiency gains (AI reviews complete in 11 minutes versus 45 for humans) while documenting critical limitations: AI outputs contain fabricated references, generate plausible-sounding but inaccurate technical assertions, and require human verification to prevent propagation of errors. Lim et al.'s work demonstrates that even when AI shows superior performance on specific metrics, its integration into peer review requires careful task decomposition—leveraging speed and comprehensiveness for checking functions while preserving human authority for substantive guidance—making it essential evidence for designing hybrid human-AI workflows where operational assistance enhances rather than replaces evaluative expertise. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Sun, Zhuanlan. 2025. “Large Language Models in Peer Review: Challenges and Opportunities.” ''Scientometrics 130(10): 5503–5546''. https://doi.org/10.1007/s11192-025-05440-w<nowiki/>.''' </div> Sun provides essential mapping of LLM applications across the peer review lifecycle, categorizing five distinct operational roles: checklist assistants for formatting and protocol adherence, reviewer selection aids that match manuscripts with appropriate expertise, feedback generators for preliminary assessments, bias detectors that flag methodological or statistical irregularities, and agents that coordinate multi-stage review workflows. The article systematically examines technical approaches including prompt engineering strategies, model evaluation frameworks, and architectural designs for integrating LLMs into editorial management systems. The author argues that while LLMs excel at standardized operational tasks—checking reference integrity, identifying duplicated content across submission databases, verifying compliance with reporting guidelines—they remain fundamentally limited in assessing research novelty, theoretical contributions, and domain-specific methodological rigor. The analysis emphasizes that current LLM limitations (inadequate scientific validation, domain knowledge gaps, inability to analyze complex datasets, ethical concerns around bias perpetuation) position them as supportive tools within human-led processes rather than autonomous decision-makers. This work is useful in understanding operational versus epistemic divisions of labor in AI-assisted scholarship service and documenting the technical infrastructure through which AI becomes entangled with peer review operations while maintaining clear boundaries around human evaluative judgment. == AI and Scholarship Infrastructures == === Organizational Infrastructures === <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Batool, Amna, Didar Zowghi, and Muneera Bano. 2025. “AI Governance: A Systematic Literature Review.” ''AI and Ethics'' 5: 3265–3279. https://doi.org/10.1007/s43681-024-00653-w''' </div> Batool and colleagues' (2025) systematic literature review offers a comprehensive mapping of AI governance across multiple levels—team, organization, industry, national, and international. The authors utilize a structured analytical framework that examines who governs (stakeholders and roles), what is governed (data, algorithms, systems), when governance occurs (stages in the AI lifecycle), and how it is implemented (frameworks, tools, policies). The article reveals that current governance practices remain fragmented and inconsistent, with significant gaps at the national and international levels. Applied to the context of higher education, this multi-level perspective is essential for understanding how research institutions must position themselves within broader governance ecosystems. Because organizational governance currently operates without clear external scaffolding, research institutions are often forced to improvise institutional arrangements rather than implement established templates. While the paper is broad in scope, its categorization of governance artifacts illuminates the range of mechanisms available to scholarly organizations: from technical tools like algorithmic auditing to organizational structures like ethics committees. Ultimately, the authors' findings highlight the challenges facing research institutions as they attempt to coordinate AI oversight across distributed, autonomous units—such as libraries implementing discovery tools or IT departments deploying infrastructure—demonstrating why cross-functional coordination is both necessary and difficult when existing governance structures were not designed to span these boundaries. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Hadley, Emma, Alan Blatecky, and Megan Comfort. 2025. “Investigating Algorithm Review Boards for Organizational Responsible Artificial Intelligence Governance.” ''AI and Ethics'' 5: 2485–2495. https://doi.org/10.1007/s43681-024-00574-8''' </div> Hadley and colleagues provide empirical documentation of algorithm review boards (ARBs) as organizational governance mechanisms, interviewing technical contributors across sectors to examine ARB membership, scope, success factors, and limitations. Their findings reveal ARBs as cross-functional bodies integrating diverse expertise (technical specialists, ethicists, domain experts, legal advisors, non-specialist stakeholders) to review AI systems for potential risks and harms, operating alongside other responsible AI approaches like policies, audits, and dedicated governance roles. The study's key insight that institutional review boards alone prove insufficient for algorithm governance and that ARBs function most effectively when integrated with existing organizational processes rather than operating as isolated oversight bodies speaks directly to research institutions' governance challenges. The article's documentation of financial tensions between profit motives and responsible AI costs, while focused on commercial contexts, translates to research institutions facing pressure to adopt AI for efficiency gains while managing ethical risks with constrained resources. Hadley et al.'s call for standardized ARB effectiveness metrics points to the broader challenge of demonstrating governance value in organizations where responsible AI practices compete with other institutional priorities for attention and investment. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Janssen, Marijn. 2025. “Responsible Governance of Generative AI: Conceptualizing GenAI as Complex Adaptive Systems.” ''Policy and Society'' 44 (1): 38–51. https://doi.org/10.1093/polsoc/puae040''' </div> Janssen's conceptual article reframes generative AI governance as managing complex adaptive systems characterized by co-evolution, emergent properties, and non-linear interactions between technical and social elements, directly challenging technology-deterministic approaches that treat AI as static tool requiring one-time organizational accommodation. This systems perspective is essential for understanding why research institutions struggle with AI governance: the article demonstrates how AI systems and organizational contexts mutually shape each other through feedback loops, making governance an ongoing adaptive process rather than implementation of fixed policies. Janssen argues that effective organizational stewardship requires holistic, outward-focused governance attending to how AI systems interact with broader organizational processes, public values, and societal concerns—moving beyond narrow risk mitigation to address joint accountability across system components including people, policies, data, and algorithms. For research institutions embedding AI in knowledge infrastructures, this framing illuminates why isolated departmental responses prove insufficient: cataloging systems using AI for metadata generation, research platforms deploying AI for literature synthesis, and administrative systems using AI for resource allocation together constitute an organizational AI ecosystem whose emergent behaviors cannot be governed through component-level oversight alone. The article's emphasis on selecting and combining appropriate policy instruments into adaptive governance packages provides conceptual foundation for cross-functional coordination mechanisms, suggesting that effective institutional stewardship requires deliberate orchestration of technical standards, organizational procedures, and stakeholder engagement processes that together shape AI's organizational trajectory. Janssen's work underscores that AI governance is not primarily technical implementation challenge but organizational transformation requiring institutions to develop new capabilities for managing sociotechnical co-evolution. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Papagiannidis, Emmanouil, Patrick Mikalef, and Kieran Conboy. 2025. “Responsible Artificial Intelligence Governance: A Review and Research Framework.” ''The Journal of Strategic Information Systems'' 34 (2): 101885. https://doi.org/10.1016/j.jsis.2024.101885''' </div> Papagiannidis and colleagues provide theoretical grounding for understanding how organizations operationalize responsible AI principles through governance structures. Their scoping review synthesizes disparate literature to construct a conceptual framework differentiating between structural practices (formal roles, committees, reporting lines), relational practices (stakeholder engagement, accountability mechanisms), and procedural practices (auditing protocols, monitoring systems) across the AI lifecycle. This tripartite framework is valuable for research institutions navigating the challenge of translating broad ethical commitments into actionable organizational arrangements. The article explicitly addresses how governance antecedents like leadership commitment and regulatory pressure shape implementation, and how governance practices in turn affect outcomes like trust, compliance, and innovation capacity. The authors' critical reflection on responsible AI governance reveals tensions inherent to institutional stewardship: between centralized oversight and distributed expertise, between standardized protocols and context-sensitive judgment, between rapid AI deployment and deliberative ethical review. For research organizations managing AI's entanglement with knowledge infrastructures, this work provides vocabulary and analytical categories for diagnosing governance gaps and designing institutional responses that embed responsibility throughout organizational systems rather than treating ethics as external constraint. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Weber, Michael, Martin Engert, Norman Schaffer, Jörg Weking, and Helmut Krcmar. 2023. “Organizational Capabilities for AI Implementation—Coping with Inscrutability and Data Dependency in AI.” ''Information Systems Frontiers'' 25: 1549–1569. https://doi.org/10.1007/s10796-022-10297-y''' </div> Weber and colleagues identify four organizational capabilities essential for AI implementation, addressing AI's distinctive characteristics that distinguish it from previous information technologies: inscrutability (difficulty predicting probabilistic outputs and explaining decision processes) and data dependency (reliance on high-quality, continuously updated data for system performance). Their capability framework—encompassing AI Project Planning, Co-Development, Data Management, and AI Model Lifecycle Management—provides actionable guidance for research institutions developing internal capacity to steward AI systems. The article's grounding in expert interviews from diverse organizational contexts reveals that AI implementation failures often stem not from technical deficits but from organizational incapacity to manage sociotechnical complexity: inscrutability requires enhanced planning and stakeholder communication practices to align expectations around uncertain outcomes, while data dependency demands robust governance of data quality, provenance, and evolution throughout systems' operational lives. For research organizations, these capabilities map onto critical institutional functions: libraries developing metadata systems must manage data quality for AI cataloging tools; research offices supporting computational scholarship must plan projects acknowledging unpredictable AI behavior; IT departments maintaining infrastructure must implement lifecycle management ensuring model performance doesn't degrade as institutional data changes. The article's emphasis on Co-Development capability—bringing together technical specialists, domain experts, and end-users to jointly shape AI systems—speaks directly to cross-functional coordination challenges in research institutions where AI touches multiple organizational domains. Weber et al.'s framework reveals that organizational stewardship requires not just governance structures (committees, policies, review processes) but operational capabilities (planning methods, collaboration practices, technical procedures) embedded in day-to-day institutional work. This capability perspective shifts attention from abstract principles to concrete organizational competencies that determine whether responsible AI rhetoric translates into institutional practice. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Wu, Chuhao, He Zhang, and John M. Carroll. 2024. “AI Governance in Higher Education: Case Studies of Guidance at Big Ten Universities.” Preprint, ''arXiv'', September 3. https://doi.org/10.48550/arXiv.2409.02017''' </div> Wu and colleagues provide rare empirical documentation of how major research universities translate AI governance principles into institutional practice, examining guidance documents from fourteen Big Ten universities to identify organizational patterns and role-specific strategies. Their analysis reveals three key organizational dimensions: multi-unit governance involving information technology departments, teaching and learning centers, libraries, and research offices operating with distributed authority rather than centralized control; role-specific guidance differentiating expectations for faculty, students, staff, and researchers rather than applying uniform policies; and educational-advisory approaches emphasizing learning and adaptation over compliance enforcement. This case-study evidence illuminates the pragmatic challenges research institutions face when operationalizing AI oversight: how to coordinate across functional silos with different mandates, expertise, and risk tolerances; how to balance flexibility (needed because AI applications vary dramatically across contexts) with consistency (needed to ensure institutional values are upheld); how to position governance as enabling innovation rather than constraining it. The article's documentation of specific institutional mechanisms, such as data classification systems limiting what information can be shared with AI tools, or Socratic guidance approaches that pose questions rather than dictate answers, provides concrete examples of organizational stewardship in action. For understanding AI's organizational entanglement with knowledge infrastructures, this work demonstrates how governance emerges through negotiation among multiple institutional actors, each bringing domain expertise and jurisdictional claims, requiring coordination mechanisms that existing organizational charts may not accommodate. === Publishing, Communication, Engagement Infrastructures === <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bergstrom, Tracy, and Dylan Ruediger. 2024. “A Third Transformation? Generative AI and Scholarly Publishing.” ''Ithaka S+R''. October 30, 2024. https://doi.org/10.18665/sr.321519''' </div> Drawing on interviews with leaders from publishers, technology disruptors, academic libraries, and scholarship, Bergstrom and Ruediger map the strategic landscape of AI adoption across the publishing industry. The report identifies a bifurcated future: an incrementalist scenario where AI produces efficiency gains without fundamentally altering industry dynamics, versus a transformative scenario creating disruption comparable to or exceeding previous digital transformations. For search and discovery, most interviewees anticipate heavy AI impact, with tools already expanding capabilities through summarization and chatbot interfaces—potentially disrupting the linear progression from discovery to understanding by introducing AI-enabled synthesis. For peer review, interviewees expressed optimism that AI could address chronic strain through "pre-review" feedback, assistance with copy editing and misconduct detection, and more efficient reviewer identification, while raising concerns about accuracy, confidentiality, and maintaining human judgment in evaluation. The authors document a competitive threat from large technology companies: scenarios where commercial LLMs become default interfaces for accessing scholarly content pose significant challenges to publisher positioning. Content licensing to foundation model developers offers clear monetization paths, but broader revenue implications remain uncertain. The analysis identifies a critical research integrity challenge: ensuring transparent standards for AI usage while upholding provenance, attribution, reproducibility, and transparency in an environment of increasing automation. Smaller publishing organizations may struggle to match larger entities' adaptive capacity, potentially accelerating industry consolidation. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Broussard, Meredith. 2023. “The Challenges of AI Preservation.” ''The American Historical Review'' 128 (3): 1378–81. https://doi.org/10.1093/ahr/rhad366.''' </div> Broussard illustrates how the current impermanence of digital storage is producing a nightmare for future historians, as content is hidden away by licensing agreements or simply disappears when its host platform ceases to exist. Earlier ideals of the internet preserving a “complete first draft of history” are far from the reality, and problems only intensify when considering the development of AI, which Broussard compares to the printing press. For example, one could access a record of a physical newspaper published on a given day, but Google Search’s software is constantly changing with no canonical daily version, which means no historian could ever hope to examine a comparable snapshot of an AI. Operations like the Internet Archive and the development of emulation can help diminish losses, but it must be recognized that the digital world is decaying. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Buitrago-Ciro, Jairo, Marta Samokishyn, Rachel Moylan, Jonathan Hernández Pérez, Oluwabunmi Bakare-Fatungase, and Carmel Firdawsi. 2025. “Bridging the AI Gap: Comparative Analysis of AI Integration, Education, and Outreach in Academic Libraries.” ''IFLA Journal'' 51 (3): 682–702. https://doi.org/10.1177/03400352251325274. ''' </div> Buitrago-Ciro et al. examine the websites of 40 libraries in North America, Western Europe, Latin America, and Africa to explore how they have integrated AI technologies into their services, policies, and outreach efforts. Overall, the authors found a geographic divide in the integration of AI into library services, because almost all North American and European libraries had AI educational outreach activities and resources, while only five (out of ten) Latin American libraries and one (out of ten) African libraries did outreach activities. However, AI integration into library services and development of library AI policies and guidelines was more uncommon across all regions, as less than half of North American and European libraries engaged in these activities, while only one library in Latin America and one in Africa integrated AI into their services and none had specific library AI policies. These regional differences in AI integration stem from each region’s socioeconomic contexts, social inequalities, and technological gaps that present additional challenges for AI adoption in African and Latin American libraries. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Gulson, Kalervo N., and P. Taylor Webb. 2023. “Steering the Mind Share: Technology Companies, Policy and Artificial Intelligence Research in Universities.” ''Discourse: Studies in the Cultural Politics of Education'' 44 (2): 195–207. https://doi.org/10.1080/01596306.2021.1981828. ''' </div> Gulson and Webb (2023) examine how major technology companies are actively reshaping the landscape of artificial intelligence research within universities. Drawing on interviews with computer scientists as part of a broader international project, the authors investigate three key areas: the influence of tech companies on AI research practices, the policy frameworks that foster academia-industry collaborations, and the role of "open science" in facilitating the transfer of academic ideas to the corporate sector. The study highlights that the boundaries between academic and corporate research have become highly porous. Companies like Google do not merely act as external funders; they are deeply embedded within university ecosystems, actively steering research directions. Furthermore, the authors illustrate how national policies, such as Canada’s Pan-Canadian Artificial Intelligence Strategy, legitimize and accelerate this corporate influence by heavily incentivizing industry partnerships. While these collaborations provide universities with crucial resources and drive innovation, Gulson and Webb warn that they also raise significant concerns regarding conflicts of interest and the corporatization of open science. Ultimately, the authors argue that corporate funding creates powerful feedback loops among tech companies, policymakers, and academics, effectively allowing industry to capture the "mind share" of university research. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Kousha, Kayvan, and Mike Thelwall. 2024. “Artificial Intelligence to Support Publishing and Peer Review: A Summary and Review.” ''Learned Publishing'' 37 (1): 4–12. https://doi.org/10.1002/leap.1570''' </div> Kousha and Thelwall provide a systematic mapping of AI tool deployment across the scholarly publishing pipeline, distinguishing demonstrated capabilities from promotional claims. For journal recommendation, the review documents AI-powered systems, including Springer Nature Journal Suggester, Wiley Journal Finder, IEEE Publication Recommender, and JANE (Journal/Author Name Estimator), that analyze text similarity with previously published articles and reports high accuracy rates for appropriate journal matching. The analysis of initial quality control covers a diverse toolkit for plagiarism detection, robot author detection, methods checking, automated statistical verification, transparency and reproducibility checking and manuscript structure validation. Commercial systems draw on databases to suggest appropriate reviewers; the Natural Science Foundation of China's AI-assisted reviewer recommender for grant applications reports approximately 80% accuracy. However, the review identifies a critical boundary: while AI proves effective for finding reviewers and conducting initial quality checks, its value in performing the actual substantive review process "has not been clearly demonstrated." The synthesis reveals that substantial efficiency improvements are achievable in labor-intensive administrative tasks, while human judgment remains integral to core intellectual evaluations—a distinction essential for understanding where AI integration in publishing will proceed incrementally versus face fundamental obstacles. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Ma, Lai. 2024. “Generative AI for Academic Publishing? Some Thoughts About Epistemic Diversity and the Pursuit of Truth.” ''KULA: Knowledge Creation, Dissemination, and Preservation Studies'' 7 (1): 1–5. https://doi.org/10.18357/kula.287.''' </div> Ma (2024) critiques the integration of generative AI in academic publishing, arguing that the drive for automation threatens the central values of epistemic diversity and bibliodiversity. By invoking the "Sokal Hoax," the author illustrates the danger of AI-generated "bullshit"—content that mimics the formal structures of scholarship while remaining devoid of actual meaning. Ma specifically uses Scopus AI as a case study to demonstrate how the platformization of scholarly data creates a feedback loop that reinforces the "Matthew Effect," where established, English-language, and well-resourced publications are disproportionately amplified. This process, Ma warns, leads to "epistemic injustice" by marginalizing non-Western research and niche topics that are underrepresented in training datasets. The paper serves as a vital warning: without robust data surveillance and human-centric safeguards, the AI-accelerated publishing model may exacerbate peer-review crises and citation monopolies, ultimately undermining the public trust and diverse knowledge creation that open scholarship aims to protect. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Mitchell, Peta, Michelle Riedlinger, Jake Goldenfein, Aaron Snoswell, Jean Burgess, and Kevin Witzenberger. 2025. “Research Genai: Situating Generative AI in the Scholarly Economy.” ''AoIR Selected Papers of Internet Research''. https://doi.org/10.5210/spir.v2024i0.14006.''' </div> Mitchell et al. focus upon the oft-overlooked subfield of Generative AI tools known as “RGAI”, research-focused models which they argue represent “complex sociotechnical systems.” Hepp et al.’s definition of AI as a “sensitizing concept” and Watermeyer’s consideration of AI as a “labor accelerator” are used to situate this argument within the “scholarly economy” before the authors expand upon these theories, arguing RGAI should be approached as a form of “platform capitalism” akin to academia.edu. To evidence this stance, the authors examine the highly distinct RGAI models “Consensus” and “Writefull” as case studies. “Consensus” is designed to produce an academic “ConsensusMeter” by combining a proprietary LLM with OpenAI technology, while “Writefull” “aims to simplify… the often challenging task of scholarly writing” by employing custom AI models. Mitchell et al. highlight that although both tools are presented as independent and bespoke, they have major corporate backing. This deeply conflicts with the research principles of open scholarship, so Mitchell et al. aim to develop an index of RGAI which are appropriate for use in research. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Pividori, Milton, and Casey S. Greene. 2024. “A Publishing Infrastructure for Artificial Intelligence (AI)-Assisted Academic Authoring.” ''Journal of the American Medical Informatics Association'' 31 (9): 2103–13. https://doi.org/10.1093/jamia/ocae139''' </div> The Manubot AI Editor implements a concrete technical solution to the provenance problem in AI-assisted scholarship through three integrated components: a Python library, a GitHub Actions workflow, and a prompt generator. This architecture addresses provenance directly: all changes are tracked through version control, creating a clear audit trail distinguishing human-authored from machine-generated text and documenting exactly how AI suggestions were accepted, modified, or rejected. Evaluation proceeded through five case studies using both human and automated assessment. Human evaluators assessed whether revisions preserved original meaning and important details, avoided introducing incorrect information, and maintained correct formatting. Automated "LLM-as-a-Judge" iterative assessment evaluated paragraph pairs across criteria including sentence structure clarity, ease of understanding, and grammatical correctness. The evaluations found that models could grasp complex academic concepts and enhance text quality, with particular effectiveness in text-based sections like introductions and discussions. The human-in-the-loop design, where AI suggestions function as proposed edits rather than direct insertions, mitigates risks of incorrect information while preserving authorial agency over final content. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Razack, Habeeb Ibrahim Abdul, Sam T. Mathew, Fathinul Fikri Ahmad Saad, and Saleh A. Alqahtani. 2021. “Artificial intelligence-assisted tools for redefining the communication landscape of the scholarly world.” ''Science Editing''. https://doi.org/10.6087/kcse.244 ''' </div> Razack et al. argue AI will transform publishing into a technology-driven industry, streamlining dissemination of scholarship “for the betterment of humankind.” Exploring current trends via case studies, they emphasize AI’s impact upon human performance over its independent “creative” role. They argue AI could benefit the “prospective” researcher by predicting an article’s “citation impact”, identifying evolving research trends, and locating relevant research journals to publish in, cutting past low-charging and “predatory OA journals” which “malign integrity” by publishing “compromised content.” Meanwhile, “retrospective” editors could employ AI to detect plagiarism, streamline peer review, and format publications. For Razack et al., the rise of AI can therefore be compared to the rise of the typewriter, swift adoption likely promoting ‘human-machine collaboration’ over replacement. === Accountability-related Infrastructures === <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Ngulube, Patrick, and Neema Florence Vincent Mosha. 2024. “Integrating Artificial Intelligence-Based Technologies ‘Safely’ in Academic Libraries: An Overview through a Scoping Review.” ''Technical Services Quarterly'' 42(1): 46–67. https://doi.org/10.1080/07317131.2024.2432093''' </div> Ngulube and Mosha (2025) conduct a scoping review examining the state of research on ethical issues and perceived risks in AI integration within academic libraries. Analyzing 28 studies published before 2024, the authors reveal that research on safe AI adoption in libraries remains nascent, with significant gaps in theoretical grounding and methodological diversity. The review identifies critical ethical concerns including algorithmic bias, privacy violations, reduced transparency and accountability, and job displacement—yet finds that existing literature disproportionately emphasizes employment risks while neglecting environmental and planetary impacts. The authors note that ethical considerations have not taken center stage in library and information science research, as evidenced by the scarcity of relevant keywords and abstracts in the literature. A major finding is that most studies employ quantitative methodologies at the expense of qualitative and mixed-methods approaches, and only 18% employ explicit theoretical frameworks. The review underscores that academic libraries must navigate the dual challenge of leveraging AI's operational efficiencies while ensuring ethical standards of inclusivity, accessibility, and fair information use—a task complicated by the absence of established best practices and the need for human-centered approaches to AI governance. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''“Realising Potential, Supporting Users: IFLA Statement on Copyright and Artificial Intelligence.” n.d. IFLA. Accessed May 1, 2025. https://www.ifla.org/news/realising-potential-supporting-users-ifla-statement-on-copyright-and-artificial-intelligence/. ''' </div> This statement aims to help IFLA member libraries in navigating copyright issues and developing programs relevant to AI, positioning libraries as innovators “uniquely situated to lead” in supporting, training, and utilizing AI. However, restrictions stem from rightsholders, economic and moral copyright laws, and health, safety, and privacy laws. Libraries should therefore be guided by the most appropriate policy sources to mitigate restrictions by ensuring AI tools do not compromise areas of concern. Libraries are further recommended to advise decision-makers to permit mining legally accessed content, address bias by promoting “the widest possible access”, build capacity, awareness, and training for evolving technologies, and monitor AI standards. Governments are recommended to follow existing human rights regulations, avoid using copyright law as a “blunt force tool”, develop ethical AI practices, and fund repositories of AI training data - alongside AI companies themselves. Both rightsholders and vendors are advised to avoid language in contracts which restricts the use of AI or prevents exceptions. Overall, this document aims to promote AI by making as much content available as possible. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Werder, Karl, Balasubramaniam Ramesh, and Rongen (Sophia) Zhang. 2022. “Establishing Data Provenance for Responsible Artificial Intelligence Systems.” ''ACM Transactions on Management Information Systems'' 13 (4): 1–25. https://doi.org/10.1145/3503488''' </div> Werder et al. provide a framework for understanding audit trails in the context of AI and research data management, arguing that robust data provenance is not merely a technical feature but a prerequisite for achieving accountability in AI systems. They detail the requirements for a comprehensive provenance system, capable of tracking data from its origin through various transformations and into model training and deployment. This is directly relevant to research infrastructures, as it outlines how repositories and data management platforms can and must evolve to support AI-driven research. The authors’ multi-layered architectural proposal offers a concrete vision for how a research institution could implement a system to audit data pipelines, identify sources of bias, and ensure regulatory compliance. By connecting provenance to the broader goal of “Responsible AI,” the paper provides the conceptual tools for evaluating whether a research infrastructure’s data governance is sufficient to handle the accountability challenges posed by AI. == Audience == <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''de Angelis, Luigi, Francesco Baglivo, Guglielmo Arzilli, Gaetano Pierpaolo Privitera, Paolo Ferragina, Alberto Eugenio Tozzi, and Caterina Rizzo. “ChatGPT and the Rise of Large Language Models: The New AI-Driven Infodemic Threat in Public Health.” ''Frontiers in Public Health'' 11 (2023): 1166120. https://doi.org/10.3389/fpubh.2023.1166120''' </div> De Angelis and colleagues examine the emergence of Large Language Models, particularly ChatGPT, as a novel public health threat through the lens of "AI-driven infodemic." The authors trace the rapid evolution of LLMs from earlier transformer-based models through GPT-3 to ChatGPT, highlighting how each iteration has increased the capacity to generate fluent, authoritative-sounding text at scale. Critically, they identify a fundamental misalignment problem: despite efforts to fine-tune these models through reinforcement learning from human feedback, LLMs remain prone to generating plausible-sounding but factually incorrect or fabricated information—a vulnerability particularly dangerous in medical and health contexts. The paper's central argument is that the unprecedented speed and volume at which LLMs can produce convincing content creates conditions for misinformation spread on a scale previously impossible, especially among non-expert publics who lack the epistemic resources to detect AI-generated falsehoods. The authors emphasize that the inability to reliably detect AI-produced text compounds this threat, undermining public trust in scientific institutions and potentially influencing health-related behaviors and policy decisions. The work demonstrates how LLM-mediated scientific communication poses distinct risks to knowledge integrity and public understanding, requiring urgent development of detection mechanisms, governance frameworks, and media literacy initiatives to protect audiences from AI-driven epistemic harm. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Bryant, Rebecca. 2024. “Implementing an AI Reference Chatbot at the University of Calgary Library.” ''Hanging Together'', December 12. https://hangingtogether.org/implementing-an-ai-reference-chatbot-at-the-university-of-calgary-library/''' </div> Bryant (2024) details the development and implementation of "T-Rex," an AI-powered reference chatbot at the University of Calgary Library, based on a webinar hosted by the OCLC Research Library Partnership. While the library had offered live chat services since the early 2010s, the COVID-19 pandemic caused a massive surge in demand, peaking at over 3,000 inquiries in a single month. To alleviate this strain, the library analyzed past chat transcripts and determined that 12–14% of inquiries were simple, directional questions suitable for automation. To prevent scope creep during the initial training phase, the development team focused on a core set of fifty common questions. Through continuous refinement, the chatbot has since expanded to encompass over 1,000 custom responses, though its effectiveness remains limited by the availability of existing library webpages or FAQs to draw from. Bryant concludes by summarizing the Calgary team's key insights for institutions developing similar tools: developers must anticipate out-of-scope or non-library questions, recognize that users prefer direct answers over links to webpages, program creative responses for off-topic queries, and prepare for user resistance or non-adoption. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Hara, Noriko, Eugene Kim, Shohana Akter, and Kunihiro Miyazaki. 2025. “Exploring the Dynamics of Interaction About Generative Artificial Intelligence Between Experts and the Public on Social Media.” ''Journal of Science Communication'' 24 (1): A02. https://doi.org/10.22323/2.24010202''' </div> Hara and colleagues conduct an empirical investigation into how experts and the public co-produce knowledge about generative AI on social media, specifically analyzing X (formerly Twitter) discussions. Rather than treating the public as passive consumers of expert knowledge, the authors adopt a Public Engagement with Science (PES) framework that recognizes social media platforms as dynamic arenas where non-experts actively contribute to shaping collective understanding of emerging technologies. Through computational and manual analysis, they identify distinct discussion topics, map the roles that both experts and laypeople play in knowledge production, and examine how engagement metrics correlate with these roles. A critical finding is that the public functions beyond questioners seeking expert guidance, but rather as active knowledge co-producers who share practical insights, challenge claims, and contribute their own perspectives and experiences with GenAI tools. This research demonstrates how AI itself—as a subject of discourse—becomes a site of negotiated meaning-making between differently positioned actors. The work moves beyond traditional one-way dissemination models to reveal the interactive, participatory nature of contemporary science communication, with implications for understanding how diverse audiences collectively construct understanding of transformative technologies and how this co-productive process shapes both public perception and the future development of AI systems. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Jaillant, Lise, Olivia Mitchell, Eric Ewoh-Opu, and Maribel Hidalgo Urbaneja. 2025. “How Can We Improve the Diversity of Archival Collections with AI? Opportunities, Risks, and Solutions.” ''AI & Society'' 40: 4457–4459. https://doi.org/10.1007/s00146-025-02222-z. ''' </div> Jaillant et al. draw from interviews with 20 academics and archival professionals to explore how AI technologies can help address the lack of diversity in archival collections. The authors highlight that AI tools can assist in automatically detecting racist or inappropriate language in metadata, search large amounts of historical records, and uncover new insights within archival records. However, the authors argue that the deployment of AI should involve close collaboration between librarians, archivists, and developers. The current limited collaboration between developers and libraries limits the ethical and inclusive application of AI in archival collections, especially those with sensitive historical materials. The interviewees also warned against the loss of historical context when using AI, the perpetuation of archival biases, and the loss of control when AI tools are designed and governed by tech companies. To conclude, the authors recommend investing in interdisciplinary AI training programs for archivists, educating AI developers about the unique needs of archives so they can create more relevant solutions, and creating professional guidelines about the best practices for AI use to address the lack of diversity in archival collections. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Peters, Uwe, and Benjamin Chin-Yee. 2025. “Generalization Bias in Large Language Model Summarization of Scientific Research.” ''Royal Society Open Science'' 12 (4): 241776. https://doi.org/10.1098/rsos.241776''' </div> Peters and Chin-Yee provide rigorous, large-scale empirical evidence of a systematic and consequential distortion in LLM-generated scientific summaries: the tendency toward overgeneralization. Testing ten prominent LLMs—including ChatGPT-4o, ChatGPT-4.5, DeepSeek, LLaMA 3.3 70B, and Claude 3.7 Sonnet—on 4,900 summaries of scientific abstracts and full-length articles, the authors demonstrate that even when explicitly prompted for accuracy, most LLMs consistently produce conclusions broader and more definitive than those warranted by the original research. Critically, they identify three specific mechanisms of overgeneralization: the use of generic statements that obscure quantification, the shift from past to present tense (which expands scope), and the omission of qualifiers and limitations. The findings are stark: LLM-generated summaries were nearly five times more likely than human-authored summaries to contain broad generalizations (odds ratio = 4.85, 95% CI [3.06, 7.70], p < 0.001), with newer models performing worse than earlier ones. This research is foundational for understanding how AI-mediated knowledge communication systematically distorts scientific findings at scale, regardless of user expertise or intent. The work demonstrates a concrete mechanism through which LLM intermediation can alter the epistemic content of research, with particular implications for medical and clinical contexts where overgeneralized conclusions can directly influence policy and patient care. The authors propose mitigation strategies including temperature adjustment and systematic benchmarking, but their findings underscore the profound challenge of ensuring faithful knowledge transmission through AI systems. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''da Silva Cardoso, Heike, and Vitor Rocio. 2025. “Enhancing Digital Libraries Through NLP and Recommender Systems: Current Trends and Future Prospects with Large Language Models.” In ''Technology and Innovation in Learning, Teaching and Education: TECH-EDU 2024'', edited by Arsénio Reis, José P. Cravino, Leontios Hadjileontiadis, Paulo Martins, Sofia B. Dias, Sofia Hadjileontiadou, and Tassos Mikropoulos, 69–79. C''ommunications in Computer and Information Science'' 2480. Cham: Springer. https://doi.org/10.1007/978-3-032-02672-9_5''' </div> da Silva Cardoso and Rocio propose a practical framework for integrating Natural Language Processing and Large Language Models into academic digital libraries to address the information overload facing researchers, students, and faculty. Recognizing that traditional search methods have become insufficient in the face of exponential publication growth, the authors advocate for AI-driven recommender systems capable of delivering precise, relevant, and personalized literature recommendations. Their contribution centers on an audience-aware design philosophy that positions librarians as essential partners in system development. Rather than treating AI as a purely algorithmic solution, the authors emphasize that librarians' direct interactions with users provide irreplaceable insight into the nuanced and context-dependent needs of diverse academic communities. This human-in-the-loop approach represents a noteworthy methodological stance: AI functions not as a replacement for human expertise but as a tool to augment librarian knowledge and enhance the responsiveness of knowledge discovery systems. The work is particularly salient for understanding how contemporary LLM-based systems can be designed to serve scholarly audiences more effectively while maintaining the institutional wisdom and user-centered perspective that librarians bring to information work. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''Taneja, Ankit Kumar, and Chandra Tripathi. 2020. “AI-Powered Recommender Systems: Personalization and Bias.” ''Turkish Journal of Computer and Mathematics Education (TURCOMAT)'' 11 (1): 1090–1094. https://doi.org/10.61841/turcomat.v11i1.14406''' </div> Though published before the generative AI era, Taneja and Tripathi's analysis of AI-powered recommender systems remains foundational to understanding algorithmic bias in information discovery. The authors examine the structural tensions inherent in personalization algorithms—systems designed to enhance user experience by tailoring content suggestions yet simultaneously capable of constructing "filter bubbles" and "echo chambers" around users. By continuously recommending content similar to previous engagement, these algorithms systematically exclude novel, dissenting, or interdisciplinary perspectives, undermining serendipitous discovery essential to genuine scholarly inquiry. Critically, the authors frame algorithmic bias not as a technical glitch but as a structural risk embedded within the information architectures that guide knowledge-seekers, and thus they expose how algorithmic personalization—a feature predating generative AI—already demonstrated the capacity to narrow intellectual diversity and reinforce pre-existing beliefs. This pre-GenAI work provides historical context for understanding how contemporary AI systems have intensified these risks, making it useful for evaluating the ethical imperatives of designing systems that promote intellectual openness rather than epistemic closure. <div style="text-indent: -20px; padding-left: 20px; margin-bottom: -10px"> '''de Winter, J. 2024. “Can ChatGPT Be Used to Predict Citation Counts, Readership, and Social Media Interaction? An Exploration Among 2222 Scientific Abstracts.” ''Scientometrics'' 129: 2469–2487. https://doi.org/10.1007/s11192-024-04939-y''' </div> De Winter’s study contrasts conventional scientometrics, testing whether a large language model can predict an article’s citation count and altmetric scores (whilst noting these may be unreliable assessors of actual scientific impact) by rating its abstract across “semantically diverse” variables. His case study uses ChatGPT-4 to predictively evaluate 2,222 abstracts from articles published in PLOS ONE, monitoring its accuracy by referencing actual citation counts and altmetrics scores. De Winter employs a custom script to prompt OpenAI’s Application Programming Interface (API) to score each abstract on a scale of zero to one hundred across thirty positive variables and their thirty antonyms, which he then organizes under five categories (e.g. “Quality and Reliability”). As Chat-GPT 4 only produced consistent results at the population level, it was run three additional times to determine averages and bolster reliability of individual scores. This language-based evaluation of article abstracts revealed that ChatGPT-4’s scores better correlate with altmetrics and citation counts than conventional readability scores do. Furthermore, “Novel and Engaging” articles were most likely to be cited, whilst “Accessible and Understandable” articles scored highest in altmetrics. {{Navigation|previous=AI and Social|next=Complete Alphabetical List of References}} {{BookCat}} t878d7hvyzsmfhi4rihgzfgugp8l2uv Wikibooks:Reading room/Administrative Assistance/Archives/2026/July 4 484829 4656039 4655876 2026-08-02T08:10:13Z ArchiverBot 1227662 Bot: Archiving 1 thread from [[Wikibooks:Reading room/Administrative Assistance]] 4656039 wikitext text/x-wiki {{talk archive}} == Bestdealsautofla reported by MathXplore == * {{userlinks|Bestdealsautofla}} Spam <!-- USERREPORTED:/Bestdealsautofla/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:19, 2 July 2026 (UTC) :{{done}} —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 01:26, 3 July 2026 (UTC) == Cthrucleaningsolutionso reported by MathXplore == * {{userlinks|Cthrucleaningsolutionso}} advertising <!-- USERREPORTED:/Cthrucleaningsolutionso/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 22:19, 2 July 2026 (UTC) :{{done|Sandbox deleted}} —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 01:26, 3 July 2026 (UTC) :: The user was blocked indefinitely as a spam-only account. [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 01:47, 3 July 2026 (UTC) == Prudhvifmsdh reported by MathXplore == * {{userlinks|Prudhvifmsdh}} Spam <!-- USERREPORTED:/Prudhvifmsdh/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:39, 8 July 2026 (UTC) : {{done}}. [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 13:07, 8 July 2026 (UTC) == Protecting Pages == Hello, Admins, My name is Kayden Swanson, and I have proudly created ''[[The Geoguide]].'' But I would like to remove the ability for fellow users to edit it to prevent vandalism and preserve my prized creation I have made for school. Could you permanently lock it so others cant edit it while I still can? [[User:Kayden Swanson|Kayden Swanson]] ([[User talk:Kayden Swanson|discuss]] • [[Special:Contributions/Kayden Swanson|contribs]]) 02:41, 6 July 2026 (UTC) :Hi @[[User:Kayden Swanson|Kayden Swanson]]! Unfortunately, that is not an appropriate justification for protecting a page here at Wikibooks per the [[Wikibooks:Protection policy|protection policy]]. Notably, {{tq|"Preemptive full protection of pages is contrary to the open nature of Wikibooks"}}. Cheers —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 19:15, 6 July 2026 (UTC) ::NOOOOOOOOOOOOOOOOOOOOOOOOOOOOO okay that's fine [[User:Kayden Swanson|Kayden Swanson]] ([[User talk:Kayden Swanson|discuss]] • [[Special:Contributions/Kayden Swanson|contribs]]) 00:26, 8 July 2026 (UTC) ::: I'm sorry, but that's not within the scope of the protection policy. [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 12:39, 8 July 2026 (UTC) :::If you really want a stable version, you can make a PDF of the existing content and link it. See [[Help:Print versions]] and {{tl|Print version}}/{{tl|PDF version}}. ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 19:15, 10 July 2026 (UTC) == I'm unable to create a page == Hello, I wanted to created the page [[English in Use/Agreement]]. I thought I would use a modified version of a Wikipedia article (https://en.wikipedia.org/wiki/Agreement_in_the_English_language). It's already written like a textbook, so I did some improvements and clicked "published", but I got the error: <blockquote>Welcome to Wikibooks!Your edit has triggered an automated filter and has been disallowed. It looks like your edit has added a large amount of content to this page.If you copied the content from another website, please do not add it without rewriting it in your own words. Unless the content is in the public domain (published before 1923), it is almost certainly copyrighted and cannot be added to Wikibooks.If all of the content is your own work and you cannot find anything to link, feel free to ask for the edit to be performed at the reading room. If you have received this message in error, you may report it here.</blockquote> What should I do? Can you help me? [[User:Justtocreateapage|Justtocreateapage]] ([[User talk:Justtocreateapage|discuss]] • [[Special:Contributions/Justtocreateapage|contribs]]) 20:43, 10 July 2026 (UTC) :@[[User:Justtocreateapage|Justtocreateapage]] An editfilter is preventing your edit. In my opinion, you did not do anything wrong and the filter is wrong, but an admin (=not me) would need to fix it. [[User:Der-Wir-Ing|Der-Wir-Ing]] ([[User talk:Der-Wir-Ing|discuss]] • [[Special:Contributions/Der-Wir-Ing|contribs]]) 20:52, 10 July 2026 (UTC) :: {{re|Justtocreateapage}} As a new user you face harsher requirements. You should make useful edits to Wikibooks first. If you want to use a modified version of a WP article, [[Wikibooks: Requests for import|requesting an import]] is the proper venue. This [[Help: Importing|preserves the edit history]]. ‑‑[[User:Kai Burghardt|Kai Burghardt]] ([[User talk:Kai Burghardt|discuss]] • [[Special:Contributions/Kai Burghardt|contribs]]) 21:15, 10 July 2026 (UTC) :::Okay, thanks you all. I'll request for an import then [[User:Justtocreateapage|Justtocreateapage]] ([[User talk:Justtocreateapage|discuss]] • [[Special:Contributions/Justtocreateapage|contribs]]) 21:39, 10 July 2026 (UTC) ::::{{done}} ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 21:50, 10 July 2026 (UTC) == Unprotection/edit request == Hi, would an admin please temporarily unprotect the non-MediaWiki pages at [[User:TenshiBot/Errors]]? As for the MediaWiki pages, would an admin go through them and replace the <nowiki><center></nowiki> tags and replace it with <nowiki><div style="text-align: center"></nowiki>? [[User:Tenshi Hinanawi|Tenshi Hinanawi]] ([[User talk:Tenshi Hinanawi|discuss]] • [[Special:Contributions/Tenshi Hinanawi|contribs]]) 23:10, 11 July 2026 (UTC) : Unprotecting, fixing, and protecting back would take too long—I know just the thing, which is using JWB. [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 02:35, 12 July 2026 (UTC) : [[User:Tenshi Hinanawi|Tenshi Hinanawi]], I've done what JWB could process; should there be way more in your bot's error log, let me know. [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 03:02, 12 July 2026 (UTC) ::There's still a lot of the <nowiki><font></nowiki> tags which need replacing in the talk page archives. [[User:Tenshi Hinanawi|Tenshi Hinanawi]] ([[User talk:Tenshi Hinanawi|discuss]] • [[Special:Contributions/Tenshi Hinanawi|contribs]]) 10:11, 12 July 2026 (UTC) ::: I can replace those, but should it be <code>div</code> or <code>span</code>? [[User:Codename Noreste|<span style="color:#0024FF">Codename Noreste</span>]] ([[User talk:Codename Noreste|discuss]] • [[Special:Contributions/Codename Noreste|contribs]]) 14:35, 12 July 2026 (UTC) ::::Span, though the font tag's parameters need to be converted as well, see [https://github.com/TenshiSWR/TenshiBot/blob/958b59d1a5e14a31ab8b46f66db54ebdba63e101/tasks/linterrors/obsolete_HTML_tags.py#L15-L52 the code] and the [https://html.spec.whatwg.org/multipage/rendering.html#:~:text=When%20a%20font%20element%20has%20a%20color,%27color%27%20property%20to%20the%20resulting%20color. HTML spec] for this. [[User:Tenshi Hinanawi|Tenshi Hinanawi]] ([[User talk:Tenshi Hinanawi|discuss]] • [[Special:Contributions/Tenshi Hinanawi|contribs]]) 14:56, 12 July 2026 (UTC) == Emirati yahzota reported by MathXplore == * {{userlinks|Emirati yahzota}} Long-term abuse, [[:w:Wikipedia:Sockpuppet investigations/Muhammad Ali Rajab]] <!-- USERREPORTED:/Emirati yahzota/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:18, 2 July 2026 (UTC) :I deleted their page addition. @[[User:MarcGarver|MarcGarver]] could we get a CU here? Thanks! —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 01:28, 3 July 2026 (UTC) ::Nothing to see on CU. [[User:MarcGarver|MarcGarver]] ([[User talk:MarcGarver|discuss]] • [[Special:Contributions/MarcGarver|contribs]]) 11:07, 13 July 2026 (UTC) == NSSGGuarding reported by MathXplore == * {{userlinks|NSSGGuarding}} Spam <!-- USERREPORTED:/NSSGGuarding/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:17, 13 July 2026 (UTC) :{{done}} ―[[User:Koavf|Justin (<span style="color:grey">ko'''a'''<span style="color:black">v</span>f</span>)]]<span style="color:red">❤[[User talk:Koavf|T]]☮[[Special:Contributions/Koavf|C]]☺[[Special:Emailuser/Koavf|M]]☯</span> 16:45, 13 July 2026 (UTC) == Tanzeemdigital reported by MathXplore == * {{userlinks|Tanzeemdigital}} Spam, [[Special:AbuseLog/314706]] <!-- USERREPORTED:/Tanzeemdigital/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:08, 15 July 2026 (UTC) == Faisalorakzaii reported by MathXplore == * {{userlinks|Faisalorakzaii}} cross-wiki abuse, [[:w:WP:AB]]. <!-- USERREPORTED:/Faisalorakzaii/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 12:13, 15 July 2026 (UTC) :{{done|Page deleted}} —[[User:Kittycataclysm|Kittycataclysm]] ([[User talk:Kittycataclysm|discuss]] • [[Special:Contributions/Kittycataclysm|contribs]]) 12:56, 15 July 2026 (UTC) == Drpriyajaganathan reported by MathXplore == * {{userlinks|Drpriyajaganathan}} Spam <!-- USERREPORTED:/Drpriyajaganathan/ --> [[User:MathXplore|MathXplore]] ([[User talk:MathXplore|discuss]] • [[Special:Contributions/MathXplore|contribs]]) 10:46, 18 July 2026 (UTC) :What do you find as spam ? [[Special:Contributions/&#126;2026-40412-29|&#126;2026-40412-29]] ([[User talk:&#126;2026-40412-29|talk]]) 12:20, 18 July 2026 (UTC) bp7h0hszvg3ow8zieekdfy31es3ybs3 Chess Opening Theory/1. a4/1...e5/2. Ra3/2...Bxa3/3. Nxa3 0 485026 4656026 4655959 2026-08-02T01:00:29Z JackBot 396820 Formatting, [[Special:UncategorizedPages]] 4656026 wikitext text/x-wiki White recaptures with his Knight. {{BookCat}} eiykhby2akja6gctz3i78lsa8q8isuu Chess Opening Theory/1. e4/1...c6/2. Nc3/2...d5/3. Nf3/3...Bg4 0 485029 4656001 2026-08-01T15:44:51Z Greenman 7490 . 4656001 wikitext text/x-wiki {{Chess Opening Theory/Position|= |Caro-Kann Defence: Two Knights Attack| |eco=[[Chess/ECOB|B10]] }} = 3...Bg4 · Caro-Kann Defence: Two Knights Attack = 3...Bg4 frees Black's problematic dark-squared bishop. White's most common response, 4. h3, leads either to lines with quite a lot of theory, or to Black giving White the bishop pair. ==Theory table== {{ChessTable}} {{Chess/theory table |name1= |line1=4. h3 Bxf3 5. Qxf3 |eval1= |name2= |line2=4. Be2 |eval2= |name3= |line3=4. d4 |eval3= }} {{Wikipedia|Caro-Kann}} {{ChessMid}} {{Chess Opening Theory/Footer}} inl2zwmu8icz6vbffdm5ltojhz56abq 4656002 4656001 2026-08-01T15:45:39Z Greenman 7490 /* 3...Bg4 · Caro-Kann Defence: Two Knights Attack */ ce 4656002 wikitext text/x-wiki {{Chess Opening Theory/Position|= |Caro-Kann Defence: Two Knights Attack| |eco=[[Chess/ECOB|B10]] }} = 3...Bg4 · Caro-Kann Defence: Two Knights Attack = 3...Bg4 frees Black's problematic dark-squared bishop. White's most common response, 4. h3, leads either to sharp lines with a lot of theory, or to Black giving White the bishop pair. ==Theory table== {{ChessTable}} {{Chess/theory table |name1= |line1=4. h3 Bxf3 5. Qxf3 |eval1= |name2= |line2=4. Be2 |eval2= |name3= |line3=4. d4 |eval3= }} {{Wikipedia|Caro-Kann}} {{ChessMid}} {{Chess Opening Theory/Footer}} 1lxdbsdxpd0lenooyc226e7ce8fdfe3 Chess Opening Theory/1. e4/1...c6/2. Nc3/2...d5/3. Nf3/3...Nf6 0 485030 4656003 2026-08-01T15:52:51Z Greenman 7490 . 4656003 wikitext text/x-wiki {{Chess Opening Theory/Position|= |Caro-Kann Defence: Two Knights Attack| |eco=[[Chess/ECOB|B10]] }} = 3...Nf6 · Caro-Kann Defence: Two Knights Attack = 3...Nf6 adds pressure to the d pawn, and has the advantage for Black of being played far less often than the main line 3...Bg4, or 3...dxe4. White only has one good response, 4. e5. Attempting to defend the pawn with 4. d3? is inaccurate, as after Black captures and the resulting exchanges, White either loses a pawn, or loses the right to castle. ==Theory table== {{ChessTable}} {{Chess/theory table |name1= |line1= 4. e5 |eval1= |name2= |line2=4. Qe2 |eval2= |name3= |line3= 4. exd5 |eval3= }} {{Wikipedia|Caro-Kann}} {{ChessMid}} {{Chess Opening Theory/Footer}} e7mcq200u12szky916gzzcgk8ikgwx1 4656004 4656003 2026-08-01T15:54:12Z Greenman 7490 expand 4656004 wikitext text/x-wiki {{Chess Opening Theory/Position|= |Caro-Kann Defence: Two Knights Attack| |eco=[[Chess/ECOB|B10]] }} = 3...Nf6 · Caro-Kann Defence: Two Knights Attack = 3...Nf6 adds pressure to the d pawn, and has the advantage for Black of being played far less often than the main line 3...Bg4, or 3...dxe4. White only has one good response, 4. e5. Attempting to defend the pawn with 4. d3? is inaccurate, as after Black captures and the resulting exchanges, White either loses a pawn, or loses the right to castle. Exchanging with 4. exd5 is playable, but is effectively an inferior version of the Exchange Variation for White. ==Theory table== {{ChessTable}} {{Chess/theory table |name1= |line1= 4. e5 |eval1= |name2= |line2=4. Qe2 |eval2= |name3= |line3= 4. exd5 |eval3= }} {{Wikipedia|Caro-Kann}} {{ChessMid}} {{Chess Opening Theory/Footer}} h37jjp1tav20b9wu9pgxbus2kqg5ky5 4656005 4656004 2026-08-01T16:04:15Z Greenman 7490 link 4656005 wikitext text/x-wiki {{Chess Opening Theory/Position|= |Caro-Kann Defence: Two Knights Attack| |eco=[[Chess/ECOB|B10]] }} = 3...Nf6 · Caro-Kann Defence: Two Knights Attack = 3...Nf6 adds pressure to the d pawn, and has the advantage for Black of being played far less often than the main line 3...Bg4, or 3...dxe4. White only has one good response, [[/4. e5|4. e5]]. Attempting to defend the pawn with 4. d3? is inaccurate, as after Black captures and the resulting exchanges, White either loses a pawn, or loses the right to castle. Exchanging with 4. exd5 is playable, but is effectively an inferior version of the Exchange Variation for White. ==Theory table== {{ChessTable}} {{Chess/theory table |name1= |line1= 4. e5 |eval1= |name2= |line2=4. Qe2 |eval2= |name3= |line3= 4. exd5 |eval3= }} {{Wikipedia|Caro-Kann}} {{ChessMid}} {{Chess Opening Theory/Footer}} p0mbbqumn0gpp0zdjn1cz3ztaptoyzk Chess Opening Theory/1. e4/1...c6/2. Nc3/2...d5/3. Nf3/3...Nf6/4. e5 0 485031 4656006 2026-08-01T16:06:03Z Greenman 7490 . 4656006 wikitext text/x-wiki {{Chess Opening Theory/Position|= |Caro-Kann Defence: Two Knights Attack| |eco=[[Chess/ECOB|B10]] }} = 4. e5 · Caro-Kann Defence: Two Knights Attack = 4. e5 pressures the black knight. It will mostly go to e4. ==Theory table== {{ChessTable}} {{Chess/theory table |name1= |line1= 4...Ne4 |eval1= }} {{Wikipedia|Caro-Kann}} {{ChessMid}} {{Chess Opening Theory/Footer}} 0qb0pke2zy7f43cspn3fll9ynlsef0d Chess Opening Theory/1. e4/1...c6/2. Nc3/2...d5/3. Nf3/3...Nf6/4. e5/4...Ne4 0 485032 4656015 2026-08-01T22:32:55Z Greenman 7490 . 4656015 wikitext text/x-wiki {{Chess Opening Theory/Position|= |Caro-Kann Defence: Two Knights Attack| |eco=[[Chess/ECOB|B10]] }} = 4...Ne4 · Caro-Kann Defence: Two Knights Attack = The advanced knight is quite threatening, but Black doesn't need to worry about White capturing it, although this move is quite common at amateur level. After the capture and exchange, the white knight on g5 is misplaced. ==Theory table== {{ChessTable}} {{Chess/theory table |name1= |line1= 5. Ne2 |eval1= |name2= |line2= 5. d4 |eval2= |name3= |line3= 5. Be2 |eval3= |name4= |line4= 5. Qe2 |eval4= |name5= |line5= 5. Nxe4 dxe4 6. Ng5 Qd4 |eval5= }} {{Wikipedia|Caro-Kann}} {{ChessMid}} {{Chess Opening Theory/Footer}} ppls8deomnas5ndd2m36isuc4ehwl6v 4656019 4656015 2026-08-01T22:42:07Z Greenman 7490 /* Theory table */ d3 4656019 wikitext text/x-wiki {{Chess Opening Theory/Position|= |Caro-Kann Defence: Two Knights Attack| |eco=[[Chess/ECOB|B10]] }} = 4...Ne4 · Caro-Kann Defence: Two Knights Attack = The advanced knight is quite threatening, but Black doesn't need to worry about White capturing it, although this move is quite common at amateur level. After the capture and exchange, the white knight on g5 is misplaced. ==Theory table== {{ChessTable}} {{Chess/theory table |name1= |line1= 5. Ne2 |eval1= |name2= |line2= 5. d4 |eval2= |name3= |line3= 5. Be2 |eval3= |name4= |line4= 5. Qe2 |eval4= |name5= |line5= 5. Nxe4 dxe4 6. Ng5 Qd4 |eval5= |name6= |line6= 5. d3 |eval6= }} {{Wikipedia|Caro-Kann}} {{ChessMid}} {{Chess Opening Theory/Footer}} 58x0z7v0reh8bzzmtnkjjg6tc0yb7o8 4656021 4656019 2026-08-01T22:45:36Z Greenman 7490 /* 4...Ne4 · Caro-Kann Defence: Two Knights Attack */ ce 4656021 wikitext text/x-wiki {{Chess Opening Theory/Position|= |Caro-Kann Defence: Two Knights Attack| |eco=[[Chess/ECOB|B10]] }} = 4...Ne4 · Caro-Kann Defence: Two Knights Attack = The advanced knight appears threatening, but Black doesn't need to worry about the positions after White captures it with 5. Nxe4, although this move is quite common at amateur level. After the capture and exchange, the white knight on g5 is misplaced, and Black is comfortable. 5. Ne2 and 5. d4 are the main lines. ==Theory table== {{ChessTable}} {{Chess/theory table |name1= |line1= 5. Ne2 |eval1= |name2= |line2= 5. d4 |eval2= |name3= |line3= 5. Be2 |eval3= |name4= |line4= 5. Qe2 |eval4= |name5= |line5= 5. Nxe4 dxe4 6. Ng5 Qd4 |eval5= |name6= |line6= 5. d3 |eval6= }} {{Wikipedia|Caro-Kann}} {{ChessMid}} {{Chess Opening Theory/Footer}} 8mlt1nuryitrml6f8m2ib0qcvpdnbui Chess Opening Theory/1. e4/1...c6/2. Nc3/2...d5/3. Nf3/3...Nf6/4. e5/4...Ne4/5. d4 0 485033 4656022 2026-08-01T22:48:15Z Greenman 7490 . 4656022 wikitext text/x-wiki {{Chess Opening Theory/Position|= |Caro-Kann Defence: Two Knights Attack| |eco=[[Chess/ECOB|B10]] }} = 5. d4 · Caro-Kann Defence: Two Knights Attack = White builds the centre, and Black mostly replies with 5...Nxc3 ==Theory table== {{ChessTable}} {{Chess/theory table |name1= |line1= 5... Nxc3 |eval1= |name2= |line2= 5... Qa5 |eval2= |name3= |line3= 5... Bg4 |eval3= }} {{Wikipedia|Caro-Kann}} {{ChessMid}} {{Chess Opening Theory/Footer}} ipo7cd5lgcfc7o0o359e7hcumvvt4cn Chess Opening Theory/1. e4/1...c6/2. Nc3/2...d5/3. Nf3/3...Nf6/4. e5/4...Ne4/5. d4/5...Nxc3 0 485034 4656025 2026-08-02T00:31:16Z Greenman 7490 . 4656025 wikitext text/x-wiki {{Chess Opening Theory/Position|= |Caro-Kann Defence: Two Knights Attack| |eco=[[Chess/ECOB|B10]] }} = 5...Nxc3 · Caro-Kann Defence: Two Knights Attack = White has no option but to capture back. ==Theory table== {{ChessTable}} {{Chess/theory table |name1= |line1= 6. bxc3 |eval1= }} {{Wikipedia|Caro-Kann}} {{ChessMid}} {{Chess Opening Theory/Footer}} 1x30dcy3dyrfbllxc5ic8qdzc04h1ng User talk:Hurricane John 3 485035 4656044 2026-08-02T09:51:26Z Hurricane John 3618534 /* */ 4656044 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1